This record consists of three fields: the translations along the local X, Y and Z axes, respectively. There is no standard convention for the appearance of this record, ACE seems to employ a slightly different format for each circumstance, but the most common is:
<spc><spc>XTran<spc>YTran<spc>ZTran<nl>
where XTran is a double containing the local X-axis translation, YTran is a double containing the local Y-axis translation, ZTran is a double containing the local Z-axis translation, <spc> is the space character and <nl> is the newline sequence.
Note the term "local" when referring to the translation along each axis; the translation is dependent upon the current orientation of the cell. Refer to the section on rotation for additional information. However, translations are applied before the rotation and scaling transformations from the same geometry record.
If geometry data is not present, then the translation values all default to 0.
This record consists of four fields, of which the most common format is as follows:
XYZOrder<spc>Rot1<spc>Rot2<spc>Rot3<nl>
where XYZOrder is an integer indicating the XYZ rotation order (see below), and Rot1, Rot2 and Rot3 are all doubles identifying a rotation, in degrees, about a local axis; which axis is governed by XYZOrder. <spc> is the space character and <nl> is the newline sequence. Note that positive rotation values indicate counter-clockwise rotation, and negative values indicate clockwise rotation.
Note the term "local" when referring to the rotation about an axis; the rotation is dependent upon the current orientation of the cell. For example, if a cell's parent is rotated 90 degrees about the Z-axis, then the local X-axis of all child cells is aligned with the global Y-axis, and the local Y-axis of all child cells is aligned with the global negative X-axis. Note also that rotations are applied after any required translation, but before the scaling transformation, from the same geometry record.
XYZOrder has one of the following values, with the corresponding interpretation:
| Value | X, Y, Z Order |
|---|---|
| 0 | X, then Y, then Z |
| 1 | X, then Z, then Y |
| 2 | Y, then X, then Z |
| 3 | Y, then Z, then X |
| 4 | Z, then X, then Y |
| 5 | Z, then Y, then X |
For example, if the XYZ order is 3, then a rotation of Rot1 is applied to the Y-axis, Rot2 to the Z-axis and Rot3 to the X-axis. These rotations are applied in the order indicated, with the cell's local orientation changing with each.
If geometry data is not present, then the XYZ order defaults to 0 (X, then Y, then Z) and the rotations all default to 0.0 degrees.
This record consists of three fields, of which the most common format is as follows:
<spc><spc>XScale<spc>YScale<spc>ZScale<nl>
where XScale is a double containing the local X-axis scaling, YScale is a double containing the local Y-axis scaling, ZScale is a double containing the local Z-axis scaling, <spc> is the space character and <nl> is the newline sequence.
The specified scaling is applied, as a multiplier, to all dimensions along the corresponding local axis.
If geometry data is not present, then the scaling values all default to 1. Scaling transformations are applied after all translation and rotation transformations from the same geometry record.
In the following example, a cell is translated such that it's local origin occupies the global co-ordinates (3.5, -2.0, -10.0), rotated such that the local X-axis is aligned with the global Y-axis and scaled so that the length of the object is changed by a factor of 4.2 - assuming that no parent object applies any geometry translations.
3.6 -2.0 -10.0 0 0.0 0.0 90.0 4.2 1.0 1.0