Three points are selected by the user, a rotation point and two other points.

All points/strings/text etc in the job are rotated around the rotation point.

The rotation matrix is computed so that the three user selected points line in the horizontal plane.

Click on the point or enter the point number of the 3d rotation point. All other job points will be rotated around this point.

Click on a point or enter the point number of the required point. The job will be rotated in 3d so that the height value of this point is the same as the rotation point.

Click on a point or enter the point number of the required point. The job will be rotated in 3d so that the height value of this point is the same as the rotation point.

To rotate points in 3d you need X,Y and Z values.

For points without a Z value, the program will use the Z of the nearest point with a Z value.

For other items which do not have Z values like string centroids, text itesm, it will use the Z value of the nearest point with a Z value.

From the origin point, 3D vectors are computed to each of the other two user points.

The vector product of these two vectors is a vector normal to the plane formed by the three points.

The rotation matrix to rotate the plane to the horizontal is then calculated from the values in the vector normal to the plane.

The system works best if the datum points are well spaced and if the angle between the vectors from the origin point to the other two points is close to 90 degrees.