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
'--------------------------------------------