Hide Table of Contents

Create and Apply DimensionStyle Example (VB.NET)

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


Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Create and Apply DimensionStyle Example (VB.NET)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2023 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.