ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
BABrian Austin18/06/2019

This VBA macro works to set a dimension to basic

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

'EditDimensionProperties2(TolType, TolMax, TolMin, TolMaxFit, TolMinFit, UseDocPrec, Precision, ArrowsIn, UseDocArrows, Arrow1, Arrow2, PrefixText, SuffixText, ShowValue, CalloutText1, CalloutText2, CenterText)

boolstatus = Part.EditDimensionProperties2(1, 0, 0, "", "", True, 9, 2, True, 12, 12, "", "", True, "", "", False)


Part.ClearSelection2 True

End Sub

However, you can see that it also sets the arrows and the suffix text for the selected dimension.

I need to read these values first from the SELECTED dimension, so I can insert the existing values into the "boolstatus" command.

Once I learn how to read all of the parameters for the command, I can then alter only one.

I have seen many web sites on how to loop thru all dimensions in a drawing (see below), but not the selected dimension.

Thanks,

Brian

================================

Option Explicit

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim swDispDim As SldWorks.DisplayDimension
Dim swDim As SldWorks.Dimension
Dim swAnn As SldWorks.Annotation

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel

Debug.Print "File = " & swModel.GetPathName

Set swView = swDraw.GetFirstView

Do While Not swView Is Nothing


Debug.Print " View = " & swView.Name

Set swDispDim = swView.GetFirstDisplayDimension5

Do While Not swDispDim Is Nothing


Set swAnn = swDispDim.GetAnnotation
Set swDim = swDispDim.GetDimension

Debug.Print " ------------------------------------"


Debug.Print " AnnName = " & swAnn.GetName
Debug.Print " DimFullName = " & swDim.FullName
Debug.Print " DimName = " & swDim.Name
Debug.Print " swDimensionParamType_e type = " & swDim.GetType
Debug.Print " DrivenState = " & swDim.DrivenState
Debug.Print " ReadOnly = " & swDim.ReadOnly
Debug.Print " Value = " & swDim.GetSystemValue2("")
Debug.Print ""
Debug.Print " Arrowside = " & swDispDim.ArrowSide
Debug.Print " TextAll = " & swDispDim.GetText(swDimensionTextAll)
Debug.Print " TextPrefix = " & swDispDim.GetText(swDimensionTextPrefix)
Debug.Print " TextSuffix = " & swDispDim.GetText(swDimensionTextSuffix)
Debug.Print " CalloutAbove = " & swDispDim.GetText(swDimensionTextCalloutAbove)
Debug.Print " CalloutBelow = " & swDispDim.GetText(swDimensionTextCalloutBelow)

Set swDispDim = swDispDim.GetNext3

Loop

Set swView = swView.GetNextView

Loop


End Sub