Create Layer for Selected View Example (VBA)
This example shows how to create a layer for the selected drawing view.
'----------------------------------------------------------------------------
' Preconditions:
' 1. Open a drawing of a part.
' 2. Select a drawing view.
'
' Postconditions: Creates a layer for the selected view. To verify the creation
' of a layer for the selected view, click the Layer Properties tool on the
' Line Format toolbar. The newly created layer is selected in the
' Layers dialog box.
'----------------------------------------------------------------------------
Option Explicit
Private Sub ChangeComponentLayer _
( _
swApp As SldWorks.SldWorks, _
swDraw As SldWorks.DrawingDoc, _
sLayerName As String _
)
Dim bRet
As Boolean
' Form a valid layer name
sLayerName = Replace(sLayerName, "/", "_")
sLayerName = Replace(sLayerName, "@", "_")
bRet = swDraw.CreateLayer2( _
sLayerName, _
"Layer for part in " & sLayerName, _
0, swLineCONTINUOUS, swLW_NORMAL, True, True)
' Changes in all views
swDraw.ChangeComponentLayer sLayerName, True
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 swDrawModel
As SldWorks.ModelDoc2
Dim swDrawPart
As SldWorks.PartDoc
Dim vBody
As Variant
Dim swBody
As SldWorks.Body2
Dim swFace
As SldWorks.Face2
Dim swEnt
As SldWorks.Entity
Dim nErrors
As Long
Dim nWarnings
As Long
Dim bRet
As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swSelMgr = swModel.SelectionManager
Set swView = swSelMgr.GetSelectedObject6(1, -1)
Set swDrawModel = swApp.OpenDoc6(swView.GetReferencedModelName,
swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
Set swDrawPart = swDrawModel
Debug.Print "File
= " & swModel.GetPathName
Debug.Print " View
= " & swView.Name
Debug.Print " View Model = " & swView.GetReferencedModelName
vBody = swDrawPart.GetBodies2(swSolidBody,
True)
Set swBody = vBody(0)
Set swFace = swBody.GetFirstFace
Set swEnt = swFace
bRet = swView.SelectEntity(swEnt,
False)
ChangeComponentLayer swApp, swDraw,
swView.Name
End Sub