Ajout (2x) ou (4x) sur des cotes M8 ou Ø6,5

Bonjour,

J’ai créer hier 2 macro pour me simplifier la vie en mise en plan, ajout du (2x) ou (4x) sur une cote.
Ca marche très bien quand la cote est nu c’est a dire juste 95.
Par contre quand j’ai un M6 ou Ø12 alors ça me remplace ma cote par 6 (2x) et 12 (2x), je perds a chaque fois le préfixe. Comment faire, y a t il une solution? Sur Créo je mettais cette variable (2x) dans la case suffixe mais celle ci n’existe pas sur solidworks.
Merci d’avance

Bon courage à toi pour le passage de Créo à Solidworks. Je pestais beaucoup après le 1er en regrettant Sldw … et maintenant je fais l’inverse :smiley:

Sinon, peux-tu partager ton code VBA pour que les experts puissent t’aider avec plus de personnalisations que du cas général ?

Mais, comme ça vu de loin, j’ai l’impression que tu écrases ce qui est écrit pour remplacer par la dimension (x2) ou la dimension (x4)
Pour bien faire, il faudrait plutôt lui dire de compter le nombre de caractères dans ta dimension, et du coup de rajouter ton (x2) ou (x4) à la fin de ton compteur

Bonjour coin37coin

Effectivement j’écrase ce qui est écrit…
Mais faire une macro pour compter le nb de caractère et d’ajouter mon (2x) ca je ne maitrise pas…
ci joint ma macro de novice:
2x.swp (23,5 Ko)

Pour info, 25 ans de créo derrière moi j’ai commencé à la version 2000i

Bravo pour le changement de logiciel après tant de temps. C’est tout une logique à remettre en cause !

Ton code, tu peux grandement l’alléger
Les 4 premières ligne de boolstatus ne sont que le pas à pas de l’écriture (2x). Tu peux donc simplement garder la dernière ligne.
Ce qui donnerait

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.EditDimensionProperties2(0, 0, 0, «  », «  », False, 1, 2, True, 12, 12, «  », " (2x)", True, «  », «  », True)
Part.ClearSelection2 True
End Sub

Et ensuite, je sèche un peu.
Ton code Part.EditDimensionProperties2 rappel les paramètres de la dimension sur laquelle tu as enregistré ta dimension.
Il faudrait donc trouver comment sauvegarder tes paramètres actuel et les rappeler quand tu ajoutes (2x) … ou alors comment simplement modifier le 13eme paramètre de ta fonction

EditDimensionProperties2 Method (IModelDoc2) - 2012 - SOLIDWORKS API Help

Pour tout les perçages réalisé avec l’assistance si côté avec symbole pour le perçage la quantité se met toute seule sans macro.

2 « J'aime »

Bonjour sbadenis
Merci pour la réponse
Oui je connais cette solution mais elle ne me plaie pas et en plus elle n’est pas ISO.

1 « J'aime »

Tiens, après avoir cherché un peu sur le net, une solution qui devrait marché
Je me suis permit de la « pimper » un peu. Lorsque tu clic sur la macro il va te demander de combien de fois tu veux répéter et il ajoute à la fin avec le (x)

Sub QteRepetition()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swDispDim As SldWorks.DisplayDimension
Dim swDim As SldWorks.Dimension

Dim SuffixActuel As String
Dim NeoSuffix As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

Set swSelMgr = swModel.SelectionManager
Set swDispDim = swSelMgr.GetSelectedObject6(1, 0)
Set swDim = swDispDim.GetDimension

'Implemente le suffixe actuel
SuffixActuel = swDispDim.GetText(swDimensionTextSuffix)
'texte à remplir
NeoSuffix = InputBox(« Nbr de répétition »)
NeoSuffix = " (" & NeoSuffix & « x) »
'change le suffixe de la dimension
swDispDim.SetText swDimensionTextSuffix, NeoSuffix
'attribu le suffixe à la dimension sélectionnée"
swDispDim.SetText swDimensionTextSuffix, SuffixActuel & NeoSuffix

swModel.GraphicsRedraw2
End Sub

Si tu ne veux pas la boite de question, il suffit de remplacer

NeoSuffix = InputBox(« Nbr de répétition »)
NeoSuffix = " (" & NeoSuffix & « x) »

par

NeoSuffix = « (2x) »

2 « J'aime »

Merci coin37coin
Mais j’ai une erreur ici
NeoSuffix = InputBox(« Nbr de répétition »)
NeoSuffix = " (" & NeoSuffix & « x) »

peux tu m’aider?

Bonjour @_Cricri

L’erreur vient des guillemets français qu’il faut remplacer par les guillemets anglais "

2 « J'aime »

l’erreur est sur le " " autour de x je penses.

Lors de la copie, il y a eu un changement de format il faut donc avoir

NeoSuffix = " (" & NeoSuffix & " x) "

A voir si ça résoud le soucis ?

1 « J'aime »

Oui, et il faut les remplacer dans toute la macro :wink:

2 « J'aime »

Oui c’est bon ca fonctionne, super MERCI à coin37coin et à Sylk sur la fin