Skip to main content

Draw border of the active sheet on the specified layer

Sheet border drawn on the layer{ width=350 }

This VBA macro draws a border around the active sheet on the specified layer.

Macro considers sheet scale to calculate the correct coordinates of the border.

Const LAYER_NAME As String = "Border"

Dim swApp As SldWorks.SldWorks

Sub main()

Set swApp = Application.SldWorks

Dim swDraw As SldWorks.DrawingDoc

Set swDraw = swApp.ActiveDoc

Dim swSheet As SldWorks.Sheet
Set swSheet = swDraw.GetCurrentSheet

Dim vSheetProps As Variant
vSheetProps = swSheet.GetProperties2()

Dim sheetScale As Double
sheetScale = CDbl(vSheetProps(2)) / CDbl(vSheetProps(3))

Dim width As Double
Dim height As Double
swSheet.GetSize width, height

width = width / sheetScale
height = height / sheetScale

Dim swSkMgr As SldWorks.SketchManager

Set swSkMgr = swDraw.SketchManager

swSkMgr.AddToDB = True
CreateLineOnLayer swSkMgr, 0, 0, width, 0, LAYER_NAME
CreateLineOnLayer swSkMgr, width, 0, width, height, LAYER_NAME
CreateLineOnLayer swSkMgr, width, height, 0, height, LAYER_NAME
CreateLineOnLayer swSkMgr, 0, height, 0, 0, LAYER_NAME
swSkMgr.AddToDB = False

End Sub

Sub CreateLineOnLayer(skMgr As SldWorks.SketchManager, x1 As Double, y1 As Double, x2 As Double, y2 As Double, layerName As String)

Dim swSkSeg As SldWorks.SketchSegment
Set swSkSeg = skMgr.CreateLine(x1, y1, 0, x2, y2, 0)
swSkSeg.Layer = layerName

End Sub