Create Angular Dimensions Example (VBA)

This example shows how to create angular Dimensions using 3 points, 2 lines, and an arc.

'-------------------------------------------------------------
' Preconditions:
' 1. Create a VBA macro in a software product in which VBA is
'    embedded.
' 2. Copy and paste this example into the Visual Basic IDE.
' 3. Add a reference to:
'    install_dir\bin\dsAutomation.dll
' 4. Open the Immediate window.
' 5. Start DraftSight and open a document.
' 6. Run the macro.
'
' Postconditions:
' 1. Angular Dimensions using 3 points, 2 lines, and an arc are created.
' 2. Examine the Immediate window and the drawing.
'------------------------------------------------------------
Option Explicit
    Sub main()    
        Dim dsApp As DraftSight.Application
        'Connect to the DraftSight application
        Set dsApp = GetObject(, "DraftSight.Application")
        'Abort any command currently running in DraftSight 
        'to avoid nested commands
        dsApp.AbortRunningCommand

        'Get the active document
        Dim dsDoc As DraftSight.Document
        Set dsDoc = dsApp.GetActiveDocument()
        If dsDoc Is Nothing Then
            MsgBox ("There are no open documents in DraftSight.")
            Return
        End If
        'Get the model space
        Dim dsModel As DraftSight.Model
        Set dsModel = dsDoc.GetModel()
        'Get the sketch manager
        Dim dsSketchMgr As DraftSight.SketchManager
        Set dsSketchMgr = dsModel.GetSketchManager()
        'Add an angular Dimension using three points
        Dim dsAngular3PointDim As DraftSight.AngularDimension
        Set dsAngular3PointDim = AddAngularDimensionUsing3Points(dsSketchMgr)
        'Print the angular Dimension's properties
        PrintAngularDimProperties dsAngular3PointDim
        'Add the angular Dimension using two lines
        Dim dsAngular2LinesDim As DraftSight.AngularDimension
        Set dsAngular2LinesDim = AddAngularDimensionUsing2Lines(dsSketchMgr)
        'Print the angular Dimension's properties
        PrintAngularDimProperties dsAngular2LinesDim
        'Add an angular Dimension for the arc
        Dim dsAngularArcDim As DraftSight.AngularDimension
        Set dsAngularArcDim = AddAngularDimensionForArc(dsSketchMgr)
        'Print the angular Dimension's properties
        PrintAngularDimProperties dsAngularArcDim
        'Zoom to fit
        dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
    End Sub
    Function AddAngularDimensionForArc(ByVal dsSketchMgr As DraftSight.SketchManager) As DraftSight.AngularDimension
        'Draw an arc
        Dim centerX As Double
        centerX = 18        
        Dim centerY As Double
        centerY = 2        
        Dim centerZ As Double
        centerZ = 0        
        Dim radius As Double
        radius = 3        
        Dim startAngle As Double
        startAngle = 0#        
        Dim endAngle As Double
        endAngle = 3.14159265358979 / 2        
        Dim dsArc As DraftSight.CircleArc
        Set dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, radius, startAngle, endAngle)
        'Angular Dimension's position
        Dim dimPosition(2) As Double
        dimPosition(0) = 20
        dimPosition(1) = 5
        dimPosition(2) = 0
        'Text override
        Dim dimTextOverride As String
        dimTextOverride = "AngularDimArc"
        Dim dsAngularDim As DraftSight.AngularDimension
        Set dsAngularDim = dsSketchMgr.InsertAngularDimensionArc(dsArc, dimPosition, dimTextOverride)
        Debug.Print ("An angular Dimension for an arc was added.")
        Debug.Print ("")
        Set AddAngularDimensionForArc = dsAngularDim
    End Function
    Function AddAngularDimensionUsing2Lines(ByVal dsSketchMgr As DraftSight.SketchManager) As DraftSight.AngularDimension
        'Draw two lines for an angular Dimension
        Dim dsFirstLine As DraftSight.Line
        Set dsFirstLine = dsSketchMgr.InsertLine(7, 0, 0, 10, 3, 0)        
        Dim dsSecondLine As DraftSight.Line
        Set dsSecondLine = dsSketchMgr.InsertLine(12, 0, 0, 15, 2, 0)

        'Angular dimension position
        Dim dimPosition(2) As Double
        dimPosition(0) = 13
        dimPosition(1) = 4
        dimPosition(2) = 0
        'No text override
        Dim dimTextOverride As String
        dimTextOverride = ""        
        Dim dsAngularDim As DraftSight.AngularDimension
        Set dsAngularDim = dsSketchMgr.InsertAngularDimension2Line(dsFirstLine, dsSecondLine, dimPosition, dimTextOverride)
        Debug.Print ("An angular Dimension using two lines was added.")
        Debug.Print ("")
        Set AddAngularDimensionUsing2Lines = dsAngularDim
    End Function
    Function AddAngularDimensionUsing3Points(ByVal dsSketchMgr As DraftSight.SketchManager) As DraftSight.AngularDimension
        'Angular dimension parameters
        Dim centerPoint(2) As Double
        centerPoint(0) = 0
        centerPoint(1) = 0
        centerPoint(2) = 0        
        Dim angleStartPoint(2) As Double
        angleStartPoint(0) = 2
        angleStartPoint(1) = 2
        angleStartPoint(2) = 0        
        Dim angleEndPoint(2) As Double
        angleEndPoint(0) = 2
        angleEndPoint(1) = 4
        angleEndPoint(2) = 0        
        Dim dimPosition(2) As Double
        dimPosition(0) = 5
        dimPosition(1) = 5
        dimPosition(2) = 0
        'No text override
        Dim dimTextOverride As String
        dimTextOverride = ""        
        Dim dsAngularDim As DraftSight.AngularDimension
        Set dsAngularDim = dsSketchMgr.InsertAngularDimension3Point(centerPoint, angleStartPoint, angleEndPoint, dimPosition, dimTextOverride)
        Debug.Print ("An angular Dimension using three points was added.")
        Debug.Print ("")
        Set AddAngularDimensionUsing3Points = dsAngularDim
    End Function
    Sub PrintAngularDimProperties(dsAngularDim As DraftSight.AngularDimension)
        Debug.Print ("  Angular dimension parameters...")
        Debug.Print ("    Type = " & dsAngularDim.Type)
        'Get general Dimension object, which contains common Dimension properties
        Dim dsGeneralDim As DraftSight.GeneralDimension
        Set dsGeneralDim = dsAngularDim.GetGeneralDimension()
        Debug.Print ("    Dimension style = " & dsGeneralDim.DimensionStyle)
        Debug.Print ("    Handle = " & dsGeneralDim.Handle)
        Debug.Print ("    Measurement (in radians) = " & dsGeneralDim.Measurement)
        Debug.Print ("    Related = " & dsGeneralDim.Related)
        Debug.Print ("    Text override = " & dsGeneralDim.TextOverride)
        Debug.Print ("    Text rotation = " & dsGeneralDim.TextRotation)
        'Get text position
        Dim x As Double
        Dim y As Double
        dsGeneralDim.GetTextPosition x, y
        Debug.Print ("    Text position (" & x & "," & y & ")")
        'Print specific parameters for angular Dimension
        Dim z As Double
        'Get center point
        dsAngularDim.GetCenterPoint x, y, z
        Debug.Print ("    Center point (" & x & "," & y & "," & z & ")")
        'Get arc point
        dsAngularDim.GetArcPoint x, y, z
        Debug.Print ("    Arc point (" & x & "," & y & "," & z & ")")
        'Get first line's start point
        dsAngularDim.GetLine1Point x, y, z
        Debug.Print ("    Line1's start point (" & x & "," & y & "," & z & ")")
        'Get first line end point
        dsAngularDim.GetLine1EndPoint x, y, z
        Debug.Print ("    Line1's end point (" & x & "," & y & "," & z & ")")
        'Get second line start point
        dsAngularDim.GetLine2Point x, y, z
        Debug.Print ("    Line2's start point (" & x & "," & y & "," & z & ")")
        'Get second line end point
        dsAngularDim.GetLine2EndPoint x, y, z
        Debug.Print ("    Line2's end point (" & x & "," & y & "," & z & ")")
        Debug.Print ("")
    End Sub