J'ai des notions de VBA mais je débute avec l'API Solidworks et je dois modifier la macro d'un collègue, lancée dans une mise en plan avec un composant sélectionné.
Voici ce qui me semble être l'endroit du code qui pose problème :
swEnt = swSelMgr.GetSelectedObject5(iSel)
swSelComp = swEnt.GetComponent
swSelModel = swSelComp.GetModelDoc
Nom = swSelModel.GetTitle
Nom contient alors le nom de la pièce sélectionnée, là où je voudrais retourner le nom de son assemblage parent, comme solid le fait très bien pour la nomenclature.
Je précise le code fonctionne quand les configurations de l'assemblages sont réglées ainsi :
affichage des composants enfants utilisés comme sous-assemblage : "montrer"
et que nous voulons le modifier pour qu'il fonctionne aussi quand on règle sur "cacher"
Merci pour toute aide que vous pourrez m'apporter !
Le code complet fait plusieurs milliers de lignes, mais cette partie est indépendante, j'ai juste coupé quelques lignes précédentes qui traitent les sélections multiples.
Juste après le passage copié, on compare la valeur de la variable nom avec chaque désignation de la nomenclature. Et bien sûr, comme dans la nomenclature ne figure que le nom de l'assemblage parent, tout s'arrête.
Si je comprends bien ta réponse sbadenis, à partir du moment où les composants enfants sont cachés dans la configuration de mon assemblage, aucune méthode appliquée à swSelModel ne pourra "remonter" à des propriétés du parent ?
Je cherchais une sorte de swSelModel."GetParent", qui me permettrait de retomber comme dans ma nomenclature aux propriétés de l'assemblage supérieur.
Quand les enfants sont montrés dans les propriétés de la config, quand je clique sur la même pièce de la MEP, ça me retourne bien le nom de l'assemblage parent.
Je ne l'ai pas précisé, mais la propriété n'est pas directement cochée dans l'onglet propriété, on pilote la valeur de $JAMAIS_DEVELOPPER_DANS_NOMENCLATURE par la famille de pièce. C'est O ou N d'après ce que je vois dans l'aide API; Il ne semble pas exister de valeur pour basculer en "promouvoir", ce que je n'ai pas testé du coup.
Parfait ! Personnellement j'évite d'utiliser la sélection avant une action. Le logiciel sais ou il en es en théorie ça évite des lignes inutile je trouve.
Enfin j'ai pas fais énormément d'API sur solidworks je me contente surtout de faire des remontage ou quelques gestion de fichier. je ne fais pas de lecture ou écriture pour les nomenclatures.