<!-- dml_analysis_modes.dtd

DML: Dimensional Markup Language - Version 2.0

Analysis modes that are to be used by an analyze application
when this file is used as input for an analysis.

When calculating features with diameter, length and width, two numbers
are typically produced when evaluating point data. In the case of a cylinder
we can calculate a cylinder that is on the outside of all the measured points
and one that is on the inside (circumscribed and inscribed). Which of the
two numbers is used for the feature size is defined by the limits_of_size
attribute. The settings are:

FUNCTIONAL: Use the functional size. For a hole (inner) this would be the
minimum size calculated. For a pin, it would be the larger size.
FUNCTIONAL refers to the fact that we use a size that represents
the functional use of the feature.

MRS_AVERAGE: Average calculates an average size by adding the minimum and maximum
measured sizes and dividing by 2. This gives results similar to
most CMM analysis software.

TWO_POINT: Indicates both values should be reported in the results. Both values
must also fall within the minimum and maximum allowable tolerance for
the feature when determining if the tolerance passed or failed. This
is the most conservative approach.
-->
<!ENTITY % limits_of_size
"setting (FUNCTIONAL | MRS_AVERAGE | TWO_POINT) #IMPLIED"
>
<!ELEMENT limits_of_size EMPTY>
<!ATTLIST limits_of_size
%limits_of_size;
>

<!--
AXIS_METHODS: Method used to calculate the axis (center) of axial features.

LEAST_SQUARES: Use a least squares fit on the point data to calculate the
feature axis. This is how most CMM analysis packages work.

XSECT CENTERS: Calculate the least squares fit for each circular cross section
then using the cross section center points calculate a least
squares line through them.

MIN_RAD: Minimum Radial Separation. Calculate the maximum cylinder and minimum
cylinder which encompasses the measured point data. ANSI B89.31-1972
describes the technique. This gives a good approximation to physical
hard gauges.

-->
<!ENTITY % axis_method
"setting (MIN_RAD | LEAST_SQUARES | XSECT_CENTERS) #IMPLIED"
>
<!ELEMENT axis_method EMPTY>
<!ATTLIST axis_method
%axis_method;
>

<!--
When doing contact measurement of a cylindrical feature (with a CMM)
it is not possible to measure the very top of the cylinder. This
flag is used to indicate if the calculated axis should be extrapolated
(projected) so the axis endpoints represent the actual feature endpoints.
When set to NO the top and bottom cross section measurements will be
used to calculate the axis endpoints. When set to YES< the axis endpoints
will be extrapolated to the design length of the axis.
-->

<!ENTITY % extrapolate_axis
"setting (YES | NO) #IMPLIED"
>
<!ELEMENT extrapolate_axis EMPTY>
<!ATTLIST extrapolate_axis
%extrapolate_axis;
>

<!--
Planar options used for datum calculations. When HIGH_POINT is used
the datum plane is defined by the three highest measured points on
the datum feature (since these points determine where the surface
will rest against a mating part). When set to BEST_FIT the datum is
calculated using a least squares fit.
-->
<!ENTITY % planar_option
"setting (HIGH_POINT | BEST_FIT) #IMPLIED"
>
<!ELEMENT planar_option EMPTY>
<!ATTLIST planar_option
%planar_option;
>
<!ENTITY % surface_profile_method
"setting (STANDARD | MINDEV_3D | LSQ_NRM | LSQ_3D) #IMPLIED"
>
<!ELEMENT surface_profile_method EMPTY>
<!ATTLIST surface_profile_method
%surface_profile_method;
>
<!ENTITY % surface_profile_offset
"setting (STANDARD | INNER | OUTER) #IMPLIED"
>
<!ELEMENT surface_profile_offset EMPTY>
<!ATTLIST surface_profile_offset
%surface_profile_offset;
>
<!--
For the following feature data fitting modes:
LSTSQR - Least squares fit
MINMAX - Min/max two sided fit
MINCIR - Minimum size circumscribed fit
MAXINS - Maximum size inscribed fit
BSPLIN - Bicubic spline fit
NURBS - Non-Uniform Rational B-Splines fit
BEZIER - Bezier spline fit
-->
<!--
Feature data fitting mode for arc, ellipse, line, plane, rectangle
-->
<!ELEMENT aelpr_analysis EMPTY>
<!ATTLIST aelpr_analysis
setting (LSTSQR | MINMAX) #IMPLIED
>
<!--
Feature data fitting mode for circle, cone, cylinder, parpln, sphere, torus
-->
<!ELEMENT cccpst_analysis EMPTY>
<!ATTLIST cccpst_analysis
setting (LSTSQR | MINMAX | MINCIR | MAXINS) #IMPLIED
>
<!--
Feature data fitting mode for curve
-->
<!ELEMENT curve_analysis EMPTY>
<!ATTLIST curve_analysis
setting (LSTSQR | MINMAX | BSPLIN) #IMPLIED
>
<!--
Feature data fitting mode for surface
-->
<!ELEMENT surface_analysis EMPTY>
<!ATTLIST surface_analysis
setting (LSTSQR | MINMAX | NURBS | BEZIER) #IMPLIED
>
<!--
These modes are to be used if individual features or tolerances
do not specify analysis modes.
-->
<!ELEMENT feature_analysis_modes_default (aelpr_analysis?, cccpst_analysis?,
curve_analysis?, surface_analysis?,
limits_of_size?, axis_method?,
extrapolate_axis?)
>
<!ELEMENT tolerance_analysis_modes_default (planar_option?,
surface_profile_method?,
surface_profile_offset?)>
<!--
General element for use by features or tolerances.
-->
<!ELEMENT feature_analysis_modes (aelpr_analysis?, cccpst_analysis?,
curve_analysis?, surface_analysis?,
limits_of_size?, axis_method?,
extrapolate_axis?)
>
<!ELEMENT tolerance_analysis_modes (planar_option?,
surface_profile_method?,
surface_profile_offset?)>
<!--
DOF (Degrees Of Freedom) settings for the analysis.
Each DOF may be set to ON, OFF, or LIMITS
(use the specified upper and lower limit values). The
limit values are interpreted as two points along the
specified axis (for translations), or as two angles
around the specified axis (for rotations).
-->
<!ENTITY % dof_att
"setting (ON | OFF | LIMITS) #IMPLIED
lower_limit CDATA #IMPLIED
upper_limit CDATA #IMPLIED"
>
<!ELEMENT transx EMPTY>
<!ATTLIST transx
%dof_att;
>
<!ELEMENT transy EMPTY>
<!ATTLIST transy
%dof_att;
>
<!ELEMENT transz EMPTY>
<!ATTLIST transz
%dof_att;
>
<!ELEMENT rotx EMPTY>
<!ATTLIST rotx
%dof_att;
>
<!ELEMENT roty EMPTY>
<!ATTLIST roty
%dof_att;
>
<!ELEMENT rotz EMPTY>
<!ATTLIST rotz
%dof_att;
>

<!ELEMENT analysis_dofs (transx, transy, transz,
rotx, roty, rotz)
>

<!ELEMENT analysis_dofs_default (transx?, transy?, transz?,
rotx?, roty?, rotz?)
>