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.
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]
Ist es Möglich die Bauteile direkt als Benutzerdefinierte Teile ein zu fügen und ab zu speichern?
AntwortenLöschenSiehe hier ganz unten
LöschenIst es möglich die Bauteile direkt als Benutzerdefinierte Bauteile einzufügen und ab zu speichern?
AntwortenLöschen