Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

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