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