* I'm currently re-organising all my macros and I found a few I'd forgotten about. So I'll try and tidy them up a bit and post them.
SolidworksApi/macros' SOLIDWORKS
' This macro will flip (toggle) 'Marked for Drawing' on all your dimensions.
' Works in a part file or an assembly but doesn't go down into your components
' Warning - I'm a joiner not a programmer, so use at your own risk!
' https://forum.solidworks.com/people/1-2SZI4TC
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeature As SldWorks.Feature
Dim swDisplayDimension As SldWorks.DisplayDimension
Dim swDimension As SldWorks.Dimension
Dim colFeaturesWithDims As Collection
Dim colDispDims As Collection
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set colFeaturesWithDims = New Collection
Set swFeature = swModel.FirstFeature
Do While Not swFeature Is Nothing
If HasDisplayDimensions(swFeature) Then
On Error Resume Next 'we don't care if already in the collection
Call colFeaturesWithDims.Add(Item:=swFeature, key:=swFeature.Name)
On Error GoTo 0
End If
Set swFeature = swFeature.GetNextFeature
Loop
Dim i As Integer
For i = 1 To colFeaturesWithDims.Count
Debug.Print colFeaturesWithDims(i).Name
Next
Set colDispDims = New Collection
For i = 1 To colFeaturesWithDims.Count
Set swFeature = colFeaturesWithDims(i)
Set swDisplayDimension = swFeature.GetFirstDisplayDimension
Do While Not swDisplayDimension Is Nothing
On Error Resume Next 'we don't care if already in the collection
Call colDispDims.Add(Item:=swDisplayDimension, key:=swDisplayDimension.GetDimension.FullName)
On Error GoTo 0
Set swDisplayDimension = swFeature.GetNextDisplayDimension(swDisplayDimension)
Loop
Next
For i = 1 To colDispDims.Count
Set swDisplayDimension = colDispDims(i)
With swDisplayDimension
Debug.Print .GetNameForSelection, .MarkedForDrawing
.MarkedForDrawing = IIf(.MarkedForDrawing, False, True)
End With
Next
Call swApp.SendMsgToUser2(colDispDims.Count & " dimension" & IIf(colDispDims.Count = 1, "", "s") & " flipped", swMbInformation, swMbOk)
End Sub
Private Function HasDisplayDimensions(swFeature As SldWorks.Feature) As Boolean
HasDisplayDimensions = Not swFeature.GetFirstDisplayDimension Is Nothing
End Function
