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 : 

Inventor 2023 : Accèder à un membre créer avec le frame generator

5 RÉPONSES 5
RÉSOLU
Répondre
Message 1 sur 6
Sébastien_G
265 Visites, 5 Réponses

Inventor 2023 : Accèder à un membre créer avec le frame generator

Bonjour à Tous,

Voici le contexte dans lequel je travaille.

Je suis dans un Assemblage Général qui est composé de pièce, de construction soudé et d'ossature générée grâce au Frame Generator.

La question est de savoir comment atteindre la cornière (dans mon cas) avec un code iLogic.

Sbastien_G_0-1695306929728.png

Le code doit ressembler à quelque chose comme suit

 

Dim oDoc As AssemblyDocument = ThisDoc.Document
Dim oCompDef As Componentdefinition = ...

 

 Je dois aller jusqu'à la cornière avec les objets de l'API.

 

Je suis à l'écoute de vos propositions

@Sébastien_G 

5 RÉPONSES 5
Message 2 sur 6
ThomasB44
en réponse à: Sébastien_G

Salut @Sébastien_G 

Tu peux boucler sur tes occurrences jusqu'à trouver ton Frame :

  • Son nom d'occurrence commence par "Frame...."
  • Sa structure de nomenclature est réglée sur "Fantôme"
  • oAsmDoc.DocumentInterests.HasInterest("FrameDoc") retourne la valeur True

Sinon son comportement est celui d'un assemblage classique.

 

Puis tu boucles à nouveau sur ses occurrences pour trouver l'élément qui t'intéresse.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 3 sur 6
ThomasB44
en réponse à: Sébastien_G

Pourquoi ne pas utiliser le CommandManager pour sélectionner directement l'élément qui t'intéresse ?

 

oOcc = ThisApplication.CommandManager.Pick( _
SelectionFilterEnum.kAssemblyLeafOccurrenceFilter, "Select a component to place :")

 


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 4 sur 6
Sébastien_G
en réponse à: ThomasB44

Salut @ThomasB44 ,

Je cherche à modifier l'iPropriété Matière de la cornière "Cornière - NF A 45-009 - 20 x 3:1".

Donc, ma question était de savoir comment atteindre cette iPropriété avec les "Object API".

Est-ce que tu peux me donner le chemin exact pour atteindre cette iPropriété.

Pour moi, cela doit commencer par :

 

Dim oDoc As AssemblyDocument = ThisDoc.Document

 

Malheureusement, je ne trouve pas la suite

Message 5 sur 6
ThomasB44
en réponse à: Sébastien_G

Comme indiqué, il faut boucler sur les occurrences du document :

        Dim oAsmDoc As Inventor.AssemblyDocument = ThisApplication.ActiveDocument
        Dim oAsmDef As Inventor.AssemblyComponentDefinition = oAsmDoc.ComponentDefinition
        Dim oOccs As Inventor.ComponentOccurrences = oAsmDef.Occurrences
        Dim oOcc As Inventor.ComponentOccurrence
        Dim oFrameDoc As Inventor.AssemblyDocument

        For Each oOcc In oOccs
            logger.Info("oOcc Name : " & oOcc.Name)
            If oOcc.DefinitionDocumentType = Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then
                logger.Info("This is an assembly")
                oFrameDoc = oOcc.Definition.Document
                If oFrameDoc.DocumentInterests.HasInterest("FrameDoc") = True Then
                    logger.Info("This is a frame assembly")
                    Exit For
                End If
            End If

S'il y a un assemblage qui est un Frame, oFrameDoc sera différent de Nothing

 

Puis tu refais une boucle maintenant que tu as ton Frame :

        Dim oFrameDef As Inventor.AssemblyComponentDefinition
        If oFrameDoc IsNot Nothing Then oFrameDef = oFrameDoc.ComponentDefinition
        Dim oFrameOccs As Inventor.ComponentOccurrences = oFrameDef.Occurrences
        Dim oFrameOcc As Inventor.ComponentOccurrence
        Dim oPartDoc As Inventor.PartDocument
        For Each oFrameOcc In oFrameOccs
            logger.Info("Frame member name : " & oFrameOcc.Name)
            oPartDoc = oFrameOcc.Definition.Document
            logger.Info("Frame member material : " & oPartDoc.ActiveMaterial.DisplayName)
        Next

Tu pourrais aussi boucler sur :

oAsmDoc.AllReferencedDocuments

 Et chercher les composants issus du centre de contenu, la démarche est différente.

 

Il y a plusieurs moyens d'arriver au même but, tout dépend tes critères de recherche.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 6 sur 6
patrick.emin
en réponse à: Sébastien_G

Bonjour @Sébastien_G 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution

Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


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