The TranslateCoordinates method translates a point or a displacement from one coordinate system to another.
A point argument, called OriginalPoint, can be interpreted as either a 3D point or a 3D displacement vector. This argument is distinguished by the Boolean argument, Disp. If the Disp argument is set to TRUE, the OriginalPoint argument is treated as a displacement vector; otherwise, it is treated as a point. Two more arguments determine which coordinate system the OriginalPoint is from, and to which coordinate system the OriginalPoint is to be converted. The following AutoCAD coordinate systems can be specified in the From and To arguments:
When converting coordinates to or from the OCS you must enter the normal for the OCS in the final argument of the TranslateCoordinates function.
This example creates a polyline in model space. The first vertex for the polyline is then displayed in both the OCS and WCS coordinates. The conversion from OCS to WCS requires the normal for the OCS be placed in the last argument of the TranslateCoordinates method.
Sub Ch8_TranslateCoordinates() ' Create a polyline in model space. Dim plineObj As AcadPolyline Dim points(0 To 14) As Double ' Define the 2D polyline points 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 ' Create a light weight Polyline object in model space Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points) ' Find the X and Y coordinates of the ' first vertex of the polyline Dim firstVertex As Variant firstVertex = plineObj.Coordinate(0) ' Find the Z coordinate for the polyline ' using the elevation property firstVertex(2) = plineObj.Elevation ' Change the normal for the pline so that the ' difference between the coordinate systems ' is obvious. Dim plineNormal(0 To 2) As Double plineNormal(0) = 0# plineNormal(1) = 1# plineNormal(2) = 2# plineObj.Normal = plineNormal ' Translate the OCS coordinate into WCS Dim coordinateWCS As Variant coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _ (firstVertex, acOCS, acWorld, False, plineNormal) ' Display the coordinates of the point 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