This example shows how to create, activate, and apply a new DimensionStyle. This example also shows how to create arc length, jogged, rotated, radius, and diameter Dimensions for circles, arcs, and a line.
'------------------------------------------------------------- ' Preconditions: ' 1. Create a VB.NET Windows console project. ' 2. Copy and paste this project into the VB.NET IDE. ' 3. Add a reference to: ' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll ' 4. Set a breakpoint at: ' dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); ' 5. Start DraftSight and open a document. ' 6. Click Start Debugging. ' ' Postconditions: ' 1. A new DimensionStyle named SampleDimStyle is created and ' activated. ' 2. Arc length, jogged, rotated, radius, and diameter dimensions ' are created for circles, arcs, and a line, using the new ' DimensionStyle. ' 3. Examine the Output or Immediate window. ' 4. Click Continue. ' 5. Examine the drawing. '------------------------------------------------------------
Imports System.IO Imports DraftSight.Interop.dsAutomation
Module Module1
Dim dsApp As DraftSight.Interop.dsAutomation.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 DimensionStyle manager Dim dsDimStyleManager As DimensionStyleManager = dsDoc.GetDimensionStyleManager()
'Create DimensionStyle named SampleDimStyle Dim createDimStyleResult As dsCreateObjectResult_e Dim dimStyleName As String = "SampleDimStyle" Dim dsDimStyle As DimensionStyle = Nothing dsDimStyleManager.CreateDimensionStyle(dimStyleName, dsDimStyle, createDimStyleResult) If dsCreateObjectResult_e.dsCreateObjectResult_Error = createDimStyleResult OrElse dsCreateObjectResult_e.dsCreateObjectResult_AlreadyExists = createDimStyleResult OrElse dsDimStyle Is Nothing Then MsgBox("Failed to create " & dimStyleName & " DimensionStyle, or DimensionStyle already exists.") Return End If
SetDimensionStyleSettings(dsDimStyle)
'Activate DimensionStyle dsDimStyle.Activate()
'Get model space Dim dsModel As Model = dsDoc.GetModel()
'Get sketch manager Dim dsSketchMgr As SketchManager = dsModel.GetSketchManager()
'Draw arc length Dimension DrawArcLengthDimension(dsSketchMgr)
'Draw jogged Dimension for circle and arc DrawJoggedDimension(dsSketchMgr)
'Draw rotated Dimension DrawRotatedDimension(dsSketchMgr)
'Draw radius Dimension for circle and arc DrawRadialDimension(dsSketchMgr)
'Draw diameter Dimension for circle and arc DrawDiameterDimension(dsSketchMgr)
'Zoom to fit dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing) End Sub
Sub SetDimensionStyleSettings(ByVal dsDimStyle As DimensionStyle) 'Get DimensionStyle arrows options Dim dsArrowsDimStyleOptions As DimensionStyleArrowsOptions = dsDimStyle.GetDimensionStyleArrowsOptions()
'Set start and end arrow types dsArrowsDimStyleOptions.SetStartArrow(dsDimensionArrowType_e.dsDimensionArrowType_ClosedBlank, String.Empty) dsArrowsDimStyleOptions.SetEndArrow(dsDimensionArrowType_e.dsDimensionArrowType_ClosedBlank, String.Empty)
'Get DimensionStyle line options Dim dsLineDimStyleOptions As DimensionStyleLineOptions = dsDimStyle.GetDimensionStyleLineOptions()
'Set Dimension line color Dim dsColor As Color = dsLineDimStyleOptions.DimensionLineColor dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Green) dsLineDimStyleOptions.DimensionLineColor = dsColor
'Set extension line color dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Yellow) dsLineDimStyleOptions.ExtensionLineColor = dsColor
'Get DimensionStyle radius and diameter Dimension options Dim dsRadialAndDiameterDimStyleOptions As DimensionStyleRadialDiameterDimensionOptions = dsDimStyle.GetDimensionStyleRadialDiameterDimensionOptions()
'Set jog angle 45 degrees (in radians) dsRadialAndDiameterDimStyleOptions.RadiusDimensionJogAngle = Math.PI / 4
'Set center mark Dim markSize As Double = 0.05 dsRadialAndDiameterDimStyleOptions.SetCenterMarkDisplay(dsDimensionCenterMarkDisplay_e.dsDimensionCenterMarkDisplay_AsMark, markSize)
'Get Dimension style text options Dim dsTextOptions As DimensionStyleTextOptions = dsDimStyle.GetDimensionStyleTextOptions()
'Frame Dimension text dsTextOptions.FrameDimensionText = True
'Set text position dsTextOptions.HorizontalPosition = dsDimensionTextHorizontalPosition_e.dsDimensionTextHorizontalPosition_Centered dsTextOptions.VerticalPosition = dsDimensionTextVerticalPosition_e.dsDimensionTextVerticalPosition_Centered
'Set text alignment dsTextOptions.Alignment = dsDimensionTextAlignment_e.dsDimensionTextAlignment_AlignWithDimensionLines End Sub
Sub DrawArcLengthDimension(ByVal dsSketchMgr As SketchManager) 'Add arc to drawing Dim centerX As Double = -8 Dim centerY As Double = 1 Dim centerZ As Double = 0 Dim radius As Double = 5 Dim startAngle As Double = Math.PI / 6 Dim endAngle As Double = Math.PI Dim dsArc As CircleArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, radius, startAngle, endAngle)
'Add arc length Dimension Dim dimensionPosition As Double() = New Double() {-6, 6, 0} Dim dimensionTextOverride As String = String.Empty Dim dsArcLengthDim As ArcLengthDimension = dsSketchMgr.InsertArcLengthDimension(dsArc, dimensionPosition, dimensionTextOverride)
'Print information about arc length Dimension PrintArcLengthDimProperties(dsArcLengthDim)
'Add a partial arc length Dimension Dim firstPoint As Double() = New Double() {-4, 3, 0} Dim secondPoint As Double() = New Double() {-7, 6, 0} dimensionPosition(0) = -6 dimensionPosition(1) = 7 Dim dsArcLengthPartialDim As ArcLengthDimension = dsSketchMgr.InsertArcLengthDimensionPartial(dsArc, firstPoint, secondPoint, dimensionPosition, dimensionTextOverride)
'Print information about partial arc length Dimension PrintArcLengthDimProperties(dsArcLengthDim) End Sub
Sub DrawJoggedDimension(ByVal dsSketchMgr As SketchManager) 'Draw a circle Dim centerX As Double = -7, centerY As Double = -5, centerZ As Double = 0 Dim radius As Double = 3 Dim dsCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
'Add jogged Dimension to circle Dim centerPositionOverride As Double() = New Double() {-12, -8, 0} Dim jogLinePosition As Double() = New Double() {-11, -8, 0} Dim dimensionPosition As Double() = New Double() {-10, -7.5, 0} Dim dimensionTextOverride As String = String.Empty Dim dsJoggedDimForCircle As JoggedDimension = dsSketchMgr.InsertJoggedDimensionCircle(dsCircle, centerPositionOverride, jogLinePosition, dimensionPosition, dimensionTextOverride)
'Print information about jogged Dimension PrintJoggedDimProperties(dsJoggedDimForCircle)
'Draw an arc centerX = 2 centerY = -6 Dim arcRadius As Double = 3 Dim startAngle As Double = 0.0 Dim endAngle As Double = Math.PI / 3 Dim dsArc As CircleArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle)
'Add jogged Dimension to arc centerPositionOverride(0) = 7 centerPositionOverride(1) = -3 jogLinePosition(0) = 7 jogLinePosition(1) = -4 dimensionPosition(0) = 5.5 dimensionPosition(1) = -4.5 Dim dsJoggedDimForArc As JoggedDimension = dsSketchMgr.InsertJoggedDimensionArc(dsArc, centerPositionOverride, jogLinePosition, dimensionPosition, dimensionTextOverride)
'Print information about jogged Dimension PrintJoggedDimProperties(dsJoggedDimForArc) End Sub
Sub DrawRadialDimension(ByVal dsSketchMgr As SketchManager) 'Draw a circle Dim centerX As Double = 2, centerY As Double = 2, centerZ As Double = 0 Dim radius As Double = 3 Dim dsCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
'Draw an arc centerX = 10 centerY = 2 Dim arcRadius As Double = 3 Dim startAngle As Double = 0.0 Dim endAngle As Double = Math.PI / 3 Dim dsArc As CircleArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle)
'Add radius Dimension to circle Dim dimPosition As Double() = New Double() {7, 6, 0} Dim dimTextOverride As String = String.Empty Dim dsRadialCircleDim As RadialDimension = dsSketchMgr.InsertRadialDimensionCircle(dsCircle, dimPosition, dimTextOverride)
'Print information about radius Dimension PrintRadialDimProperties(dsRadialCircleDim)
'Add radius Dimension to arc dimPosition(0) = 16 dimPosition(1) = 3 Dim dsRadialArcDim As RadialDimension = dsSketchMgr.InsertRadialDimensionArc(dsArc, dimPosition, dimTextOverride)
'Print information about radius Dimension PrintRadialDimProperties(dsRadialArcDim) End Sub
Sub DrawDiameterDimension(ByVal dsSketchMgr As SketchManager) 'Draw a circle Dim centerX As Double = 2, centerY As Double = 2, centerZ As Double = 0 Dim radius As Double = 3 Dim dsCircle As Circle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius)
'Draw an arc centerX = 10 centerY = 2 Dim arcRadius As Double = 3 Dim startAngle As Double = 0.0 Dim endAngle As Double = Math.PI / 3 Dim dsArc As CircleArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle)
'Add diameter Dimension to circle Dim dimPosition As Double() = New Double() {3, 8, 0} 'No text override - empty string Dim dimTextOverride As String = String.Empty Dim dsDiameterCircleDim As DiameterDimension = dsSketchMgr.InsertDiameterDimensionCircle(dsCircle, dimPosition, dimTextOverride)
'Print information about diameter Dimension PrintDiameterDimProperties(dsDiameterCircleDim)
'Add diameter Dimension to arc dimPosition(0) = 14 dimPosition(1) = 6 Dim dsDiameterArcDim As DiameterDimension = dsSketchMgr.InsertDiameterDimensionArc(dsArc, dimPosition, dimTextOverride)
'Print information about diameter Dimension PrintDiameterDimProperties(dsDiameterArcDim) End Sub
Sub DrawRotatedDimension(ByVal dsSketchMgr As SketchManager) 'Draw line Dim startX As Double = 10 Dim startY As Double = -5 Dim startZ As Double = 0 Dim endX As Double = 14 Dim endY As Double = -5 Dim endZ As Double = 0 Dim dsLine As Line = dsSketchMgr.InsertLine(startX, startY, startZ, endX, endY, endZ)
'Draw rotated Dimension Dim extLine1Point As Double() = New Double() {startX, startY, startZ} Dim extLine2Point As Double() = New Double() {endX, endY, endZ} Dim dimensionLinePosition As Double() = New Double() {16, -6, 0} Dim dimTextOverride As String = String.Empty
'Angle 45 degrees (in radians) Dim rotationAngle As Double = Math.PI / 4 Dim dsRotatedDim As RotatedDimension = dsSketchMgr.InsertRotatedDimension(extLine1Point, extLine2Point, dimensionLinePosition, dimTextOverride, rotationAngle)
'Print information about rotated Dimension PrintRotatedDimProperties(dsRotatedDim) End Sub
Sub PrintArcLengthDimProperties(ByVal dsArcLengthDim As ArcLengthDimension) Debug.Print(Environment.NewLine & " Arc length Dimension parameters...")
'Get general Dimension object, which contains common Dimension properties, 'and print them Dim dsGeneralDim As GeneralDimension = dsArcLengthDim.GetGeneralDimension() PrintGeneralDimProperties(dsGeneralDim)
'Print specific parameters for arc length Dimension Debug.Print(" ArcSymbolType = " & Convert.ToString(dsArcLengthDim.ArcSymbolType)) Debug.Print(" HasLeader = " & Convert.ToString(dsArcLengthDim.HasLeader)) Debug.Print(" IsPartial = " & Convert.ToString(dsArcLengthDim.IsPartial))
Dim x As Double, y As Double, z As Double 'Get center point dsArcLengthDim.GetCenterPoint(x, y, z) Debug.Print(" Center point (" & x & "," & y & "," & z & ")")
'Get arc point dsArcLengthDim.GetArcPoint(x, y, z) Debug.Print(" Arc point (" & x & "," & y & "," & z & ")")
'Get extension line 1 point dsArcLengthDim.GetExtensionLine1Point(x, y, z) Debug.Print(" Extension line 1 point (" & x & "," & y & "," & z & ")")
'Get extension line 2 point dsArcLengthDim.GetExtensionLine2Point(x, y, z) Debug.Print(" Extension line 2 point (" & x & "," & y & "," & z & ")") End Sub
Sub PrintRadialDimProperties(ByVal dsRadialDim As RadialDimension) Debug.Print(Environment.NewLine & " Radius Dimension parameters...")
'Get general Dimension object, which contains common Dimension properties, 'and print them Dim dsGeneralDim As GeneralDimension = dsRadialDim.GetGeneralDimension() PrintGeneralDimProperties(dsGeneralDim)
'Print specific parameters for radius Dimension Dim x As Double, y As Double, z As Double 'Get center point dsRadialDim.GetCenterPoint(x, y, z) Debug.Print(" Center point (" & x & "," & y & "," & z & ")")
'Get defining point dsRadialDim.GetDefiningPoint(x, y, z) Debug.Print(" Defining point (" & x & "," & y & "," & z & ")")
'Print leader length value Debug.Print(" Leader length = " & Convert.ToString(dsRadialDim.LeaderLength)) End Sub
Sub PrintDiameterDimProperties(ByVal dsDiameterDim As DiameterDimension) Debug.Print(Environment.NewLine & " Diameter Dimension parameters...")
'Get general Dimension object, which contains common Dimension properties, 'and print them Dim dsGeneralDim As GeneralDimension = dsDiameterDim.GetGeneralDimension() PrintGeneralDimProperties(dsGeneralDim)
'Print specific parameters for diameter Dimension Dim x As Double, y As Double, z As Double 'Get defining point dsDiameterDim.GetDefiningPoint(x, y, z) Debug.Print(" Defining point (" & x & "," & y & "," & z & ")")
'Get far defining point dsDiameterDim.GetFarDefiningPoint(x, y, z) Debug.Print(" Far defining point (" & x & "," & y & "," & z & ")")
'Print leader length value Debug.Print(" Leader length = " & Convert.ToString(dsDiameterDim.LeaderLength)) End Sub
Sub PrintJoggedDimProperties(ByVal dsJoggedDim As JoggedDimension) Debug.Print(Environment.NewLine & " Jogged Dimension parameters...")
'Get general Dimension object, which contains common Dimension properties, 'and print them Dim dsGeneralDim As GeneralDimension = dsJoggedDim.GetGeneralDimension() PrintGeneralDimProperties(dsGeneralDim)
'Print specific parameters for jogged Dimension Debug.Print(" Jog angle = " & Convert.ToString(dsJoggedDim.JogAngle))
Dim x As Double, y As Double, z As Double 'Get center point dsJoggedDim.GetCenterPoint(x, y, z) Debug.Print(" Center point (" & x & "," & y & "," & z & ")")
'Get chord point dsJoggedDim.GetChordPoint(x, y, z) Debug.Print(" Chord point (" & x & "," & y & "," & z & ")")
'Get jog point dsJoggedDim.GetJogPoint(x, y, z) Debug.Print(" Jog point (" & x & "," & y & "," & z & ")")
'Get override center point dsJoggedDim.GetOverrideCenterPoint(x, y, z) Debug.Print(" Override center point (" & x & "," & y & "," & z & ")") End Sub
Sub PrintRotatedDimProperties(ByVal dsRotatedDim As RotatedDimension) Debug.Print(Environment.NewLine & " Rotated Dimension parameters...")
'Get general Dimension object, which contains common Dimension properties, 'and print them Dim dsGeneralDim As GeneralDimension = dsRotatedDim.GetGeneralDimension() PrintGeneralDimProperties(dsGeneralDim)
'Print specific parameters for rotated Dimension Debug.Print(" Rotation angle = " & Convert.ToString(dsRotatedDim.Rotation))
Dim x As Double, y As Double, z As Double 'Get Dimension line point dsRotatedDim.GetDimensionLinePoint(x, y, z) Debug.Print(" Dimension line point (" & x & "," & y & "," & z & ")")
'Get extension line 1 point dsRotatedDim.GetExtensionLine1Point(x, y, z) Debug.Print(" Extension line 1 point (" & x & "," & y & "," & z & ")")
'Get extension line 2 point dsRotatedDim.GetExtensionLine2Point(x, y, z) Debug.Print(" Extension line 2 point (" & x & "," & y & "," & z & ")") End Sub
Sub PrintGeneralDimProperties(ByVal dsGeneralDim As GeneralDimension) 'Get general Dimension object, which contains common Dimension properties, 'and print them Debug.Print(" Dimension style = " & Convert.ToString(dsGeneralDim.DimensionStyle)) Debug.Print(" Handle = " & Convert.ToString(dsGeneralDim.Handle)) Debug.Print(" Measurement = " & dsGeneralDim.Measurement.ToString()) Debug.Print(" Related = " & dsGeneralDim.Related.ToString()) Debug.Print(" Text override = " & Convert.ToString(dsGeneralDim.TextOverride)) Debug.Print(" TextRotation = " & Convert.ToString(dsGeneralDim.TextRotation))
'Get text position Dim x As Double, y As Double dsGeneralDim.GetTextPosition(x, y) Debug.Print(" Text position (" & x & "," & y & ")") End Sub
End Module