This post here should help. It places a member to the drawing, changes the partslist to the active member, saves,closes and repeats.
Code below:
'Step1: Place the iAssembly on a drawing
'Step2: Select member#1 to be the active member for the View
'Step3: Place partslist on sheet(Optional)
'Step4: Save the drawing using the first factory member as the filename.
'Step5: Run this rule
Sub Main
Check = MessageBox.Show("Loop through factory members, This will take a while. Are you sure?" _
, "Ilogic Instructions", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
If Check = vbYes Then
Dim oDrawingDoc As DrawingDocument
oDrawingDoc = ThisApplication.ActiveDocument
Dim oView As DrawingView
oView = oDrawingDoc.ActiveSheet.DrawingViews(1)
Dim oAssyDoc As AssemblyDocument
oAssyDoc = oView.ReferencedDocumentDescriptor.ReferencedDocument
Dim oDef As AssemblyComponentDefinition
oDef = oAssyDoc.ComponentDefinition
'Make sure we have an iAssemblyMember.
If Not oDef.IsiAssemblyMember = True Then
MsgBox ("Chosen document is not a iAssemblyMember.", vbExclamation)
Exit Sub
End If
Dim oFactory As iAssemblyFactory
oFactory = oDef.iAssemblyMember.ParentFactory
Dim FirstMemberName As String
FirstMemberName = oFactory.FileNameColumn(1).Value
'Create ArrayList Of Members to Include in Partslist
FirstMemberArray = New String() {FirstMemberName}
Dim FirstPath As String
FirstPath = oAssyDoc.FullFileName
Dim NewPath As String
For i =1 To oFactory.TableRows.Count - 1
oAssyDoc = oView.ReferencedDocumentDescriptor.ReferencedDocument
NewPath = Replace(oAssyDoc.FullFileName, oFactory.FileNameColumn(i).Value, oFactory.FileNameColumn(i + 1).Value)
ThisApplication.UserInterfaceManager.DoEvents
ThisApplication.StatusBarText = "Changing Member referencing......"
' Generate the member and file, (overwrites member file or creates new file)
Call oFactory.CreateMember(i + 1)
Call oDrawingDoc.Update2(True)
'Get MemberName
Dim NewMemberName As String
NewMemberName = oFactory.FileNameColumn(i + 1).Value
'Create ArrayList Of Members to Include in Partslist
NewMemberArray = New String() {NewMemberName}
'Change partslist to match member in the view
If oDrawingDoc.ActiveSheet.PartsLists.Count > 0 Then oDrawingDoc.ActiveSheet.PartsLists.Item(1).MembersToInclude() = NewMemberArray
'Change the view to new member
Call oView.ReferencedDocumentDescriptor.ReferencedFileDescriptor.ReplaceReference(NewPath)
'Perform a Saveas Drawing
Try
Call oDrawingDoc.SaveAsInventorDWG(Replace(oDrawingDoc.FullFileName, oFactory.FileNameColumn(1).Value, oFactory.FileNameColumn(i+1).Value), True)
'Do Something else like update iproperties
Catch
MessageBox.Show("Error", "Title")
End Try
Next
' On loop finish, change model reference and partlsist back to member 1( to avoid saving the wrong member to filename)
Try
Call oView.ReferencedDocumentDescriptor.ReferencedFileDescriptor.ReplaceReference(FirstPath)
If oDrawingDoc.ActiveSheet.PartsLists.Count > 0 Then oDrawingDoc.ActiveSheet.PartsLists.Item(1).MembersToInclude()= FirstMemberArray
Catch
MessageBox.Show("Error", "Title")
End Try
Else
End If
End Sub
If this solved a problem, please click (accept) as solution.
Or if this helped you, please, click (like)
Regards
Alan