<!-- dml_features.dtd
DML: Dimensional Markup Language - Version 2.0
This file (DTD) defines DML feature elements.
All coordinates are in a common "part" coordinate system. An
optional coordinate system to use for reporting feature parameter
values (i.e. x,y,z coordinates) is used to transform results into
other coordinate systems.
All surface normal vectors point away from the material surface.
All vectors are normalized.
Units are specified in the file header and apply to all features
(can not specify units on a feature-by-feature basis).
When angles are used to define partial arcs or cylinders, the right-hand
rule is used to define direction. If the thumb of the right-hand
is placed in the direction of the specified surface normal, then the
fingers curl from the start point on the arc toward increasing angles.
-->
<!--
Include the DTD for analysis modes.
-->
<!ENTITY % analysis_modes_base SYSTEM "dml_analysis_modes.dtd">
%analysis_modes_base;
<!--
Inlcude the DTDs for tolerances and scanning.
-->
<!ENTITY % dir_tol_base SYSTEM "dml_tolerances.dtd">
%dir_tol_base;
<!ENTITY % dir_scan_base SYSTEM "dml_scanning.dtd">
%dir_scan_base;
<!--
Define the basic feature types as XML elements. They are:
Point
Line
Plane
Circle
Ellipse
Cylinder
Sphere
Cone
Pattern
Open slot
Closed slot
Point Surface
Point Curve
Constant Xsect
Surface of Revolution
Torus
Constructed Point
Constructed Line
Constructed Plane
Constructed Circle
Constructed Cylinder
-->
<!--
POINT. Example element:
<point_feature>
<point_feature_nominal reporting_transform="nomCS">
<point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
</point_feature_nominal>
<point_feature_actual reporting_transform="meaCS">
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
<normal i="1.00" j="0.00" k="0.00"/>
</point_feature_actual>
</point_feature>
Notes:
point: Required. x,y,z coordinates of point.
normal: Optional. i,j,k vector for normal to surface on which point lies.
For an edge point, this is the edge.
adj_normal: Optional. For edge points: i,j,k vector for normal to surface
adjacent to the edge on which point lies.
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
point_feature_nominal: Nominal point parameters.
point_feature_actual: Measured point parameters.
Required elements: point_feature_nominal or point_feature_actual
or both.
-->
<!ELEMENT point_feature_nominal (point, normal?, adj_normal?, report_data_list?)>
<!ATTLIST point_feature_nominal
%nominal_att;
>
<!ELEMENT point_feature_actual (point, normal?, adj_normal?, report_data_list?)>
<!ATTLIST point_feature_actual
%actual_att;
>
<!ELEMENT point_feature ((point_feature_nominal | point_feature_actual |
(point_feature_nominal, point_feature_actual)))>
<!ATTLIST point_feature
point_type (POINT | TEDGE | HEDGE) #IMPLIED
>
<!--
PLANE: Example element:
<plane_feature>
<plane_feature_nominal reporting_transform="desCS">
<point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
<poly_line>
<point x="1.0" y="0.0" z="10.0" />
<point x="0.0" y="1.0" z="10.0" />
<point x="1.0" y="1.0" z="10.0" />
</poly_line>
</plane_feature_nominal>
<plane_feature_actual reporting_transform="meaCS">
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
<normal i="1.00" j="0.00" k="0.00"/>
<poly_line>
<point x="1.012" y="0.041" z="10.0341" />
<point x="0.032" y="1.043" z="10.0234" />
<point x="1.043" y="1.034" z="10.0234" />
</poly_line>
</plane_feature_actual>
</plane_feature>
point: Required. X,Y,Z coordinates of centroid.
normal: Required. I,J,K surface normal for plane.
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
poly_line: Optional. Collection of points that define plane
boundaries. Minimum of 3.
Required elements: plane_feature_nominal or plane_feature_actual
or both.
-->
<!ELEMENT plane_feature_nominal (point, normal, poly_line?, report_data_list?)>
<!ATTLIST plane_feature_nominal
%nominal_att;
>
<!ELEMENT plane_feature_actual (point, normal, poly_line?, report_data_list?)>
<!ATTLIST plane_feature_actual
%actual_att;
>
<!ELEMENT plane_feature ((plane_feature_nominal | plane_feature_actual |
(plane_feature_nominal, plane_feature_actual)))>
<!--
LINE: Example element:
<line_feature>
<line_feature_nominal reporting_transform="desCS">
<point x="874.88" y="764764.88" z="89476.84"/>
<vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.00</length>
<normal i="1.00" j="0.00" k="0.00"/>
</line_feature_nominal>
<line_feature_actual reporting_transform="meaCS">
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
<vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.00</length>
<normal i="1.00" j="0.00" k="0.00"/>
</line_feature_actual>
</line_feature>
Notes:
point: Required. x,y,z coordinates of one end of line.
vector: Required: i,j,k, vector pointing in direction of line.
length: Optional. Length of line. If not specified, line is unbounded.
normal: Optional. Defines plane line lies in.
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
Required elements: line_feature_nominal or line_feature_actual
or both.
-->
<!ELEMENT line_feature_nominal (point, vector, length?, normal?, report_data_list?)>
<!ATTLIST line_feature_nominal
%nominal_att;
>
<!ELEMENT line_feature_actual (point, vector, length?, normal?, report_data_list?)>
<!ATTLIST line_feature_actual
%actual_att;
>
<!ELEMENT line_feature ((line_feature_nominal | line_feature_actual | (line_feature_nominal,
line_feature_actual)))>
<!--
CIRCLE: Example element:
<circle_feature type="INNER">
<circle_feature_nominal reporting_transform="desCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
<diameter>18.00</diameter>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</circle_feature_nominal>
<circle_feature_actual reporting_transform="meaCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
<diameter>17.99</diameter>
<diameter_min>17.99</diameter_min>
<diameter_max>18.01</diameter_max>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</circle_feature_actual>
</circle_feature>
type: Required. INNER is a hole; OUTER is a pin.
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
diameter: Circle diameter nominal or for measured data the
measured diameter based on analysis mode setting.
diameter_min: Minimum size circle calculated by analysis.
diameter_max: Maximum size circle calculated by analysis.
center_point: X,Y,Z coordinates of center
normal: I,J,K vector normal to plane of the circle
start_vector: Vector to start of circle arc. Lies in circle's plane.
Optional.
angle: Angle for arc. 360 would be full circle. 180 would be half
circle, etc. The direction of the arc follows the right-hand
rule. That is, if the thumb of the right-hand is placed in
the direction of the specified vector normal to plane of the
circle, then the fingers curl from the start point on the arc
toward increasing angles. Optional but must be specified if
start_vector is specified.
-->
<!ELEMENT circle_feature_nominal (center_point, normal, diameter, (start_vector,
angle)?, report_data_list?)>
<!ATTLIST circle_feature_nominal
%nominal_att;
>
<!ELEMENT circle_feature_actual (center_point, normal, diameter, diameter_min,
diameter_max, (start_vector, angle)?, report_data_list?)>
<!ATTLIST circle_feature_actual
%actual_att;
>
<!ELEMENT circle_feature ((circle_feature_nominal | circle_feature_actual
| (circle_feature_nominal, circle_feature_actual)))>
<!ATTLIST circle_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
ELLIPSE: Example element:
<ellipse_feature type="INNER">
<ellipse_feature_nominal reporting_transform="desCS">
<focus_point x="874.88" y="764764.88" z="89476.84"/>
<focus_point x="874.88" y="764764.88" z="8947.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
<minor_diameter>18.00</minor_diameter>
</ellipse_feature_nominal>
<ellipse_feature_actual reporting_transform="meaCS">
<focus_point x="874.88" y="764764.88" z="89476.84"/>
<focus_point x="874.88" y="764764.88" z="8947.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
<minor_diameter>18.0032</minor_diameter>
<major_diameter>28.4200</major_diameter>
</ellipse_feature_actual>
</ellipse_feature>
type: INNER is a hole; OUTER is a pin
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
focus_point: X,Y,Z coordinates of focus 1
focus_point: X,Y,Z coordinates of focus 2
normal: I,J,K vector normal to plane of the ellipse
minor_diameter: Ellipse minor diameter.
major_diameter: Ellipse major diameter.
One or both of the diameters must be supplied.
-->
<!ELEMENT ellipse_feature_nominal (focus_point, focus_point, normal, (minor_diameter
| major_diameter | (minor_diameter, major_diameter)), report_data_list?)>
<!ATTLIST ellipse_feature_nominal
%nominal_att;
>
<!ELEMENT ellipse_feature_actual (focus_point, focus_point, normal, (minor_diameter
| major_diameter | (minor_diameter, major_diameter)), report_data_list?)>
<!ATTLIST ellipse_feature_actual
%actual_att;
>
<!ELEMENT ellipse_feature ((ellipse_feature_nominal | ellipse_feature_actual
| (ellipse_feature_nominal, ellipse_feature_actual)))>
<!ATTLIST ellipse_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
CYLINDER: Example Element:
<cylinder_feature type="INNER">
<cylinder_feature_nominal reporting_transform="desCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.8975</length>
<diameter>18.00</diameter>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</cylinder_feature_nominal>
<cylinder_feature_actual reporting_transform="meaCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.8975</length>
<diameter>17.90</diameter>
<diameter_min>17.90</diameter_min>
<diameter_max>17.92</diameter_max>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</cylinder_feature_actual>
</cylinder_feature>
type: INNER is a hole; OUTER is a pin
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
axis_point: X,Y,Z coordinates of endpoint of cylinder axis
axis_vector: I,J,K Normal pointing in direction of axis.
length: Axis length. If length is not specified, cylinder is unbounded.
diameter: Nominal cylinder diameter or for measured data the
measured diameter based on analysis mode setting.
diameter_min: Minimum size cylinder calculated by analysis.
diameter_max: Maximum size cylinder calculated by analysis.
start_vector: Vector to start of circle arc. Lies in circle's plane.
Optional.
angle: Angle for arc. 360 would be full circle. 180 would be half
circle, etc. The direction of the arc follows the right-hand
rule. That is, if the thumb of the right-hand is placed in
the direction of the specified vector normal to plane of the
circle, then the fingers curl from the start point on the arc
toward increasing angles. Optional but must be specified if
start_vector is specified.
-->
<!ELEMENT cylinder_feature_nominal (axis_point, axis_vector, length?, diameter,
(start_vector, angle)?, report_data_list?)>
<!ATTLIST cylinder_feature_nominal
%nominal_att;
>
<!ELEMENT cylinder_feature_actual (axis_point, axis_vector, length?, diameter,
diameter_min, diameter_max, (start_vector, angle)?, report_data_list?)>
<!ATTLIST cylinder_feature_actual
%actual_att;
>
<!ELEMENT cylinder_feature ((cylinder_feature_nominal | cylinder_feature_actual
| (cylinder_feature_nominal, cylinder_feature_actual)))>
<!ATTLIST cylinder_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
SPHERE: Example Element:
<sphere_feature type="OUTER">
<sphere_feature_nominal reporting_transform="desCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<diameter>18.00</diameter>
<north_pole_vector i="874.88" j="764764.88" k="8947.84"/>
</sphere_feature_nominal>
<sphere_feature_actual reporting_transform="meaCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<diameter>18.15</diameter>
<diameter_min>18.01</diameter_min>
<diameter_max>18.02</diameter_max>
<north_pole_vector i="874.88" j="764764.88" k="8947.84"/>
</sphere_feature_actual>
</sphere_feature>
center_point: X,Y,Z coordinates of center
type: INNER is a bubble; OUTER is a ball
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
north_pole_vector: the north pole vector of the sphere.
diameter: Sphere diameter or for measured data the
measured diameter based on analysis mode setting.
diameter_min: Minimum size calculated by analysis.
diameter_max: Maximum size calculated by analysis.
-->
<!ELEMENT sphere_feature_nominal (center_point, diameter, north_pole_vector?,
angle?, report_data_list?)>
<!ATTLIST sphere_feature_nominal
%nominal_att;
>
<!ELEMENT sphere_feature_actual (center_point, diameter, diameter_min, diameter_max,
north_pole_vector?, report_data_list?)>
<!ATTLIST sphere_feature_actual
%actual_att;
>
<!ELEMENT sphere_feature ((sphere_feature_nominal | sphere_feature_actual
| (sphere_feature_nominal, sphere_feature_actual)))>
<!ATTLIST sphere_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
CONE: Example Element:
<cone_feature type="INNER">
<cone_feature_nominal reporting_transform="desCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<diameter>18.00</diameter>
<start_length>0.0</start_length>
<enb_length>12.8975</end_length>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</cone_feature_nominal>
<cone_feature_actual reporting_transform="meaCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<diameter>18.01</diameter>
<diameter_min>18.01</diameter_min>
<diameter_max>18.02</diameter_max>
<start_length>0.0</start_length>
<end_length>12.8975</end_length>
<start_vector i="0.00" j="1.00" k="0.00"/>
<angle>45.0</angle>
</cone_feature_actual>
</cone_feature>
axis_point: X,Y,Z coordinates of cone end point (tip)
axis_vector: I,J,K vector for axis (from tip to large end).
type: INNER is a hole; OUTER is a pin
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
diameter: Diameter at large end of the cone or for measured data
the measured diameter based on analysis mode setting.
diameter_min: Minimum size calculated by analysis.
diameter_max: Maximum size calculated by analysis.
start_length: Length from cone end point (tip) to top plane if cone
truncated. Need only be supplied if cone truncated.
end_length: Length from from cone end point (tip) to bottom plane
of cone. Required.
start_vector: Vector to start of cone arc. Lies in cone end plane.
Optional.
angle: Angle for arc. 360 would be full arc. 180 would be half
arc, etc. The direction of the arc follows the right-hand
rule. That is, if the thumb of the right-hand is placed in
the direction of the specified vector normal to plane of the
circle, then the fingers curl from the start point on the arc
toward increasing angles. Optional but must be specified if
start_vector is specified.
-->
<!ELEMENT start_length (#PCDATA)>
<!ELEMENT end_length (#PCDATA)>
<!ELEMENT cone_feature_nominal (axis_point, axis_vector, diameter, start_length?,
end_length, (start_vector, angle)?, report_data_list?)>
<!ATTLIST cone_feature_nominal
%nominal_att;
>
<!ELEMENT cone_feature_actual (axis_point, axis_vector, diameter, diameter_min,
diameter_max, start_length?, end_length, (start_vector, angle)?, report_data_list?)>
<!ATTLIST cone_feature_actual
%actual_att;
>
<!ELEMENT cone_feature ((cone_feature_nominal | cone_feature_actual | (cone_feature_nominal,
cone_feature_actual)))>
<!ATTLIST cone_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
PATTERN: Example entity:
<pattern_feature>
<feature_id id="NFEAT_PLN1"/>
<feature_id id="NFEAT_PLN2"/>
</pattern_feature>
A pattern feature is a list of entity pointers to other features.
-->
<!ELEMENT feature_id EMPTY>
<!ATTLIST feature_id
id IDREF #REQUIRED
>
<!ELEMENT pattern_feature (feature_id*)>
<!--
OPEN SLOT: Example Element:
<open_slot_feature type="INNER">
<open_slot_feature_nominal reporting_transform="desCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="874.88" j="764764.88" k="8947.84"/>
<width>18.00</width>
<feature_id id="PLANE1">
<plane_feature_nominal>
<point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
</plane_feature_nominal>
</open_slot_feature_nominal>
<open_slot_feature_actual reporting_transform="meaCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="874.88" j="764764.88" k="8947.84"/>
<width>18.00</width>
<width_min>18.00</width_min>
<width_max>18.001</width_max>
<feature_id id="PLANE1">
<plane_feature_actual>
<point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
</plane_feature_actual>
</open_slot_feature_actual>
</open_slot_feature>
Open slot/tab has width but no length.
center_point: X,Y,Z coordinates of center of feature.
normal: I,J,K vector of feature center plane.
type: INNER - Slot
OUTER - Tab
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
width: Width between sides of slot or for measured data
the measured width based on analysis mode setting.
width_min: Measured minimum width between sides of slot.
width_max: Measured maximum width between sides of slot.
plane_feature_*: Plane defining side of slot.
feature_id: ID to side feature
-->
<!ELEMENT open_slot_feature_nominal (center_point, normal, width, (plane_feature_nominal
| feature_id), (plane_feature_nominal | feature_id), report_data_list?)>
<!ATTLIST open_slot_feature_nominal
%nominal_att;
>
<!ELEMENT open_slot_feature_actual (center_point, normal, width, width_min,
width_max, (plane_feature_actual | feature_id), (plane_feature_actual | feature_id),
report_data_list?)>
<!ATTLIST open_slot_feature_actual
%actual_att;
>
<!ELEMENT open_slot_feature ((open_slot_feature_nominal | open_slot_feature_actual
| (open_slot_feature_nominal, open_slot_feature_actual)))>
<!ATTLIST open_slot_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
CLOSED SLOT: Example Element:
<closed_slot_feature type="INNER" end_type="SQUARE">
<closed_slot_feature_nominal reporting_transform="desCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length_vector i="874.88" j="764764.88" k="8947.84"/>
<width>18.00</width>
<length>19.00</length>
</closed_slot_feature_nominal>
<closed_slot_feature_actual reporting_transform="meaCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length_vector i="874.88" j="764764.88" k="8947.84"/>
<width>18.00</width>
<width_min>18.00</width_min>
<width_max>18.001</width_max>
<length>19.00</length>
<length_min>19.00</length_min>
<length_max>19.001</length_max>
</closed_slot_feature_actual>
</closed_slot_feature>
Closed slot/tab has width and length.
center_point: X,Y,Z coordinates of center of feature.
axis_vector: I,J,K vector of feature axis.
type: INNER - Slot
OUTER - Tab
reporting_transform: Optional. Pointer to a <report_transform> element.
Transform to apply to x,y,z coordinates when
coordinates are displayed.
width: Width between sides of slot or for measured data
the measured width based on analysis mode setting.
length: Length between ends of sot or for measured data
the measured length based on analysis mode setting.
end_type: Describes ends of slot.
length_vector: I,J,K length vector.
depth: Optional depth
normal: Optional normal of plane at surface of slot (rmeas)
offset: Optional measurement offset
-->
<!ELEMENT closed_slot_feature_nominal (center_point, axis_vector, length_vector,
width, length, depth?, normal?, offset?, report_data_list?)>
<!ATTLIST closed_slot_feature_nominal
%nominal_att;
>
<!ELEMENT closed_slot_feature_actual (center_point, axis_vector, length_vector,
width, width_min, width_max, length, length_min, length_max, depth?, normal?,
offset?, report_data_list?)>
<!ATTLIST closed_slot_feature_actual
%actual_att;
>
<!ELEMENT closed_slot_feature ((closed_slot_feature_nominal | closed_slot_feature_actual
| (closed_slot_feature_nominal, closed_slot_feature_actual)))>
<!ATTLIST closed_slot_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
end_type (ROUND | SQUARE) "ROUND"
>
<!--
POINT CURVE: Example element:
<point_curve_feature>
<point_curve_feature_nominal reporting_transform="UNITY"/>
<point_list>
<point_data id="pt100909">
<nominal_point>
<point x="874.88" y="764764.88" z="89476.84"/>
<normal i="1.00" j="0.00" k="0.00"/>
</nominal_point>
<measured_point>
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
<normal i="1.00" j="0.00" k="0.00"/>
</measured_point>
</point_data>
<point_data id="pt100910">
<nominal_point>
<point x="874.88" y="764764.88" z="89476.84"/>
</nominal_point>
<measured_point>
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
</measured_point>
</point_data>
<point_data id="pt100911">
<measured_point>
<point x="874.23848" y="764764.49445" z="89475.9858984"/>
<normal i="1.00" j="0.00" k="0.00"/>
</measured_point>
</point_data>
</point_list>
</point_curve_feature>
reporting_transform: Optional. Coordinate system to apply to
point x,y,z design coordinates when
coordinates displayed.
A curve defined by a set of points. First point is start of
curve, last is end, others lie between in order as listed.
Minimum of two points needed but that is not enforced. Application
code should check that at least two points exist. Points do not have
to be coplanar.
-->
<!ELEMENT point_curve_feature_nominal (point_list?, report_data_list?)>
<!ATTLIST point_curve_feature_nominal
%nominal_att;
>
<!ELEMENT point_curve_feature_actual (point_list?, report_data_list?)>
<!ATTLIST point_curve_feature_actual
%actual_att;
>
<!ELEMENT point_curve_feature ((point_curve_feature_nominal | point_curve_feature_actual
| (point_curve_feature_nominal, point_curve_feature_actual)))>
<!--
POINT SURFACE
A surface defined by a set of points. Element will look the
same as a <point_curve_feature> except the points represent a surface
and
the main element name is <point_surface_feature>.
-->
<!ELEMENT point_surface_feature_nominal (point_list?, report_data_list?)>
<!ATTLIST point_surface_feature_nominal
%nominal_att;
>
<!ELEMENT point_surface_feature_actual (point_list?, report_data_list?)>
<!ATTLIST point_surface_feature_actual
%actual_att;
>
<!ELEMENT point_surface_feature ((point_surface_feature_nominal | point_surface_feature_actual
| (point_surface_feature_nominal, point_surface_feature_actual)))>
<!--
CONSTANT XSECT: Example Element:
<constant_xsect_feature>
<constant_xsect_feature_nominal reporting_transform="desCS">
<vector i="874.88" j="764764.88" k="8947.84"/>
</constant_xsect_feature_nominal>
<constant_xsect_feature_actual reporting_transform="meaCS">
<vector i="874.88" j="764764.88" k="8947.84"/>
</constant_xsect_feature_actual>
</constant_xsect_feature>
A constant cross section surface defined by profile curves
and an extent vector. Profile curves are represented by
point data (measured points). The vector is used to sort
the points into cross sections. The nominal data is
sufficient to perform an analysis of the measured data
and will be used if the measured data is not supplied.
vector: Sort direction.
reporting_transform: Optional. Coordinate system to apply to i,j,k
sort vector if it is to be displayed. Same
transform applied to point data x,y,z coordinates
if they are to be displayed.
-->
<!ELEMENT constant_xsect_feature_nominal (vector, report_data_list?)>
<!ATTLIST constant_xsect_feature_nominal
%nominal_att;
>
<!ELEMENT constant_xsect_feature_actual (vector, report_data_list?)>
<!ATTLIST constant_xsect_feature_actual
%actual_att;
>
<!ELEMENT constant_xsect_feature ((constant_xsect_feature_nominal | constant_xsect_feature_actual
| (constant_xsect_feature_nominal, constant_xsect_feature_actual)))>
<!--
SURFACE OF REVOLUTION: Example element:
<surface_of_revolution_feature>
<surface_of_revolution_feature_nominal reporting_transform="desCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.8975</length>
</surface_of_revolution_feature_nominal>
<surface_of_revolution_feature_actual reporting_transform="meaCS">
<axis_point x="874.88" y="764764.88" z="89476.84"/>
<axis_vector i="874.88" j="764764.88" k="8947.84"/>
<length>12.8975</length>
</surface_of_revolution_feature_actual>
</surface_of_revolution_feature>
A surface of revolution defined by profile curves
and an axis of revolution. Profile curves are represented by
point data (measured points). The axis vector represents the direction
of the axis of revolution and is used to sort the points into cross
sections. The nominal vector data is sufficient to perform an
analysis and will be used if the measured vector is not supplied.
axis_point: X,Y,Z coordinates of endpoint of cylinder axis
axis_vector: I,J,K Normal pointing in direction of axis.
length: Axis length.
reporting_transform: Optional. Coordinate system to apply to i,j,k
sort vector if it is to be displayed. Same
transform applied to point data x,y,z coordinates
if they are to be displayed.
-->
<!ELEMENT surface_of_revolution_feature_nominal (axis_point, axis_vector,
length, report_data_list?)>
<!ATTLIST surface_of_revolution_feature_nominal
%nominal_att;
>
<!ELEMENT surface_of_revolution_feature_actual (axis_point, axis_vector,
length, report_data_list?)>
<!ATTLIST surface_of_revolution_feature_actual
%actual_att;
>
<!ELEMENT surface_of_revolution_feature ((surface_of_revolution_feature_nominal
| surface_of_revolution_feature_actual | (surface_of_revolution_feature_nominal,
surface_of_revolution_feature_actual)))>
<!--
TORUS: Example element:
<torus_feature>
<torus_feature_nominal reporting_transform="desCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="874.88" j="764764.88" k="8947.84"/>
<minor_diameter>5.01</minor_diameter>
<major_diameter>12.8975</major_diameter>
</torus_feature_nominal>
<torus_feature_actual reporting_transform="meaCS">
<center_point x="874.88" y="764764.88" z="89476.84"/>
<normal i="874.88" j="764764.88" k="8947.84"/>
<minor_diameter>5.01</minor_diameter>
<major_diameter>12.8975</major_diameter>
</torus_feature_actual>
</torus_feature>
center_point: X,Y,Z coordinates of center of torus
normal: I,J,K vector normal to plane in which torus lies
minor_diameter: Torus minor diameter.
major_diameter: Torus major diameter.
reporting_transform: Optional. Coordinate system to apply to i,j,k
vector if it is to be displayed. Same
transform applied to point data x,y,z coordinates
if they are to be displayed.
-->
<!ELEMENT torus_feature_nominal (center_point, normal, minor_diameter, major_diameter,
report_data_list?)>
<!ATTLIST torus_feature_nominal
%nominal_att;
>
<!ELEMENT torus_feature_actual (center_point, normal, minor_diameter, major_diameter,
report_data_list?)>
<!ATTLIST torus_feature_actual
%actual_att;
>
<!ELEMENT torus_feature ((torus_feature_nominal | torus_feature_actual |
(torus_feature_nominal, torus_feature_actual)))>
<!ATTLIST torus_feature
type (INNER | OUTER | UNKNOWN) #REQUIRED
>
<!--
Constructed features follow. These are features constructed from other features.
Can construct using actual (measured) subfeature data or the nominal data for
the
subfeatures. If nominals_calculated is "NO", the nominal reference
feature must be
constructed using the nominal data; if nominals_calculated is "YES",
then the
nominal reference feature has already been constructed and is provided.
-->
<!ENTITY % construct_method 'method (MIDDLE | PROJECT | INTERSECT | TRANSLATE
| VERTEX | BEST_FIT | CENTROID |
PERPENDICULAR | PARALLEL | TANGENT | TANGENT_THRU | CURVE | OFFSET |
OFFSET_PERP_TO_1 | OFFSET_PERP_TO_2 | PERPENDICULAR_TO_2 | INTERSECT_PT_LINE
|
INTERSECT_PT_CYL | INTERSECT_PT_PLANE | INTERSECT_LINE_CYL |
INTERSECT_LINE_LINE | PERPENDICULAR_DMIS | PARALLEL_DMIS | BEST_FIT_DMIS |
UNKNOWN) #REQUIRED'>
<!ENTITY % nominals_calculated 'nominals_calculated (YES | NO) "YES"'>
<!ELEMENT base_feat EMPTY>
<!ATTLIST base_feat
feat IDREF #IMPLIED
using (ACTUAL | NOMINAL) "ACTUAL"
>
<!--
CONSTRUCTED POINT.
Notes:
point_feature: Point parameter data.
construct_method: Method used to construct the point.
base_feats: Feature(s) used to construct the point.
-->
<!ELEMENT constructed_point_feature (base_feat+, point_feature, report_data_list?)>
<!ATTLIST constructed_point_feature
%nominals_calculated;
%construct_method;
>
<!--
CONSTRUCTED LINE:
Notes:
line_feature: Line parameter data.
construct_method: Method used to construct the point.
base_feats: Feature(s) used to construct the point.
-->
<!ELEMENT constructed_line_feature (base_feat+, line_feature, report_data_list?)>
<!ATTLIST constructed_line_feature
%nominals_calculated;
%construct_method;
>
<!--
CONSTRUCTED PLANE:
plane_feature: Plane parameter data.
construct_method: Method used to construct feature from base features.
base_feats: IDs of features used to calculate plane. Example:
two lines. Centerplane of slot. Three points, etc.
-->
<!ELEMENT constructed_plane_feature (base_feat+, plane_feature, report_data_list?)>
<!ATTLIST constructed_plane_feature
%nominals_calculated;
%construct_method;
>
<!--
CONSTRUCTED CIRCLE:
circle_feature: Plane parameter data.
construct_method: Method used to construct feature from base features.
base_feats: IDs of features used to calculate circle. Example:
Three points, etc.
-->
<!ELEMENT constructed_circle_feature (base_feat+, circle_feature, report_data_list?)>
<!ATTLIST constructed_circle_feature
%nominals_calculated;
%construct_method;
>
<!--
CONSTRUCTED CYLINDER:
cylinder_feature: Cylinder parameter data.
construct_method: Method used to construct feature from base features.
base_feats: IDs of features used to calculate circle. Example:
Three points, etc.
-->
<!ELEMENT constructed_cylinder_feature (base_feat+, cylinder_feature, report_data_list?)>
<!ATTLIST constructed_cylinder_feature
%nominals_calculated;
%construct_method;
>
<!ELEMENT unknown_feature_type ANY>
<!--
Define a convenience entity that lists all the feature element names
-->
<!ENTITY % defined_feats "point_feature |
plane_feature |
line_feature |
circle_feature |
ellipse_feature |
cylinder_feature |
sphere_feature |
cone_feature |
pattern_feature |
open_slot_feature |
closed_slot_feature |
point_curve_feature |
point_surface_feature |
constant_xsect_feature |
surface_of_revolution_feature |
torus_feature |
constructed_point_feature |
constructed_line_feature |
constructed_plane_feature |
constructed_circle_feature |
constructed_cylinder_feature |
unknown_feature_type
">
<!--
Feature is one of the above feature types. It must have a
unique name and may have descriptive text. It can specify analysis
modes and can optionally point to a list of tolerances
that are applied to it. The feature includes nominal and/or
measured data (feature parameters). Measured tolerances
(results) and measured points (inspection data) may also be
included.
-->
<!ELEMENT tolerance_id EMPTY>
<!ATTLIST tolerance_id
id IDREF #REQUIRED
>
<!ELEMENT applied_tolerances (tolerance_id+)>
<!--
Reference to a cad_info element containing model name for the geometry
specified by the cad_identifier(s).
-->
<!ELEMENT model_name EMPTY>
<!ATTLIST model_name
id IDREF #REQUIRED
>
<!ELEMENT cad_identifier (#PCDATA)>
<!ELEMENT feature (feature_analysis_modes?,
applied_tolerances?,
(%defined_feats;),
tolerance_actual_list?,
point_list?,
(model_name, cad_identifier+)?)>
<!ATTLIST feature
id ID #REQUIRED
name CDATA #IMPLIED
common_space (YES | NO) #IMPLIED
description CDATA #IMPLIED
>
<!--
Main elements for lists of features.
-->
<!ELEMENT feature_list (feature_analysis_modes_default?,
tolerance_analysis_modes_default?,
analysis_dofs_default?,
feature+, scan_result_list?)>