Macro: sélectionner un composant dans un assemblage

Bonjour

J'aimerais connaître les méthodes pour sélectionner depuis une macro un composant dans un assemblage ouvert. Et si possible les infos qui lui sont associées, comme son nom de fichier, son dossier, le type de document (pièce, assemblage, ...), ... déterminer si c'est une instance, une répétition, une symétrie.

En résumé, je voudrais pouvoir sélectionner un composant, effectuer une opération, sélectionner le suivant, effectuer une opération, etc

Merci

Bonjour,

Il faut regarder du côté de traverse component : Traverse Assembly at Component Level Example (VBA) - 2021 - SOLIDWORKS API Help

 

2 « J'aime »

Bonjour @Cyril.f 

C'est nickel, merci beaucoup !

Il me reste à voir comment déterminer si un composant est un clone, une répétition ou une symétrie et si je peux faire ça autrement qu'en faisant des comparaisons de noms.

Bonjour,

Si j'ai bonne mémoire lorsqu'il scanne le feature manager il liste les "désignations" du premier niveau (il considère normalement qu'une répétition est un élément d'arborescence si je me souviens bien) donc on peut tout simplement exclure du traitement ce qui commence par répétition voir même stopper le traitement dès que l'on tombe sur les contraintes puisque de toute façon les répétitions sont en dessous.

Pour savoir si c'est une seconde occurrence il me semble qu'il indique également le numéro de l'occurrence donc suffit d'appliquer le traitement à ce moment là.

1 « J'aime »

Merci @Cyril.f 

Oui, en l'absence de propriété ou méthode c'est ce que je pensais faire pour les occurrences.

Ce qui est pénible c'est qu'il liste (traverse) les composants par ordre d'ajout dans l'assemblage (ou pas, vu que certaines instances (visserie) ne sont même pas numérotées dans l'ordre ) et non dans le même ordre d'apparition que dans l'arbre. Saurais-tu s'il y a un moyen prédestiné de choisir l'ordre dans lequel traverser les composants (ordre dans l'arbre, ordre alphabétique, etc) ? ça pourrait m'éviter des loops de décorticage de strings ou de reclassement.

Faut que je regarde mais là je ne vais pas avoir accès à SW pendant 2 semaines.

J'ai déjà fait une macro de ce type qui listait dans l'ordre du feature manager mais je ne l'ai pas sous la main et ne me souviens plus de la méthode.