Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

23.06.2014

Inhaltscenter: Alle Normteile einer Norm als Bauteile generieren

Wie kann ich alle Bauteile einer Norm aus dem Inhaltscenter als IPTs generieren?

Dafür gibt es in den Programmierbeispielen im Inventor einen Beispielcode. Das Beispiel heißt Place Content Center Parts API Sample. Das Beispiel muss auf die deutsche Inventorversion angepasst werden.

image

In dieser Zeile muss der “Weg” im Inhaltscenter zur Norm angegeben werden.

Set hexHeadNode = ThisApplication.ContentCenter.TreeViewTopNode.ChildNodes.Item("Verbindungselemente").ChildNodes.Item("Schrauben").ChildNodes.Item("Sechskantkopf")

Und in der dieser der Namen der Norm: If checkFamily.DisplayName = "DIN EN 24016" Then

So sieht der ganze VBA-Programmcode aus:

Public Sub PlaceFromContentCenter()
    Dim asmDoc As AssemblyDocument
    Set asmDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject)
    Dim asmDef As AssemblyComponentDefinition
    Set asmDef = asmDoc.ComponentDefinition
    ' Get the node in the content browser based on the names of the nodes in the hierarchy.
    Dim hexHeadNode As ContentTreeViewNode
    Set hexHeadNode = ThisApplication.ContentCenter.TreeViewTopNode.ChildNodes.Item("Verbindungselemente").ChildNodes.Item("Schrauben").ChildNodes.Item("Sechskantkopf")
    ' Find a specific family.  In this case it's using the display name, but any family
    ' characteristic could be searched for.
    Dim family As ContentFamily
    Dim checkFamily As ContentFamily
    For Each checkFamily In hexHeadNode.Families
        If checkFamily.DisplayName = "DIN EN 24016" Then
            Set family = checkFamily
            Exit For
        End If
    Next
    Dim i As Integer
    If Not family Is Nothing Then
        ' Place one instance of each member.
        Dim offset As Double
        offset = 0
        Dim row As ContentTableRow
        For Each row In family.TableRows
            ' Create the member (part file) from the table.
            Dim failureReason As MemberManagerErrorsEnum
            Dim failureMessage As String
            Dim memberFilename As String
            memberFilename = family.CreateMember(row, failureReason, failureMessage, kRefreshOutOfDateParts)
            ' Place the part into the assembly.
            Dim transMatrix As Matrix
            Set transMatrix = ThisApplication.TransientGeometry.CreateMatrix
            transMatrix.Cell(2, 4) = offset
            Dim Occ As ComponentOccurrence
            Set Occ = asmDef.Occurrences.Add(memberFilename, transMatrix)
            ' Compute the position for the next placement based on the size of the part just placed.
            Dim minY As Double
            Dim maxY As Double
            minY = Occ.RangeBox.MinPoint.Y
            maxY = Occ.RangeBox.MaxPoint.Y
            offset = offset + ((maxY - minY) * 1.1)
        Next
    End If
End Sub

Hier der Code nochmals in einer BAS-Datei.

[Quelle: meine Antwort bei cad.de]

3 Kommentare:

  1. Ist es Möglich die Bauteile direkt als Benutzerdefinierte Teile ein zu fügen und ab zu speichern?

    AntwortenLöschen
  2. Ist es möglich die Bauteile direkt als Benutzerdefinierte Bauteile einzufügen und ab zu speichern?

    AntwortenLöschen

War der Beitrag hilfreich oder hast du eine Ergänzung dazu?
Ist noch eine Frage offen?
Ich freue mich auf deine Rückmeldung!

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.

Related Posts Plugin for WordPress, Blogger...
Inventor FAQ Newsletter. Emailadresse: