Hide Table of Contents

Get Visible Components and Entities in Drawing View Example (VBA)

This example shows how to get the visible components and entities in a drawing view.

 

'---------------------------------

'

' Preconditions: Drawing document is open and

'                a drawing view with at

'                least one component is selected.

'

' Postconditions: None

'

'---------------------------------

Option Explicit

 

Sub main()

 

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swSelMgr As SldWorks.SelectionMgr

Dim swDrawing As SldWorks.DrawingDoc

Dim drView As SldWorks.View

Dim Comp As SldWorks.Component2

Dim selData As SldWorks.SelectData

Dim ent As SldWorks.Entity

Dim EntComp As SldWorks.Component2

Dim itr As Long

Dim CompCount As Long

Dim vComps As Variant

Dim vEdges As Variant

Dim vVerts As Variant

Dim vFaces As Variant

Dim i As Long

Dim boolstatus As Boolean

 

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swDrawing = swModel

Set swSelMgr = swModel.SelectionManager

Set drView = swDrawing.ActiveDrawingView

Debug.Assert Not drView Is Nothing

Debug.Print "Name of drawing view: "; drView.GetName2

Debug.Print

 

CompCount = drView.GetVisibleComponentCount

Debug.Assert CompCount <> 0

Debug.Print "Number of visible components = "; CompCount

 

vComps = drView.GetVisibleComponents

Debug.Assert Not IsEmpty(vComps)

For i = LBound(vComps) To UBound(vComps)

    swModel.ClearSelection2 True

    Debug.Print ""

    Debug.Print "Component " & i & " name is " & vComps(i).Name2

    

    Set Comp = vComps(i)

    'Get all edges of this component that are visible in this drawing view

    vEdges = drView.GetVisibleEntities(Comp, swViewEntityType_Edge)

        

    Set selData = swSelMgr.CreateSelectData

    selData.View = drView

    

    If IsEmpty(vEdges) Then

        Debug.Print "   No edges."

    Else

        Debug.Print "   This component has " & UBound(vEdges) + 1 & " visible edges in this view."

        For itr = 0 To UBound(vEdges)

            Set ent = vEdges(itr)

            boolstatus = ent.Select4(False, selData)

        Next itr

    End If

    

    'Get all vertices of this component that are visible in this drawing view

    vVerts = drView.GetVisibleEntities(Comp, swViewEntityType_Vertex)

    If IsEmpty(vVerts) Then

        Debug.Print "   No vertices."

    Else

        Debug.Print "   This component has " & UBound(vVerts) + 1 & " visible vertices in this view."

        For itr = 0 To UBound(vVerts)

            Set ent = vVerts(itr)

            boolstatus = ent.Select4(False, selData)

        Next itr

    End If

    

    swModel.ClearSelection2 True

    

    'Get all faces of this component that are visible in this drawing view

    vFaces = drView.GetVisibleEntities(Comp, swViewEntityType_Face)

    If IsEmpty(vFaces) Then

        Debug.Print "   No faces."

    Else

        Debug.Print "   This component has " & UBound(vFaces) + 1 & " visible faces in this view."

        For itr = 0 To UBound(vFaces)

            Set ent = vFaces(itr)

            boolstatus = ent.Select4(False, selData)

        Next itr

    End If

Next i

'Get all the entities that are visible in the drawing view

    Debug.Print

    swModel.ClearSelection2 True

    Set Comp = Nothing

    

    Set EntComp = Nothing

    

    'Get all edges of all components that are visible in this drawing view

    vEdges = drView.GetVisibleEntities(Comp, swViewEntityType_Edge)

    Debug.Print "There are a total of " & UBound(vEdges) + 1 & " visible edges in this view."

    For itr = 0 To UBound(vEdges)

        Set ent = vEdges(itr)

        'boolstatus = ent.Select4(False, selData)

        Set EntComp = ent.GetComponent

        Set EntComp = Nothing

    Next itr

        

    ' 'Get all vertices of all components that are visible in this drawing view

    vVerts = drView.GetVisibleEntities(Comp, swViewEntityType_Vertex)

    Debug.Print "There are a total of " & UBound(vVerts) + 1 & " visible vertices in this view."

    For itr = 0 To UBound(vVerts)

        Set ent = vVerts(itr)

        'boolstatus = ent.Select4(False, selData)

        Set EntComp = ent.GetComponent

        Set EntComp = Nothing

    Next itr

        

    swModel.ClearSelection2 True

    'Get all faces of all components that are visible in this drawing view

    vFaces = drView.GetVisibleEntities(Comp, swViewEntityType_Face)

    Debug.Print "There are a total of " & UBound(vFaces) + 1 & " visible faces in this view."

    For itr = 0 To UBound(vFaces)

        Set ent = vFaces(itr)

        'boolstatus = ent.Select4(False, selData)

    Next itr

    

End Sub



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Get Visible Components and Entities in Drawing View Example (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:



x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2013 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.