Get DimXpert Display Dimensions and Feature Example (VBA)
This example shows how to find out if an annotation is a DimXpert display
dimension, and, if so, how to get its DimXpert feature.
'----------------------------------------------------------------------------
' Preconditions:
' 1. Add a reference to the SOLIDWORKS version DimXpert type library.
' 2. Open public_documents\samples\tutorial\api\plate_tolstatus.sldprt.
' 3. Click View > Toolbars > DimXpert.
' 4. Click the Auto Dimension Scheme button on the DimXpert toolbar.
' 5. Verify that Chamfer and Simple hole are selected in Feature Filters
' in the Auto Dimension Scheme PropertyManager page and click OK.
' 6. Open the Immediate window.
'
' Postconditions:
' 1. Gets the DimXpert display dimensions in the model.
' 2. Examine the Immediate window.
'
' NOTE: Because this part is used elsewhere, do not save changes.
'---------------------------------------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swPart As SldWorks.ModelDoc2
Dim swAnnotation As SldWorks.Annotation
Dim swDisplayDimension As SldWorks.DisplayDimension
Sub main()
Set swApp = Application.SldWorks
Set swPart = swApp.ActiveDoc
Set swAnnotation = swPart.GetFirstAnnotation2
Do While (Not (swAnnotation Is Nothing))
Debug.Print " "
Debug.Print "Annotation name = " & swAnnotation.GetName
Debug.Print "Annotation DimXpert name = " & swAnnotation.GetDimXpertName
If swAnnotationType_e.swDisplayDimension = swAnnotation.GetType Then
Debug.Print " Is a display dimension? True"
Set swDisplayDimension = swAnnotation.GetSpecificAnnotation
Select Case (swDisplayDimension.Type2)
Case swDimensionType_e.swOrdinateDimension
Debug.Print " Display dimension type = base ordinate and its subordinates"
Case swDimensionType_e.swLinearDimension
Debug.Print " Display dimension type = linear"
Case swDimensionType_e.swAngularDimension
Debug.Print " Display dimension type = angular"
Case swDimensionType_e.swArcLengthDimension
Debug.Print " Display dimension type = arc length"
Case swDimensionType_e.swRadialDimension
Debug.Print " Display dimension type = radial"
Case swDimensionType_e.swDiameterDimension
Debug.Print " Display dimension type = diameter"
Case swDimensionType_e.swHorOrdinateDimension
Debug.Print " Display dimension type = horizontal ordinate"
Case swDimensionType_e.swVertOrdinateDimension
Debug.Print " Display dimension type = vertical ordinate"
Case swDimensionType_e.swZAxisDimension
Debug.Print " Display dimension type = z-axis"
Case swDimensionType_e.swChamferDimension
Debug.Print " Display dimension type = chamfer dimension"
Case swDimensionType_e.swHorLinearDimension
Debug.Print " Display dimension type = horizontal linear"
Case swDimensionType_e.swVertLinearDimension
Debug.Print " Display dimension type = vertical linear"
Case swDimensionType_e.swScalarDimension
Debug.Print " Display dimension type = scalar"
Case Else
Debug.Print " Display dimension type = unknown"
End Select
Debug.Print " Is a DimXpert display dimension? " & IIf(swDisplayDimension.IsDimXpert = False, "False", "True")
If swAnnotation.IsDimXpert Then
Dim DimXpertFeat As SwDimXpert.DimXpertFeature
Dim FeatName As String
Set DimXpertFeat = swAnnotation.GetDimXpertFeature()
If Not DimXpertFeat Is Nothing Then
FeatName = DimXpertFeat.Name
Debug.Print " DimXpert feature name = " & FeatName
Select Case (DimXpertFeat.Type)
Case swDimXpertFeatureType_e.swDimXpertFeature_Plane
Debug.Print " DimXpert feature type = plane"
Case swDimXpertFeatureType_e.swDimXpertFeature_Cylinder
Debug.Print " DimXpert feature type = cylinder"
Case swDimXpertFeatureType_e.swDimXpertFeature_Cone
Debug.Print " DimXpert feature type = cone"
Case swDimXpertFeatureType_e.swDimXpertFeature_Extrude
Debug.Print " DimXpert feature type =extrude"
Case swDimXpertFeatureType_e.swDimXpertFeature_Fillet
Debug.Print " DimXpert feature type = fillet"
Case swDimXpertFeatureType_e.swDimXpertFeature_Chamfer
Debug.Print " DimXpert feature type = chamfer"
Case swDimXpertFeatureType_e.swDimXpertFeature_CompoundHole
Debug.Print " DimXpert feature type = compound hole"
Case swDimXpertFeatureType_e.swDimXpertFeature_CompoundWidth
Debug.Print " DimXpert feature type = compound width"
Case swDimXpertFeatureType_e.swDimXpertFeature_CompoundNotch
Debug.Print " DimXpert feature type = compound notch"
Case swDimXpertFeatureType_e.swDimXpertFeature_CompoundClosedSlot3D
Debug.Print " DimXpert feature type = compound closed-slot 3D"
Case swDimXpertFeatureType_e.swDimXpertFeature_IntersectPoint
Debug.Print " DimXpert feature type = intersect point"
Case swDimXpertFeatureType_e.swDimXpertFeature_IntersectLine
Debug.Print " DimXpert feature type = intersect line"
Case swDimXpertFeatureType_e.swDimXpertFeature_IntersectCircle
Debug.Print " DimXpert feature type = intersect circle"
Case swDimXpertFeatureType_e.swDimXpertFeature_IntersectPlane
Debug.Print " DimXpert feature type = intersect plane"
Case swDimXpertFeatureType_e.swDimXpertFeature_Pattern
Debug.Print " DimXpert feature type = pattern"
Case swDimXpertFeatureType_e.swDimXpertFeature_Sphere
Debug.Print " DimXpert feature type = sphere"
Case swDimXpertFeatureType_e.swDimXpertFeature_BestfitPlane
Debug.Print " DimXpert feature type = best-fit plane"
Case swDimXpertFeatureType_e.swDimXpertFeature_Surface
Debug.Print " DimXpert feature type = surface"
Case Else
Debug.Print " DimXpert feature type = unknown"
End Select
End If
End If
Else
Debug.Print " Not a display dimension."
End If
Set swAnnotation = swAnnotation.GetNext3
Loop
End Sub