14.1 Description
The ap203check , ap209check and ap214check tools rapidly check data files against the local rules (WHERE clauses) and global rules (RULEs) defined in the AP-203, AP-209 and AP-214 EXPRESS schemas. The tool also checks for the presence of all required (non-OPTIONAL) attribute values in the data file.
The ap203check , ap209check and ap214check tools are faster than apconform , but are specific to a particular schema. Whereas the apconform tool utilizes a general EXPRESS interpreter, ap2XXcheck tools use custom C++ optimized for speed with techniques such as pre-computing reverse (USEDIN/INVERSE) references between entity instances.
14.2 Command Line
ap203check [options] <data-file>
ap209check [options] <data-file>
ap214check [options] <data-file>
The options accepted by the checkers are:
-help- Print this list of options. The tool performs no other action and ignores all other options.
14.3 Example
As an example, we test a file to see if it meets the AP-203 schema constraints. The example file is an assembly of parts forming a doghouse. It is a modified copy of the file doghouse.stp on our web site translation service. It has been modified so that the geometric context entity instance specifies 2-dimensionality (while the geometry remains 3-dimensional) and so that one of the edge_loop instances does not meet a head-to-tail constraint. You can find this file in the ST-Developer installation as demos/ap203check/dogbad.stp
% ap203check dogbad.stp
== STEP AP-203 Checker
==
== Copyright (c) 1991-2006 by
== STEP Tools Inc., Troy, New York
== All Rights Reserved
==
== Product licensed to:
== STEP Tools Internal Use Only
== STEP Tools Lab
==
computing reverse pointers
...........
1125 total entity instances
validating required attributes
validating ENTITY advanced_brep_shape_representation, 1 instance
validating ENTITY advanced_face, 32 instances
WHERE failure: advanced_face WR5: edge_geometry(#505=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#483=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#500=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#483=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#495=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#483=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#488=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#483=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#488=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#483=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#604=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#599=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#594=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#589=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#584=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#579=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#574=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#569=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#564=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#559=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
WHERE failure: advanced_face WR5: edge_geometry(#554=intersection_curve) is not one of line, conic, polyline, pcurve, b_spline_curve
#506=advanced_face
[... 159 more messages]
validating ENTITY axis2_placement_3d, 41 instances
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#14=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#14=axis2_placement_3d
WHERE failure: axis2_placement_3d WR3: `ref_direction' is not 3-dimensional
#14=axis2_placement_3d
WHERE failure: axis2_placement_3d WR4: could not compute cross product of `axis' and `ref_direction'
#14=axis2_placement_3d
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#18=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#18=axis2_placement_3d
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#26=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#26=axis2_placement_3d
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#28=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#28=axis2_placement_3d
WHERE failure: axis2_placement_3d WR3: `ref_direction' is not 3-dimensional
#28=axis2_placement_3d
WHERE failure: axis2_placement_3d WR4: could not compute cross product of `axis' and `ref_direction'
#28=axis2_placement_3d
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#35=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#35=axis2_placement_3d
WHERE failure: axis2_placement_3d WR1: `location' is not 3-dimensional
#43=axis2_placement_3d
WHERE failure: axis2_placement_3d WR2: `axis' is not 3-dimensional
#43=axis2_placement_3d
[... 98 more messages]
validating ENTITY calendar_date, 5 instances
validating ENTITY cc_design_date_and_time_assignment, 2 instances
validating ENTITY cc_design_person_and_organization_assignment, 5 instances
validating ENTITY design_context, 1 instance
validating ENTITY direction, 130 instances
validating ENTITY edge_loop, 33 instances
validating ENTITY face, 32 instances
validating ENTITY geometric_representation_item, 794 instances
validating ENTITY intersection_curve, 87 instances
validating ENTITY length_measure_with_unit, 1 instance
validating ENTITY length_unit, 2 instances
validating ENTITY local_time, 5 instances
validating ENTITY line, 73 instances
validating ENTITY measure_with_unit, 3 instances
validating ENTITY mechanical_context, 1 instance
validating ENTITY oriented_edge, 174 instances
validating ENTITY path, 33 instances
WHERE failure: path WR1: path is not head-to-tail (bad edge order?)
#485=edge_loop
validating ENTITY person, 3 instances
validating ENTITY plane_angle_measure_with_unit, 1 instance
validating ENTITY plane_angle_unit, 2 instances
validating ENTITY product_definition_shape, 1 instance
validating ENTITY representation_item, 1035 instances