Change Dimension Style Options of Leader Example (VBA)

This example shows how to change the DimensionStyle arrow and text options of a specific Leader. The DimensionStyle arrow and text options of all other existing and new Leaders use the DimensionStyle options of the drawing. 

'-----------------------------------------------------------------
' 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 the DraftSight type library,
'    install_dir\bin\dsAutomation.dll.
' 4. Start DraftSight and open a drawing document.
' 5. Press F8 to step through the macro.
'
' Postconditions:
' 1.  Draws two Leaders, DSUserData and DS.
' 2.  Gets DimensionStyleUserData for DSUserData Leader.
' 3.  Gets arrow options for DSUserData Leader.
' 4.  Modifies DSUserData Leader's arrow options only.
' 5.  Zooms to fit the drawing and execution stops.
' 6.  Examine the drawing to verify that only DSUserData Leader's
'     arrow changed.
' 7.  Gets text options for DSUserData Leader.
' 8.  Modifies DSUserData Leader's text options only.
' 9.  Inserts third Leader, DS2.
' 10. Examine the drawing to verify that DS and DS2 Leaders
'     have the same arrow and text options.
'----------------------------------------------------------------
Option Explicit
    Sub main()    
        Dim dsApp As DraftSight.Application
        'Connect to DraftSight application
        Set dsApp = GetObject(, "DraftSight.Application")        
        If dsApp Is Nothing Then
            Return
        End If
        'Get 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 Sketch Manager
        Dim dsModel As DraftSight.Model
        Dim dsSketchMgr As DraftSight.SketchManager
        Set dsModel = dsDoc.GetModel()
        Set dsSketchMgr = dsModel.GetSketchManager()
        'Insert first Leader
        Dim Coordinates(8) As Double
        Coordinates(0) = 0
        Coordinates(1) = 0
        Coordinates(2) = 0
        Coordinates(3) = 4
        Coordinates(4) = 4
        Coordinates(5) = 0
        Coordinates(6) = 10
        Coordinates(7) = 4
        Coordinates(8) = 0
        Dim Width As Double
        Width = 5#
        Dim myNote As String
        myNote = "DSUserData"
        Dim dsLeader As DraftSight.Leader
        Set dsLeader = dsSketchMgr.InsertLeader(Coordinates, Width, myNote)
        'Insert second Leader
        Dim Coordinates2(8) As Double
        Coordinates2(0) = 8
        Coordinates2(1) = 8
        Coordinates2(2) = 8
        Coordinates2(3) = 8
        Coordinates2(4) = 8
        Coordinates2(5) = 8
        Coordinates2(6) = 20
        Coordinates2(7) = 8
        Coordinates2(8) = 8
        Dim myNote2 As String
        myNote2 = "DS"
        Dim dsLeader2 As DraftSight.Leader
        Set dsLeader2 = dsSketchMgr.InsertLeader(Coordinates2, Width, myNote2)
        'Zoom to fit
        dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
        'Get DimensionStyleUserData for dsUserData Leader
        Dim dsDimStyleUserData As DraftSight.DimensionStyleUserData
        Set dsDimStyleUserData = dsLeader.GetDimensionStyleUserData()
        'Get DimensionStyleArrowsOptions for DSUserData Leader
        Dim dsArrowsOptions As DraftSight.DimensionStyleArrowsOptions
        Set dsArrowsOptions = dsDimStyleUserData.GetDimensionStyleArrowsOptions()
        'Set arrow size for DSUserData Leader
        dsArrowsOptions.Size = 1#
        'Set arrow type for DSUserData Leader
        dsArrowsOptions.SetLeaderArrow dsDimensionArrowType_e.dsDimensionArrowType_Dot, ""
        'Get DimensionStyleTextOptions for DSUserData Leader
        Dim dsTextOptions As DraftSight.DimensionStyleTextOptions
        Set dsTextOptions = dsDimStyleUserData.GetDimensionStyleTextOptions()
        'Set text vertical position for DSUserData Leader
        dsTextOptions.VerticalPosition = dsDimensionTextVerticalPosition_e.dsDimensionTextVerticalPosition_Centered
        
        'Insert third Leader
        Dim Coordinates3(8) As Double
        Coordinates3(0) = 16
        Coordinates3(1) = 16
        Coordinates3(2) = 16
        Coordinates3(3) = 16
        Coordinates3(4) = 16
        Coordinates3(5) = 16
        Coordinates3(6) = 40
        Coordinates3(7) = 16
        Coordinates3(8) = 16
        Dim myNote3 As String
        myNote3 = "DS2"
        Dim dsLeader3 As DraftSight.Leader
        Set dsLeader3 = dsSketchMgr.InsertLeader(Coordinates3, Width, myNote3)
        'Zoom to fit
        dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
        
        'Examine the drawing to verify that DS and DS2 Leaders
        'have the same arrow and text options
        
    End Sub