Extraire les données de la nomenclature d'ensemble

BenjaCmoi
Advocate

Extraire les données de la nomenclature d'ensemble

BenjaCmoi
Advocate
Advocate

Bonjour,

je souhaiterais extraire les données de la nomenclature à partir d'une règle Ilogic pour les attribués à des propriété personnalisées ou les récupérer en tant que tel. Pourriez vous me mettre sur la piste des fonctions utiles a cela ?

par exemple obtenir l'inventaire des propriétés de la nomenclature et cela à partir de la rubrique pièce uniquement ou bien structure...

Un exemple je voudrais attribué à une propriété de la pièce la quantité total d'article relevée dans la nomenclature de l'assemblage... 

D'avance je vous remercie


0 J'aime
Répondre
Solutions acceptées (1)
243 Visites
4 Réponses
Replies (4)

ThomasB44
Mentor
Mentor
Solution acceptée

Salut @BenjaCmoi 

Ci-dessous un extrait de l'aide de l'API à disposition ici :

ThomasB44_0-1728650366589.png

 

Public Sub BOMQuery()
    ' Set a reference to the assembly document.
    ' This assumes an assembly document is active.
    Dim oDoc As AssemblyDocument
    Set oDoc = ThisApplication.ActiveDocument

    Dim FirstLevelOnly As Boolean
    If MsgBox("First level only?", vbYesNo) = vbYes Then
        FirstLevelOnly = True
    Else
        FirstLevelOnly = False
    End If
    
    ' Set a reference to the BOM
    Dim oBOM As BOM
    Set oBOM = oDoc.ComponentDefinition.BOM
    
    ' Set whether first level only or all levels.
    If FirstLevelOnly Then
        oBOM.StructuredViewFirstLevelOnly = True
    Else
        oBOM.StructuredViewFirstLevelOnly = False
    End If
    
    ' Make sure that the structured view is enabled.
    oBOM.StructuredViewEnabled = True
    
    'Set a reference to the "Structured" BOMView
    Dim oBOMView As BOMView
    Set oBOMView = oBOM.BOMViews.Item("Structured")
        
    Debug.Print "Item"; Tab(15); "Quantity"; Tab(30); "Part Number"; Tab(70); "Description"
    Debug.Print "----------------------------------------------------------------------------------"

    'Initialize the tab for ItemNumber
    Dim ItemTab As Long
    ItemTab = -3
    Call QueryBOMRowProperties(oBOMView.BOMRows, ItemTab)
End Sub

Private Sub QueryBOMRowProperties(oBOMRows As BOMRowsEnumerator, ItemTab As Long)
    ItemTab = ItemTab + 3
    ' Iterate through the contents of the BOM Rows.
    Dim i As Long
    For i = 1 To oBOMRows.Count
        ' Get the current row.
        Dim oRow As BOMRow
        Set oRow = oBOMRows.Item(i)

        'Set a reference to the primary ComponentDefinition of the row
        Dim oCompDef As ComponentDefinition
        Set oCompDef = oRow.ComponentDefinitions.Item(1)

        Dim oPartNumProperty As Property
        Dim oDescripProperty As Property

        If Typeof oCompDef Is VirtualComponentDefinition Then
            'Get the file property that contains the "Part Number"
            'The file property is obtained from the virtual component definition
            Set oPartNumProperty = oCompDef.PropertySets _
                .Item("Design Tracking Properties").Item("Part Number")

            'Get the file property that contains the "Description"
            Set oDescripProperty = oCompDef.PropertySets _
                .Item("Design Tracking Properties").Item("Description")

            Debug.Print Tab(ItemTab); oRow.ItemNumber; Tab(17); oRow.ItemQuantity; Tab(30); _
                oPartNumProperty.Value; Tab(70); oDescripProperty.Value
        Else
            'Get the file property that contains the "Part Number"
            'The file property is obtained from the parent
            'document of the associated ComponentDefinition.
            Set oPartNumProperty = oCompDef.Document.PropertySets _
                .Item("Design Tracking Properties").Item("Part Number")

            'Get the file property that contains the "Description"
            Set oDescripProperty = oCompDef.Document.PropertySets _
                .Item("Design Tracking Properties").Item("Description")

            Debug.Print Tab(ItemTab); oRow.ItemNumber; Tab(17); oRow.ItemQuantity; Tab(30); _
                oPartNumProperty.Value; Tab(70); oDescripProperty.Value
            
            'Recursively iterate child rows if present.
            If Not oRow.ChildRows Is Nothing Then
                Call QueryBOMRowProperties(oRow.ChildRows, ItemTab)
            End If
        End If
    Next
    ItemTab = ItemTab - 3
End Sub

Thomas
Mechanical Designer / Inventor Professionnal 2025
Inventor Professional EESignature

0 J'aime

BenjaCmoi
Advocate
Advocate

Magniiiiifique @ThomasB44 ! 🙏Je connaissais pas cette rubrique d'aide 🙂 CA! ca va m'aider. MERCI 🙂 

Bon weekend

manon_puel
Community Manager
Community Manager

Bonjour @BenjaCmoi 

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.


Manon Puel animatrice de la communauté francophone

manon_puel
Community Manager
Community Manager

Bonjour @BenjaCmoi 

Je viens d'accepter certaines réponses de @ThomasB44 comme une solution, étant entendu que le problème est résolu. N'hésitez pas à me faire savoir si vous rencontrez d'autres problèmes.

La communauté Autodesk essaie d'offrir à ses membres autant d'informations que possible qui peuvent aider les membres ayant un problème similaire, nous construisons cette connaissance à travers les contributions de la communauté et de nos experts Autodesk. 

Je voulais souligner que si l'occasion se présente à nouveau, vous pouvez également cliquer sur le bouton « Accepter comme solution » si/quand c'est pertinent afin que d'autres puissent plus facilement bénéficier de l'information. 

N'hésitez pas à me faire part de vos questions ou de vos préoccupations ! Merci pour votre contribution.


Manon Puel animatrice de la communauté francophone
0 J'aime

Saisir un nom de produit