从 AutoCAD ActiveX Automation 传回的数组信息是以变量传回的。如果知道数组的数据类型,可以使用数组方式访问变量。如果不知道变量中包含的数据类型,请使用 VBA 函数 VarType 或 Typename。这些函数返回变量中数据的类型。如果需要遍历数组,可以使用 VBA 的 For Each 语句。
以下代码示范如何计算用户输入的两点之间的距离。在本例中,数据类型是已知的,因为所有的坐标值均为双精度数。三维坐标值是一个包含三个元素的双精度数组,而二维坐标值是一个包含两个元素的双精度数组。
Sub Ch2_CalculateDistance()
Dim point1 As Variant
Dim point2 As Variant
' 获取用户输入的点
point1 = ThisDrawing.Utility.GetPoint _
(, vbCrLf & "First point: ")
point2 = ThisDrawing.Utility.GetPoint _
(point1, vbCrLf & "Second point: ")
' 计算 point1 和 point2 之间的距离
Dim x As Double, y As Double, z As Double
Dim dist As Double
x = point1(0) - point2(0)
y = point1(1) - point2(1)
z = point1(2) - point2(2)
dist = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
' 显示计算出来的距离
MsgBox "The distance between the points is: " _
& dist, , "Calculate Distance"
End Sub