Fonction If, Then, ElseIf (Macro Solidworks)

Bonjour à tous,

Je n'ai pas de formation en API mais je dois créé un code nous permettant, en rentrant la référence d'un axe de le construire aux bonnes cotes etc

J'ai déjà fini ce code mais lorsque le Ø client est < 6.35 on à un épaulement de Ø6.35 sur 0.5mm.

Et si il est supérieur ou égal à 6.35 on a à la place de l'épaulment le Ø client sur la longueur client

J'ai déja essayer ça mais il me fait toujours un épaulement maintenant :

If O < 6.35 Then

Set sksegment = Part.SketchManager.CreateCircleByRadius(0, 0, 0, Diam / 2)         'dimentions du cercle (Ø)+ position

Set sksegment = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.5 / 1000, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False)

boolstatus = Part.Extension.SelectByID2("Plan4", "PLANE", 0, 0, 0, False, 0, Nothing, 0)             'Créé un plan pour ensuite extruder depuis ce dernier
Part.CreatePlaneAtOffset3 0.5 / 1000, False, True                                                       'Les distances sont définient par la 1ere longueur
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan5", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Set sksegment = Part.SketchManager.CreateCircleByRadius(0, 0, 0, O / 2)         'dimentions du cercle (Ø)+ position

Set sksegment = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, M - 0.7 / 1000, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False)

boolstatus = Part.Extension.SelectByID2("Plan5", "PLANE", 0, 0, 0, False, 0, Nothing, 0)             'Créé un plan pour ensuite extruder depuis ce dernier
Part.CreatePlaneAtOffset3 M - 0.7 / 1000, False, True                                                       'Les distances sont définient par la 1ere longueur
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan6", "PLANE", 0, 0, 0, False, 0, Nothing, 0)


Set sksegment = Part.SketchManager.CreateCircleByRadius(0, 0, 0, O / 2)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan6", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("Plan6", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
 

 

ElseIf O >= 6.35 Then

Set sksegment = Part.SketchManager.CreateCircleByRadius(0, 0, 0, O / 2)         'dimentions du cercle (Ø)+ position

Set sksegment = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, M - 0.7 / 1000, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False)

boolstatus = Part.Extension.SelectByID2("Plan4", "PLANE", 0, 0, 0, False, 0, Nothing, 0)             'Créé un plan pour ensuite extruder depuis ce dernier
Part.CreatePlaneAtOffset3 M - 0.7 / 1000, False, True                                                       'Les distances sont définient par la 1ere longueur
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan5", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Set sksegment = Part.SketchManager.CreateCircleByRadius(0, 0, 0, O / 2)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan5", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("Plan5", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
 

 

End If

Voila si quelqu'un a une solution je suis tout ouie.

Sincères salutations

Bonjour, As-tu déroulé ta macro en pas à pas pour vérifier le comportement ? Si personne ne te répond aujourd'hui, je jette un oeil demain car au mycdday donc pas de pc dispo.
1 « J'aime »

Quand je fais en pas à pas il passe quand même sur la ligne ou il y a la construction de l'épaulement et me le fait

J'ai réussi du coup, mais il me reste un problème qui met en jeu cette fonction.

J'ai mis dans mon texte de code une partie qui "multiplie" l'échelle par deux car quand c'est en échelle 1:1 c'est impossible de distinguer les cotes.

Je voudrai que ce bout de code s'acctive uniquement quand l'echelle est en 1:1 et je sais pas comment l'ecrire en VBA

Bonjour, pour l'échelle de la mise en plan, tu peux revoir ton sujet quelques macros où je t'ai donné le lien vers l'aide de l'api sur sheetscale