Get Distance Between Two Math Points Example (VBA)
This example shows how to get the distance between two math points.
'-----------------------------------------------------------------------------
' 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 the DraftSight type library,
' install_dir\bin\dsAutomation.dll.
' 4. Start DraftSight.
' 5. Run the macro.
' 6. Select two points when prompted in the DraftSight command window.
'
' Postconditions: The distance between two math points is printed in
' the DraftSight command window.
'----------------------------------------------------------------
Option Explicit
Dim dsApp As DraftSight.Application
Sub Main()
'Connect to DraftSight
Set dsApp = GetObject(, "DraftSight.Application")
'Abort any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'Get 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
'Get math utility
Dim dsMathUtility As DraftSight.MathUtility
Set dsMathUtility = dsApp.GetMathUtility
'Get distance between two points
Call GetDistance(dsMathUtility)
End Sub
Sub GetDistance(dsMathUtility As DraftSight.MathUtility)
'Get command message
Dim dsCommandMessage As DraftSight.CommandMessage
Set dsCommandMessage = dsApp.GetCommandMessage
dsCommandMessage.PrintLine ("Get
distance between two points")
'Prompt to select the first point and
second points
'to calculate the distance between them
Dim firstX As Double, firstY As Double, firstZ As Double
Dim secondX As Double, secondY As Double, secondZ As Double
If dsCommandMessage.PromptForPoint("Specify the first
point", firstX, firstY, firstZ) And dsCommandMessage.PromptForPoint("Specify the
second point", secondX, secondY, secondZ) Then
'Create the first math point
Dim dsFirstMathPoint As
DraftSight.MathPoint
Set dsFirstMathPoint = dsMathUtility.CreatePoint(firstX,
firstY, firstZ)
'Create the second
math point
Dim dsSecondMathPoint As
DraftSight.MathPoint
Set dsSecondMathPoint =
dsMathUtility.CreatePoint(secondX, secondY, secondZ)
'Get distance
between points
Dim dsResultPoint1 As
DraftSight.MathPoint
Dim dsResultPoint2 As
DraftSight.MathPoint
Dim distance As Double
distance = dsMathUtility.Distance(dsFirstMathPoint,
dsSecondMathPoint, dsResultPoint1, dsResultPoint2)
'Get result point
cordinates
dsResultPoint1.GetPosition
firstX, firstY, firstZ
dsResultPoint2.GetPosition
secondX, secondY, secondZ
Dim message As
String
message = "The distance between " &
firstX & ", " & firstY & ", " & firstZ & " and " & secondX & ", " & secondY & ",
" & secondZ & " points is " & distance
dsCommandMessage.PrintLine
(message)
End If
End Sub