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 Drawing Migration Cleanup Macro
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:
- run through all sheets in active drawing
- find all cosmetic threads
- 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
Has anybody got any insight on this, it feels so close to a solution?
Thank you