AnsweredAssumed Answered

Macro to set a basic dimension

Question asked by Brian Austin on Jun 18, 2019
Latest reply on Jun 24, 2019 by Brian Austin

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

Outcomes