Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Fonction vba pour retrouver le nom d'un solid parent

6 RÉPONSES 6
RÉSOLU
Répondre
Message 1 sur 7
Anonymous
899 Visites, 6 Réponses

Fonction vba pour retrouver le nom d'un solid parent

Bonjour, 

J'ai une arborescence de solides, issue de scission.

1.PNG

 

Comme on peut le remarquer un même solid nommé D-X7001_.Gen.cen issue d'un balayage, va servir après scission a créer d'autre solides solid72 ,solid74,solid75....
via une macro en VBA, je souhaite récupérer le nom du solide d'origine D-X7001_.Gen.cen et renommer ainsi les nouveaux solides créés (solid72 devient D-X7001_.Gen.cen.id1 , solid74 devient D-X7001_.Gen.cen.id2 , solid75 devient D-X7001_.Gen.cen.id2 ....)

 

Set doc = ThisApplication.ActiveDocument
Set sbs = doc.ComponentDefinition.SurfaceBodies

en faisant une boucle, je récupère bien chaque objet des corps solides, mais je ne sais pas comment trouver les objets auxquels ils sont issue. 

dans un For Each sb In sbs (sbs  et la liste des solides au plus haut niveau solid72 ,solid74,solid75....)

 sb.AffectedByFeatures .name me retourne bien  Scission1 mais je ne vois pas comment aller chercher  le solide dont il est issue. 

Qui serait en mesure de me conseiller svp?

merci par avance.

Étiquettes (2)
6 RÉPONSES 6
Message 2 sur 7
ThomasB44
en réponse à: Anonymous

Salut @Anonymous 

Voici un exemple en iLogic pour retrouver le corps issu d'une fonction.

Bien sûr c'est à adapter à ton besoin, mais ça devrait t'aider :

oDoc = ThisApplication.ActiveDocument
oBodies = oDoc.ComponentDefinition.SurfaceBodies

For Each oBody In oBodies
	For Each oFeature In oBody.AffectedByFeatures
		MessageBox.Show("La fonction : " & oFeature.Name & _
		vbNewLine & "Appartient au corps : " & oBody.Name, "iLogic", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1)
	Next
Next

Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 3 sur 7
Anonymous
en réponse à: ThomasB44

Merci @ThomasB44  de ta réponse rapide.

A cet étage, j'y arrive, mais en reprenant l'image de mon premier poste, 

Ce que je ne trouve pas comme chemin, c'est remonter pour le solid72 plus loin que la fonction scission1 jusqu’à
D-X7101_.GEN.CEN pareil pour solide74 remonter jusqu'a D-X7101_.GEN.CEN

 

j'avais regardé avec AffectedByFeatures mais comme dans ton exemple, ça ne me fait remonter que d'un niveau, et je ne trouve pas d'autre chemin.

Message 4 sur 7
Anonymous
en réponse à: Anonymous

Bonjour, un petit up pour si l'un d'entre vous aurait une idée ou la méthode.

Merci par avance.

Message 5 sur 7
ThomasB44
en réponse à: Anonymous

J'ai fait des tests hier, mais échec.

Le problème est que la scission "consomme" le solide, pour en créer 2 nouveaux.

Donc on n'a pas accès au solide...sauf si on masque la scission mais cela complique grandement l'affaire...🤔


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 6 sur 7
Anonymous
en réponse à: Anonymous

C'est gentil de ta part d'avoir regardé plus en détail.
J'ai aussi posé la question sur la partie anglophone du forum, et j'ai un début de réponse.
J'ai pas eu le temps de tester, ou le peu que j'ai testé ne donne pas encore le bon resultat, car ça ne doit pas être issue du vba... mais la notion de nodes me parle est effectivement en parcourant les objets odoc, opane et onode, on retrouve des chemins entiers sous la forme "scission2::objetx::sission1::nommage du solid"

https://forums.autodesk.com/t5/inventor-customization/vba-function-to-find-the-name-of-a-solid-paren...

Il y aune bonne piste 😉

Message 7 sur 7
patrick.emin
en réponse à: Anonymous

Bonjour @Anonymous 

Si une des réponses à votre question résout votre problème, vous a permis de le comprendre ou contribue significativement à sa résolution, voulez vous avoir l'amabilité de cliquer sur le bouton "Approuver la solution" en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.

Merci.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report