Drw Macro: Set all Cosmetic threads to "Per standard" layer

After going through quite a bit of work and with most of the help coming from the community, we were able to scrape together a multistage macro for cleaning up some legacy drawings.

Please refer to  This Thread​​​​​​​


One of the things noticed after running that macro is that the cosmetic threads are set to the "Tables" layer, hence making them a solid line type.


Does any one have any idea of a code snippet that is needed to:

  1. run through all sheets in active drawing
  2. find all cosmetic threads
  3. Set layer to "Per standard"


Not sure if this is possible as I don't know if the cosmetic thread is "seen" as separate to everything else i.e. not considered an "swNote" for example


You can refer to the full macro if you like in the above thread link but I have also pasted the layer section of that macro below for quick reference in case it helps


running SW2020 SP5.0


Thank you




Set swApp = CreateObject("SldWorks.Application")
Set swDoc = swApp.ActiveDoc
Set swDraw = swDoc
vSheetNames = swDraw.GetSheetNames

 Dim k As Integer
Dim j As Integer
Dim s As Integer
Dim vSheets As Variant
Dim vViews As Variant

For k = 0 To swDraw.GetSheetCount - 1
 swDraw.ActivateSheet vSheetNames(k)
 'Change border layer
 swDraw.EditTemplate
 Set swSketch = swDoc.GetActiveSketch2
 swDoc.ClearSelection2 (True)
 swDoc.Extension.SelectAll
 vSketchSeg = swSketch.GetSketchSegments
 vLayName = "Auto-Border" 'Change the layer name in quotes to your layer name here
 For i = 0 To UBound(vSketchSeg)
 Set swSketchSeg = vSketchSeg(i)
 swSketchSeg.Layer = vLayName
 Next i

 swDraw.EditSheet

 'Change non-border object layer....
 vSheets = swDraw.GetViews

 For s = 0 To UBound(vSheets)
 vViews = vSheets(s)

 For v = 0 To UBound(vViews)
 Set swView = vViews(v)
 If swView.GetAnnotationCount > 0 Then
 vAnn = swView.GetAnnotations

 For j = 0 To UBound(vAnn)
 Set swAnn = vAnn(j)
 Select Case swAnn.GetType
 Case swNote
 swAnn.Layer = "Annotations" 'Change the annotations layer name in quotes to your layer name here
 Case swDisplayDimension
 swAnn.Layer = "Dimensions" 'Change the Dimensions layer name in quotes to your layer name here
 Case swTableAnnotation
 swAnn.Layer = "Tables" 'Change the Table layer name in quotes to your layer name here
 Case Else
 End Select
 Next j
 End If
 Next v
 Next s
 Next k‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

SolidworksApi/macros