## 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.

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