Good Morning All,
I found this sample in the API help. I would like to use this macrobut I cannot get it to work. Could someone please lead me in theright direction for it to work.
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
'--------------------------------------------
SolidworksApi macros


I found this sample in the API help. I would like to use this macrobut I cannot get it to work. Could someone please lead me in theright direction for it to work.
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
'--------------------------------------------
SolidworksApi macros