Inventor API: Check Visibility of Components in Drawing View

by Vladimir Ananyev

Q: I’m trying to check if a given component occurrence is visible in a drawing view. How can I do it?

A: You can use the DrawingView.GetVisibility function for this. Here is some sample code. First select a drawing view which is referencing an assembly document and then run the code.

 

Sub checkVisibility()

 

  Dim invDV As DrawingView

  Set invDV = ThisApplication.ActiveDocument.SelectSet(1)

 

  Dim invD As Document

  Set invD = invDV.ReferencedDocumentDescriptor.ReferencedDocument

     

  Dim invAD As AssemblyDocument

  If TypeOf invD Is AssemblyDocument Then

    Set invAD = invD

    Call checkVisibilityRecursive( _

        invAD.ComponentDefinition.Occurrences, invDV)

    MsgBox "Result is in the Immediate window"

  Else

    MsgBox "No assembly document is used"

  End If

End Sub

 

Sub checkVisibilityRecursive( _

              invCOs As ComponentOccurrences, _

              invDV As DrawingView)

  Dim iTab As Integer

  iTab = 1 + invCOs(1).OccurrencePath.Count * 3

 

  Dim invCO As ComponentOccurrence

  For Each invCO In invCOs

    If Not invCO.IsSubstituteOccurrence Then

      If invCO.SubOccurrences.Count > 0 Then _

        Call checkVisibilityRecursive( _

              invCO.SubOccurrences, invDV)

      If invCO.Definition.Type = kVirtualComponentDefinitionObject Then

        Debug.Print Space(iTab) & invCO.Name & "  is virtual"

      Else

        Debug.Print Space(iTab) & invCO.Name & _

            " is visible = " & invDV.GetVisibility(invCO)

      End If

    End If

  Next

<

p style=”line-height: normal;margin: 0cm 0cm 0pt” class=”MsoNoSpacing”>End Sub


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading