TranslateCoordinates 方法可以将点或位移从一个坐标系转换到另一个坐标系。称为 OriginalPoint 的点参数可以被解释为三维点或三维位移矢量。此参数由 Boolean 参数 Disp 来区分。如果 Disp 参数设置为 TRUE,OriginalPoint 参数将被视为位移矢量;否则视为点。两个以上的参数可以确定 OriginalPoint 所在的坐标系,以及 OriginalPoint 将要转换到的坐标系。可以在 From 和 To 参数中指定以下 AutoCAD 坐标系:
本样例在模型空间中创建一条多段线。然后,以 OCS 和 WCS 坐标显示多段线的第一个顶点。从 OCS 转换为 WCS 时,需要在 TranslateCoordinates 方法的最后一个参数中提供 OCS 法线。
Sub Ch8_TranslateCoordinates()
' 在模型空间中创建多段线。
Dim plineObj As AcadPolyline
Dim points(0 To 14) As Double
' 定义二维多段线的点
points(0) = 1: points(1) = 1: points(2) = 0
points(3) = 1: points(4) = 2: points(5) = 0
points(6) = 2: points(7) = 2: points(8) = 0
points(9) = 3: points(10) = 2: points(11) = 0
points(12) = 4: points(13) = 4: points(14) = 0
' 在模型空间中创建一个优化多段线对象
Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points)
' 找出多段线第一个顶点的
' X 和 Y 坐标
Dim firstVertex As Variant
firstVertex = plineObj.Coordinate(0)
' 使用 elevation 特性找出多段线
' 的 Z 坐标
firstVertex(2) = plineObj.Elevation
' 更改多段线的法线,使
' 坐标系之间的差值
' 更加明显。
Dim plineNormal(0 To 2) As Double
plineNormal(0) = 0#
plineNormal(1) = 1#
plineNormal(2) = 2#
plineObj.Normal = plineNormal
' 将 OCS 坐标转换为 WCS
Dim coordinateWCS As Variant
coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _
(firstVertex, acOCS, acWorld, False, plineNormal)
' 显示点的坐标
MsgBox "The first vertex has the following coordinates:" _
& vbCrLf & "OCS: " & firstVertex(0) & ", " & _
firstVertex(1) & ", " & firstVertex(2) & vbCrLf & _
"WCS: " & coordinateWCS(0) & ", " & _
coordinateWCS(1) & ", " & coordinateWCS(2)
End Sub