06-30-2023
07:30 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
06-30-2023
07:30 AM
I managed to change the names in the iAssembly by accessing the factory document of the iAssembly and changing the occurrence name in there. See if this works for you:
Class ThisRule
Dim name As String = "Part"
Dim num As Integer = 1
Dim existingOccs As ComponentOccurrencesEnumerator
Sub Main
iLogicvb.UpdateWhenDone = True
Dim def As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
existingOccs = def.Occurrences.AllReferencedOccurrences(def)
For Each oOcc As ComponentOccurrence In def.Occurrences
TraverseAndSetNames(oOcc)
Next
End Sub
Sub RenameExisting(oName As String, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
Dim existingOccWithName As ComponentOccurrence
If eOccs Is Nothing
existingOccWithName = existingOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)
Else
existingOccWithName = eOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)
End If
If existingOccWithName IsNot Nothing
existingOccWithName.Name = oName & "_old"
End If
End Sub
Sub RenameOcc(oOcc As ComponentOccurrence)
oOcc.Name = name & num
num += 1
End Sub
Sub TraverseAndSetNames(oOcc As ComponentOccurrence, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
RenameExisting(name & num, eOccs)
RenameOcc(oOcc)
If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject
If oOcc.IsiAssemblyMember
Dim iAssyMember As iAssemblyMember = oOcc.Definition.iAssemblyMember
Dim def As AssemblyComponentDefinition = iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.ComponentDefinition
For Each sOcc As ComponentOccurrence In def.Occurrences
TraverseAndSetNames(sOcc, def.Occurrences.AllReferencedOccurrences(def))
Next
iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.Save2(True)
Else
For Each sOcc As ComponentOccurrence In oOcc.SubOccurrences
TraverseAndSetNames(sOcc)
Next
End If
End If
End Sub
End Class
Jhoel Forshav
Download my free Inventor Addin - Hole Projector
LinkedIn | Ideas | Contributions | Blog posts | Website