Create Mathematical Circular Arcs Example (VBA)
This example shows how to create mathematical circular Arcs.
'-------------------------------------------------------------
' 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.
' 5. 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.
'----------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
'Connects to DraftSight application
Set dsApp = GetObject(, "DraftSight.Application")
'Aborts any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'Gets 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
Dim dsMathUtility As DraftSight.MathUtility
Set dsMathUtility = dsApp.GetMathUtility()
'Creates mathematical circular Arc
Dim dsCenter As DraftSight.MathPoint
Set dsCenter = dsMathUtility.CreatePoint(3#, 7#, 0#)
Dim dsNormal As DraftSight.MathVector
Set dsNormal = dsMathUtility.CreateVector(1#, 0#, 0#)
Dim dsRadius As Double
dsRadius = 2
Dim RefVector As DraftSight.MathVector
Set RefVector = dsMathUtility.CreateVector(1#, 0#, 0#)
Dim dsMathCircArc As DraftSight.MathCircArc
Set dsMathCircArc = dsMathUtility.CreateCircArc(dsCenter, dsNormal, RefVector, dsRadius, 20, 45)
'Gets point on mathematical circular Arc
'closest to this point
Dim point As DraftSight.MathPoint
Set point = dsMathUtility.CreatePoint(3#, 7#, 0#)
Dim closestPoint As DraftSight.MathPoint
Set closestPoint = dsMathCircArc.GetClosestPointTo(point)
Dim X As Double
Dim Y As Double
Dim Z As Double
closestPoint.GetPosition X, Y, Z
MsgBox ("Closest point of (3, 7, 0) is (" & X & ", " & Y & ", " & Z & ")")
'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 DraftSight.MathPoint
Set center = dsMathUtility.CreatePoint(2#, 3.1, 0#)
Dim normal As DraftSight.MathVector
Set normal = dsMathUtility.CreateVector(1#, 0#, 0#)
Dim radius As Double
radius = 3#
Dim dsCircle As DraftSight.MathCircArc
Set dsCircle = dsMathUtility.CreateCircle(center, normal, radius)
End Sub