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