Create Aligned Linear and Ordinate Dimensions Example (VBA)
This example shows how to create aligned linear and ordinate
Dimensions for a closed PolyLine and Circles. A Leader and a geometric tolerance
are also created.
'-------------------------------------------------------------
' 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. Start DraftSight and open a document.
' 5. Run the macro.
'
' Postconditions:
' 1. A closed PolyLine and four Circles are constructed.
' 2. Aligned linear and ordinate Dimensions are created.
'------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
'Connect to DraftSight application
Set dsApp = GetObject(, "DraftSight.Application")
'Abort any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'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 model space
Dim dsModel As DraftSight.Model
Set dsModel = dsDoc.GetModel()
'Get sketch manager
Dim dsSketchMgr As DraftSight.SketchManager
Set dsSketchMgr = dsModel.GetSketchManager()
'Construct a closed PolyLine
Dim coordinates(7) As Double
coordinates(0) = 2
coordinates(1) = 2
coordinates(2) = 8
coordinates(3) = 2
coordinates(4) = 8
coordinates(5) = 8
coordinates(6) = 2
coordinates(7) = 8
Dim closed As Boolean
closed = True
Dim dsPolyline As DraftSight.PolyLine
Set dsPolyline = dsSketchMgr.InsertPolyline2D(coordinates, closed)
'Construct four Circles
Dim centerX As Double
centerX = 3.5
Dim centerY As Double
centerY = 3.5
Dim centerZ As Double
centerZ = 0#
Dim radius As Double
radius = 0.7
Dim dsFirstCircle As DraftSight.Circle
Set dsFirstCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 6.5
Dim dsSecondCircle As DraftSight.Circle
Set dsSecondCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 6.5
centerY = 6.5
Dim dsThirdCircle As DraftSight.Circle
Set dsThirdCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 3.5
Dim dsFourthCircle As DraftSight.Circle
Set dsFourthCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
'Add aligned linear Dimensions
Dim extLine1Point(2) As Double
extLine1Point(0) = 2
extLine1Point(1) = 2
extLine1Point(2) = 0
Dim extLine2Point(2) As Double
extLine2Point(0) = 8
extLine2Point(1) = 2
extLine2Point(2) = 0
Dim dimLinePoint(2) As Double
dimLinePoint(0) = 5
dimLinePoint(1) = 1
dimLinePoint(2) = 0
Dim dimensionTextOverride As String
dimensionTextOverride = ""
Dim dsFirstAlignedDim As DraftSight.AlignedDimension
Set dsFirstAlignedDim = dsSketchMgr.InsertAlignedDimension(extLine1Point, extLine2Point, dimLinePoint, dimensionTextOverride)
extLine1Point(0) = 8
extLine1Point(1) = 2
extLine2Point(0) = 8
extLine2Point(1) = 8
dimLinePoint(0) = 9
dimLinePoint(1) = 5
Dim dsSecondAlignedDim As DraftSight.AlignedDimension
Set dsSecondAlignedDim = dsSketchMgr.InsertAlignedDimension(extLine1Point, extLine2Point, dimLinePoint, dimensionTextOverride)
'Add ordinate Dimensions
Dim measure As dsOrdinateDimensionMeasure_e
measure = dsOrdinateDimensionMeasure_e.dsOrdinateDimensionMeasure_UseYAxis
Dim datumPosition(2) As Double
datumPosition(0) = 2
datumPosition(1) = 2
datumPosition(2) = 0
Dim dimPosition(2) As Double
dimPosition(0) = 1
dimPosition(1) = 2
dimPosition(2) = 0
Dim dsFirstOrdinateDim As DraftSight.OrdinateDimension
Set dsFirstOrdinateDim = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure)
datumPosition(1) = 8
dimPosition(1) = 8
Dim dsSecondOrdinateDim As DraftSight.OrdinateDimension
Set dsSecondOrdinateDim = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure)
'Add Leader
Dim leaderCoordinates(5) As Double
leaderCoordinates(0) = 6.5
leaderCoordinates(1) = 7.2
leaderCoordinates(2) = 0
leaderCoordinates(3) = 7.7
leaderCoordinates(4) = 8.6
leaderCoordinates(5) = 0
Dim noteWidth As Double
noteWidth = 1#
Dim noteText As String
noteText = "4X"
Dim dsLeader As DraftSight.Leader
Set dsLeader = dsSketchMgr.InsertLeader(leaderCoordinates, noteWidth, noteText)
'Add a geometric tolerance
Dim tolerancePosition(2) As Double
tolerancePosition(0) = 8.2
tolerancePosition(1) = 8.6
tolerancePosition(2) = 0
Dim textString As String
textString = "{\Fgdt;j}%%v{\Fgdt;n}0.7{\Fgdt;m}"
Dim dsTolerance As DraftSight.Tolerance
Set dsTolerance = dsSketchMgr.InsertTolerance(tolerancePosition, textString)
'Zoom to fit
dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
End Sub