Description

The ap203check, ap209check and ap214check tools rapidly check data files against the local rules (WHERE clauses) and global rules (RULEs) defined in the AP203, AP209 and AP214 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.

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 and exit.

Windows Control Panel

The AP203 Checker Windows control panel is shown in the figure below. Run this by selecting AP203 Checker, AP209 Checker, or AP214 Checker from the Start Menu. The following sections describe the fields and setting on this control panel and show how to perform various tasks with the checker.

AP203 Checker Control Panel
AP203 Checker Control Panel

At the top of the AP203 Checker control panel is a text field for the STEP files that you would like to check. You can open the file dialog using Ctrl+O or the [...] button to the right. You can also drag and drop files from the Windows Explorer. Click the Check button to start checking.

Example

As an example, we test a file to see if it meets the AP203 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.

% ap203check dogbad.stp
== STEP AP-203 Checker
== 
== Copyright (c) 1991-2023 by STEP Tools Inc.
== 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