Hide Table of Contents

Put Assembly Components in Drawing View on Different Layers Example (VBA)

This example shows how to put all assembly components in a drawing view on different layers.

 

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

'

' Preconditions:

'       (1) Drawing document is open.

'       (2) Drawing view of an assembly is selected.

'

' Postconditions:

'       (1) New drawing layer is created for each component.

'       (2) Each part is put on its own layer.

'

' NOTE: Illegal characters are replaced with legal characters when creating a new

'        drawing layer.

'

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

Option Explicit

 

Public Enum swLineStyles_e

    swLineCONTINUOUS = 0

    swLineHIDDEN = 1

    swLinePHANTOM = 2

    swLineCHAIN = 3

    swLineCENTER = 4

    swLineSTITCH = 5

    swLineCHAINTHICK = 6

End Enum

 

Public Enum swLineWeights_e

    swLW_NONE = -1

    swLW_THIN = 0

    swLW_NORMAL = 1

    swLW_THICK = 2

    swLW_THICK2 = 3

    swLW_THICK3 = 4

    swLW_THICK4 = 5

    swLW_THICK5 = 6

    swLW_THICK6 = 7

    swLW_NUMBER = 8

    swLW_LAYER = 9

End Enum

 

Private Sub ChangeComponentLayer _

( _

    swApp As SldWorks.SldWorks, _

    swDraw As SldWorks.DrawingDoc, _

    swDrawComp As SldWorks.DrawingComponent, _

    sLayerName As String _

)

    Dim bRet                    As Boolean

    

    ' Form a legal layer name by replacing backslash (/) and at sign (@) symbols

    ' with underscores

    sLayerName = Replace(sLayerName, "/", "_")

    sLayerName = Replace(sLayerName, "@", "_")

    

    bRet = swDraw.CreateLayer( _

                sLayerName, _

                "layer for " & sLayerName, _

                0, swLineCONTINUOUS, swLW_NORMAL, True): Debug.Assert bRet

    

    swDrawComp.Layer = sLayerName

End Sub

 

Sub ProcessDrawingComponent _

( _

    swApp As SldWorks.SldWorks, _

    swDraw As SldWorks.DrawingDoc, _

    swDrawComp As SldWorks.DrawingComponent, _

    sPadStr As String _

)

    Dim vDrawCompChildArr           As Variant

    Dim vDrawCompChild              As Variant

    Dim swDrawCompChild             As SldWorks.DrawingComponent

        

    Debug.Print sPadStr & swDrawComp.Name

    

    ChangeComponentLayer swApp, swDraw, swDrawComp, swDrawComp.Name

    

    vDrawCompChildArr = swDrawComp.GetChildren

    If Not IsEmpty(vDrawCompChildArr) Then

        For Each vDrawCompChild In vDrawCompChildArr

            Set swDrawCompChild = vDrawCompChild

            

            ProcessDrawingComponent swApp, swDraw, swDrawCompChild, sPadStr + "  "

        Next

    End If

End Sub

 

Sub main()

    Dim swApp                       As SldWorks.SldWorks

    Dim swModel                     As SldWorks.ModelDoc2

    Dim swDraw                      As SldWorks.DrawingDoc

    Dim swSelMgr                    As SldWorks.SelectionMgr

    Dim swView                      As SldWorks.View

    Dim swDrawComp                  As SldWorks.DrawingComponent

    Dim bRet                        As Boolean

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swDraw = swModel

    Set swSelMgr = swModel.SelectionManager

    Set swView = swSelMgr.GetSelectedObject5(1)

    Set swDrawComp = swView.RootDrawingComponent

    

    Debug.Print "File = " & swModel.GetPathName

    Debug.Print "  " & swView.Name & "  [" & swView.Type & "]"

    

    ProcessDrawingComponent swApp, swDraw, swDrawComp, "    "

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:   Put Assembly Components in Drawing View on Different Layers 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) 2010 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.