Macro pour construire de nouveaux plans sur une pièce importée

Bonjour à tous, 

Je voudrais être éclairer concernant la possibilité ou non, de création de plans avec des noms prédéfinis. Je travail uniquement sur des pièces importées et la configuration d'origine des plans ne me plait pas souvent. Je voudrais donc savoir si il y a une technique pour faire que leur création soit automatique et que le nom qui sera toujours le même en fonction du plan créé. 

Merci à vous 

bonjour,

Oui, il est possible de créer des plans par code.

Le problème, c'est qu'il faut des références pour créer des plans. Donc, par macro, mis à part vous éviter de cliquer sur nouveau plan, il vous faudra sélectionner par avance les références ce qui rend inutile, à mon sens, l'utilisation d'une macro.

Si vous savez, faire des macro assez poussées, vous pouvez créer une classe de sélection, créer dynamiquement un formulaire, mettre les combinaisons de sélections dans une collection, parcourir cette collection pour créer les plans. (environ 4h de programmation pour un connaisseur)

En suivant ce principe, vous remplissez le formulaire avec toutes vos sélection et lancez la macro qui s'occupera de créer les plans.

1 « J'aime »

Bonjour Jean-Luc Villamy un sujet similaire a deja ete abordé peut etre peut il vous convenir ? http://www.lynkoa.com/forum/electrique/macro-pour-changement-dorientation-des-vue-sous-solidworks

Sinon on peu regarde si vous nous envoyé un fichier d'exemple avec les plan a crée :)

1 « J'aime »

@Yves.T je ne suis que novice en code VBA, et ces étapes que vous me décrivez semblent infaisable pour mon niveau de codage. J'esperais que quelqu'un ai une trame de macro la plus proche de ce que je souahite faire que je puisse modifier pour l'adapter à mon besoin. 

@Mad oui je le sais puisque c'est moi-même qui avais posté ce sujet :) j'ai bien réussi à adapter la macro que vous m'aviez donné pour qu'elle fonctionne à ma guise. Dans le cas présent je ne cherche plus à changer l'orientation de ma pièce par rapport aux repère mais carrément créé de nouveaux plans qui aient un nom défini suivant le repère (x;y;z). Par example NOM_PRENOM_FACE et ça pour les trois plans ...FACE ...DOITE et ...DESSUS du repère, afin que lorsque je lance la macro je n'ai plus qu'a les contraindre comme je le souhaite. Le soucis avec la macro que vous m'aviez donné c'est que certaines pièces n'ont pas les plans contraints sur les surfaces que je voudrais, donc cette macro ne touche pas à mon problème directement. 

J'espère avoir été assez clair sur ce que je recherche, merci à vous de bien vouloir m'aider dans ma démarche et d'être aussi patient !

Edit : le cause de vouloir modifier les plans d'origines de l'import STEP de la pièce vient du fait que l'affichage des vues qu'il en découle dans la mise en plan ne montre pas ce que je veux de la pièce. 

L'enregistreur de macro donne ce code pour la generation de trois plan a 100mm de distance

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
boolstatus = Part.Extension.SelectByID2("Plan de face", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Plan de face", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Dim myRefPlane As Object
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 0.1, 0, 0, 0, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan de face", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan de dessus", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Plan de dessus", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 0.1, 0, 0, 0, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan de dessus", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan de droite", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Plan de droite", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 0.1, 0, 0, 0, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Plan de droite", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
End Sub

 

Cette macro ne produit aucun changement sur ma pièce à part faire surbriller très succintement mes plans ... Devais-je modifier quelques lignes pour que cela fonctionne ?

Oui les element a modifier sont les nom des plans

J'ai bien tout essayé de modifié pour les noms des plans rien à faire quand je lance la macro il m'en construit d'autres avec comme nom Plan 12,Plan 13 et Plan 14. J'avoue ne pas très bien comprendre pourquoi ça ne marche pas j'ai essayé toutes les combinaisons possibles 

Méa culpa apres veriffication sur une nouvelle piece ne effet il ne genere rien je regarde sa

Pas de problèmes merci du coup de main je vais finir par savoir comment coder a force de me pencher sur les codes pour savoir ou ça coince !

J'ai pas mal chercher et je ne trouve malheuresement rien d'existant sur le web... Mon problème pourrais être résolu également si la macro renomme le plan que je lui désigne par example une macro pour le plan de face etc..  avec un nom que je lui définis. Il m'importe peu d'avoir beaucoup de macros dans ma barre des tâches SW. Je veux seulement automatiser la rentré du texte qui me fait perdre du temps à la longue donc une macro par nom de plan n'est pas gênant.

Tu veut juste renommer le planA en plan1 ?

J'ai trouvé la solution, j'enregistre une macro lorsque je renomme les plans que j'aurais créé juste avant pour que plan 1 soit NOM_Face etc pour les autres plans c'est à dire ma macro va trouver seule le nom des plans édités avant et qui ont tjr le même indicatifs donc à moi de m'obliger à suivre un ordre pour repérer celui qui est de face etc lorsque je les créés. 

Par contre maintenant je cherche à enregistrer une macro lorsque j'effectue une contrainte sur deux plans qui auront toujours les mêmes noms pour le coup, mais SW ne veut rien savoir pour les contraintes apparement... Quelqu'un aurait-il déjà fait une macro pour y incrémenter des contraintes de mise en position de plans (mise en position dans l'ASM)

Voila la macro qui me permet de renommer automatiquement les plans que j'ai crée au préalable. Ne pas oublier de s'imposer un ordre de construction, pour organiser ses vues de mise en plan.

 


renommer_les_plans.txt