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 VB.NET Windows console project. ' 2. Copy and paste this example into the VB.NET IDE. ' 3. Add a reference to: ' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll ' 4. Add references to System and System.Forms. ' 5. Start DraftSight and open a document. ' 6. Click Start Debugging. ' ' Postconditions: ' 1. A closed PolyLine and four Circles are constructed. ' 2. Aligned linear and ordinate Dimensions are created. '------------------------------------------------------------
Imports System.IO Imports DraftSight.Interop.dsAutomation
Module Module1
Dim dsApp As Application
Sub Main()
'Connect to DraftSight application
dsApp = GetObject(, "DraftSight.Application")
dsApp.AbortRunningCommand() ' abort any command currently running in DraftSight to avoid nested commands
'Get active document
Dim dsDoc As Document = dsApp.GetActiveDocument()
If dsDoc Is Nothing Then
MsgBox("There are no open documents in DraftSight.")
Return
End If
'Get model space
Dim dsModel As Model = dsDoc.GetModel()
'Get sketch manager
Dim dsSketchMgr As SketchManager = dsModel.GetSketchManager()
'Construct a closed PolyLine
Dim coordinates As Double() = New Double() {2, 2, 8, 2, 8, 8, 2, 8}
Dim closed As Boolean = True
Dim dsPolyline As PolyLine = dsSketchMgr.InsertPolyline2D(coordinates, closed)
'Construct four Circles
Dim centerX As Double = 3.5
Dim centerY As Double = 3.5
Dim centerZ As Double = 0.0
Dim radius As Double = 0.7
Dim dsFirstCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 6.5
Dim dsSecondCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 6.5
centerY = 6.5
Dim dsThirdCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
centerX = 3.5
Dim dsFourthCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
'Add aligned linear Dimensions
Dim extLine1Point As Double() = New Double() {2, 2, 0}
Dim extLine2Point As Double() = New Double() {8, 2, 0}
Dim dimLinePoint As Double() = New Double() {5, 1, 0}
Dim dimensionTextOverride As String = ""
Dim dsFirstAlignedDim As AlignedDimension = 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 AlignedDimension = dsSketchMgr.InsertAlignedDimension(extLine1Point, extLine2Point, dimLinePoint, dimensionTextOverride)
'Add ordinate Dimensions
Dim measure As dsOrdinateDimensionMeasure_e = dsOrdinateDimensionMeasure_e.dsOrdinateDimensionMeasure_UseYAxis
Dim datumPosition As Double() = New Double() {2, 2, 0}
Dim dimPosition As Double() = New Double() {1, 2, 0}
Dim dsFirstOrdinateDim As OrdinateDimension = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure)
datumPosition(1) = 8
dimPosition(1) = 8
Dim dsSecondOrdinateDim As OrdinateDimension = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure)
'Add Leader
Dim leaderCoordinates As Double() = New Double() {6.5, 7.2, 0, 7.7, 8.6, 0}
Dim noteWidth As Double = 1.0
Dim noteText As String = "4X"
Dim dsLeader As Leader = dsSketchMgr.InsertLeader(leaderCoordinates, noteWidth, noteText)
'Add a geometric tolerance
Dim tolerancePosition As Double() = New Double() {8.2, 8.6, 0}
Dim textString As String = "{\Fgdt;j}%%v{\Fgdt;n}0.7{\Fgdt;m}"
Dim dsTolerance As Tolerance = dsSketchMgr.InsertTolerance(tolerancePosition, textString)
'Zoom to fit
dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing)
End Sub
End Module