# 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