Compute distance between objects
The script below shows how you can calculate the distance between two objects using the scripting language.
The script works by using the TransformPosition command, which takes a starting coordinate system, a new coordinate system and a position vector defined by its x, y, and z components. The x, y and z values, input to the TransformPosition command, are modified in place (by reference) to convert the vector from the starting coordinate system to the new coordinate system.
In this manner you can transform the vertex location of a surface (as an example) to global coordinates by using the syntax below, where n is the node number of the surface:
Option Explicit Type T_POINT n As Long x As Double y As Double z As Double End Type Sub Main Dim p1 As T_POINT, p2 As T_POINT 'Node number and point on the first object p1.n = FindFullName( "Geometry.Plane" ) p1.x = 0 p1.y = 0 p1.z = 0 'Node number and point on the second object p2.n = FindFullName( "Geometry.Plane 1" ) p2.x = 0 p2.y = 0 p2.z = 0 Print "Distance between objects is " & CalcDistance(p1, p2) & " " & GetUnits() End Sub Function CalcDistance( ByVal p1 As Variant, _ ByVal p2 As Variant ) As Double 'Convert the first point from local to global TransformPosition(p1.n, -1, p1.x, p1.y, p1.z) 'Convert the second point from local to global TransformPosition(p2.n, -1, p2.x, p2.y, p2.z) 'Compute the length of the vector Dim dist As Double GetLength3D(p2.x-p1.x, p2.y-p1.y, p2.z-p1.z, dist) 'Return the length Return dist End Function<br>
Example File: ComputeDistanceExample.frd