Create Mathematical Circular Arcs Example (VB.NET)

This example shows how to create mathematical circular Arcs.

'--------------------------------------------------------------
' 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 a reference to System.Windows.Forms.
' 5. Start DraftSight.
' 6. Press F5.
'
' Postconditions: 
' 1. Connects to DraftSight.
' 2. Gets the active document.
' 3. Creates a mathematical circular Arc.
' 4. Gets the point on the mathematical circular Arc
'    closest to a mathematical point. Click OK to close
'    the message box.
' 5. Sets the radius for the mathematical circular Arc.
' 6. Creates a mathematical circular Arc.
' 7. Sets the radius for the mathematical circular Arc.
'----------------------------------------------------------------
 
Imports System
Imports DraftSight.Interop.dsAutomation
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
 
Module Module1
 
    Sub Main()
        Dim dsApp As DraftSight.Interop.dsAutomation.Application
 
        'Connects to DraftSight application
        dsApp = DirectCast(Marshal.GetActiveObject("DraftSight.Application"), DraftSight.Interop.dsAutomation.Application)
 
        If dsApp Is Nothing Then
            Return
        End If
 
        'Aborts any command currently running in DraftSight
        'to avoid nested commands
        dsApp.AbortRunningCommand()
 
        'Gets active document
        Dim dsDoc As Document = dsApp.GetActiveDocument()
        If dsDoc Is Nothing Then
            MessageBox.Show("There are no open documents in DraftSight.")
            Return
        End If
 
        Dim dsMathUtility As MathUtility = dsApp.GetMathUtility()
 
        'Creates mathematical circular Arc
        Dim dsCenter As MathPoint = dsMathUtility.CreatePoint(3.0, 7.0, 0.0)
        Dim dsNormal As MathVector = dsMathUtility.CreateVector(1.0, 0.0, 0.0)
        Dim dsRadius As Double = 2
        Dim RefVector As MathVector = dsMathUtility.CreateVector(1.0, 0.0, 0.0)
        Dim dsMathCircArc As MathCircArc = dsMathUtility.CreateCircArc(dsCenter, dsNormal, RefVector, dsRadius, 20, 45)
 
        'Gets point on mathematical circular Arc
        'closest to this point
        Dim point As MathPoint = dsMathUtility.CreatePoint(3.0, 7.0, 0.0)
        Dim closestPoint As MathPoint = dsMathCircArc.GetClosestPointTo(point)
        Dim X As Double, Y As Double, Z As Double
        closestPoint.GetPosition(X, Y, Z)
        MessageBox.Show("Closest point of (3, 7, 0) is (" + CType(X, String) + ", " + CType(Y, String) + ", " + CType(Z, String) + ")")
        'Sets radius of mathematical circular Arc
        dsMathCircArc.Radius = 6.4
 
        'Creates mathematical circular Arc defining a Circle
        'using the specified center, normal, and radius 
        Dim center As MathPoint = dsMathUtility.CreatePoint(2.0, 3.1, 0.0)
        Dim normal As MathVector = dsMathUtility.CreateVector(1.0, 0.0, 0.0)
        Dim radius As Double = 3.0
        Dim circle As MathCircArc = dsMathUtility.CreateCircle(center, normal, radius)
 
    End Sub
End Module