Je souhaiterai créer une macro sur Solidworks afin de renommer un assemblage et ses composants suivant le principe suivant :
"Numéro de projet-ES00" pour l'assemblage
"Numéro de projet-ES0i" pour le i-ème sous-assemblage (1er niveau)
"Numéro de projet-ES0i-C00j" pour la j-ème pièce du i-ème sous-assemblage (2ème niveau)
Par exemple l'arbre de création devrait ressembler à cela :
INT846-ES00
INT846-ES01
INT846-ES01-C001
INT846-ES01-C002
INT846-ES01-C003
INT846-ES01-C004
INT846-ES02
INT846-ES02-C001
INT846-ES02-C002
INT846-ES03
INT846-ES04
J'arrive à coder en VBA le principe de récurrence mais je ne sais pas comment réenregistrer un assemblage et ses composants en prenant en compte l'arbre dans son ensemble. Puis je ne sais pas comment parcourir l'arbre de création de l'assemblage en question.
'Lignes pour avoir juste les noms de fichier ReDim Nom(1 To ((UBound(retval) - 1) / 2) + 1) For i = 0 To (UBound(retval) - 1) / 2 Text = Text & retval(2 * i) & vbCr Nom(i + 1) = retval(2 * i) Next i i = 0
Par principe le plus performant serait de renommer les fichiers hors SW puis de redirigé les references externe des documents ...
Mais c'est compliqué pour qlq qui n'a pas l'abitude des API SW
Le plus simple coté developpement c'est d'ouvrir l'assemblage et de parcourrir les composants puis d'enregistrer chacun des documents, comme l'assemblage principale est ouvert SW va lui meme rediriger les references ...
simplement il restera les anciens fichiers avec les anciens nom a supprimer manuellement
Pour créer une recursion sur les composants (parcourir tout l'arbre de l'assemblage)
récupérer l'exemple de l'aide API
"Traverse Assembly at Component Level Example (VBA)"
Le point d'entrée de la marco est la procedure MAin
Dans cet exemple la fonction TraverseComponent va etre executé sur chaque composant, l'objet swComp contient le composent, et la variable nLevel contient le niveau du composant dans l'arbre ( ex 1 prour le 1° niveau, 2 pour le composant d'un sous assemblage, 3 etc ...)
il vous reste à ajouter le code d'enregistrement du document (le document s'obtient à partir du "component" par l'api GetmodelDoc)
Attention à gérer les occurences des composants (un meme composant peut etre present plusieurs fois) seule la premiere occurence doit etre traitée