Show Dimensions in Drawing Sheet Example (VBA)
This example shows how to show all of the dimensions in a drawing sheet
whether or not the dimensions are hidden or shown.
'----------------------------------------------------------
'
' Problem:
' In
the SolidWorks user interface, you can hide a dimension in a
' drawing
view through the shortcut menu. The
corresponding
' API
to do this is IModelDoc2::HideDimension.
'
' However,
in the use interface, there is no ready to show
' a
hidden dimension because it must be selected.
'
' This
example shows how to traverse all display dimensions
' on
a drawing sheet and show them.
'
' Preconditions: Drawing is open and dimensions are marked
for drawing.
'
' Postconditions: None
'
' NOTE: Dimension is not shown if it is on a layer that
' is
hidden.
'
'----------------------------------------------------------
Option Explicit
Public Enum swAnnotationVisibilityState_e
swAnnotationVisibilityUnknown
= 0
swAnnotationVisible
= 1
swAnnotationHalfHidden
= 2
swAnnotationHidden
= 3
End Enum
Public Enum swAnnotationType_e
swCThread
= 1
swDatumTag
= 2
swDatumTargetSym
= 3
swDisplayDimension
= 4
swGTol
= 5
swNote
= 6
swSFSymbol
= 7
swWeldSymbol
= 8
swCustomSymbol
= 9
swDowelSym
= 10
swLeader
= 11
swBlock
= 12
swCenterMarkSym
= 13
swTableAnnotation
= 14
swCenterLine
= 15
swDatumOrigin
= 16
End Enum
Sub ProcessDrawing _
( _
swApp
As SldWorks.SldWorks, _
swModel
As SldWorks.ModelDoc2, _
swView
As SldWorks.View _
)
Dim
swAnn As SldWorks.Annotation
Debug.Print
" "
& swView.Name
Set
swAnn = swView.GetFirstAnnotation2
Do
While Not Nothing Is swAnn
If
swDisplayDimension = swAnn.GetType
Then
Debug.Print
" "
& swAnn.GetName
swAnn.Visible = swAnnotationVisible
End
If
Set
swAnn = swAnn.GetNext2
Loop
End Sub
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swDraw As
SldWorks.DrawingDoc
Dim
swView As
SldWorks.View
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 Nothing Is swView
ProcessDrawing
swApp, swDraw, swView
Set
swView = swView.GetNextView
Loop
swModel.GraphicsRedraw2
End Sub
'-----------------------------------------------