09-06-2023
11:19 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
09-06-2023
11:19 PM
Here is complete sample for your original code. It assumes your occurrence names is based on PartNumber.
There are three usage samples, how you can use the method IsActiveByPartNumber. You can choose which one best fits your needs. This method accepts multiple part numbers as the last argument(s).
Sub Main()
'For syntax only
'Dim cover_type As String = ""
Dim asm As AssemblyDocument = ThisDoc.Document
If cover_type = "regular" Then
'Usage sample 1 - Call the method separately for each PartNumber
IsActiveByPartNumber(asm, True, "Flange RV - Vent_Cover")
IsActiveByPartNumber(asm, False, "Flange RV - Coned_Cover_Flange_1")
IsActiveByPartNumber(asm, False, "Flange RV - Coned_Vent_Cover_1")
'Component.IsActive("Flange RV - Vent_Cover:1") = True
'Component.IsActive("Flange RV - Coned_Cover_Flange_1:1") = False
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:1") = False
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:2") = False
ElseIf cover_type = "coned" Then
'Usage sample 1 - Combine multiple PartNumbers to single method call
IsActiveByPartNumber(asm, False, "Flange RV - Vent_Cover")
IsActiveByPartNumber(asm, True, "Flange RV - Coned_Cover_Flange_1", "Flange RV - Coned_Vent_Cover_1")
'Component.IsActive("Flange RV - Vent_Cover:1") = False
'Component.IsActive("Flange RV - Coned_Cover_Flange_1:1") = True
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:1") = True
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:2") = True
ElseIf cover_type = "N/A" Then
'Usage sample 3 - Prepare list of PartNumbers separately
Dim partNumbers = {
"Flange RV - Vent_Cover",
"Flange RV - Coned_Cover_Flange_1",
"Flange RV - Coned_Vent_Cover_1"
}
IsActiveByPartNumber(asm, True, partNumbers)
'Component.IsActive("Flange RV - Vent_Cover:1") = True
'Component.IsActive("Flange RV - Coned_Cover_Flange_1:1") = True
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:1") = True
'Component.IsActive("Flange RV - Coned_Vent_Cover_1:2") = True
End If
End Sub
Sub IsActiveByPartNumber(asm As AssemblyDocument, isActive As Boolean, ParamArray partNumbers() As String)
'Get occurrences to process by its document PartNumber
Dim occList As New List(Of ComponentOccurrence)
For Each occ As ComponentOccurrence In asm.ComponentDefinition.Occurrences
Dim doc As Document = occ.Definition.Document
Dim partNumber As String = doc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}")("Part Number").Value
If partNumbers.Contains(partNumber) Then
occList.Add(occ)
End If
Next
'Do something with occurrences in list
For Each occ In occList
Component.IsActive(occ.Name) = isActive
Next
End Sub