Get Dimension Values in Drawing Example (VBA)
This example shows how to get the values of the dimensions in a drawing.
'----------------------------------------
'
' Preconditions: Drawing document is open.
'
' Postconditions: None
'
'----------------------------------------
Option Explicit
Public Enum swDimensionDrivenState_e
swDimensionDrivenUnknown
= 0 '
Driven/driving
state is unknown
swDimensionDriven
= 1 '
Dimension
is a driven dimension
swDimensionDriving
= 2 '
Dimension
is a driving dimension
End Enum
Public Enum swDimensionArrowsSide_e
swDimArrowsInside
= 0 '
Arrows
inside of the witness lines
swDimArrowsOutside
= 1 '
Arrows
outside of the witness lines
swDimArrowsSmart
= 2 '
Arrows
inside if the text and arrows fit, outside if not
swDimArrowsFollowDoc
= 3 '
Arrows
the same as the document default for placing arrows
End Enum
Public Enum swDimensionTextParts_e
swDimensionTextAll
= 0 '
All pieces of text (used only by SetText)
swDimensionTextPrefix
= 1 '
Prefix portion of the text
swDimensionTextSuffix
= 2 '
Suffix portion of the text
swDimensionTextCalloutAbove
= 3 '
Callout portion of the text, above the dimension
swDimensionTextCalloutBelow
= 4 '
Callout portion of the text, below the dimension
End Enum
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
Dim
bRet As
Boolean
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
" 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
'---------------------------------------