RULE valid_datum_geometry_correlation

(* SCHEMA step_merged_ap_schema; *)
-- IN AP238 STEP-NC/AP242
RULE valid_datum_geometry_correlation FOR (datum, geometric_item_specific_usage, geometric_representation_item );
   LOCAL
      pass : BOOLEAN := TRUE;
      gisu_cgr_set : SET OF geometric_item_specific_usage := [];
      gisu_set : SET OF geometric_item_specific_usage := [];
      gisu_tcgr_set : SET OF geometric_item_specific_usage := [];
   END_LOCAL;
      REPEAT i := 1 TO HIINDEX(datum);
         gisu_cgr_set := bag_to_set(QUERY (gcs <* USEDIN(datum[i], 'STEP_MERGED_AP_SCHEMA.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION')| 'STEP_MERGED_AP_SCHEMA.CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN TYPEOF(gcs\geometric_item_specific_usage.used_representation)));
         IF SIZEOF(gisu_cgr_set) > 1 THEN
            pass := FALSE;
         END_IF;
         gisu_tcgr_set := bag_to_set(QUERY (tgcs <* USEDIN(datum[i], 'STEP_MERGED_AP_SCHEMA.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION')| 'STEP_MERGED_AP_SCHEMA.TESSELLATED_CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN TYPEOF(tgcs\geometric_item_specific_usage.used_representation)));
         IF SIZEOF(gisu_tcgr_set) > 1 THEN
            pass := FALSE;
         END_IF;
         gisu_set := bag_to_set(USEDIN(datum[i], 'STEP_MERGED_AP_SCHEMA.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION'));
         REPEAT j := 1 TO HIINDEX(gisu_set);
            CASE TRUE OF
               'STEP_MERGED_AP_SCHEMA.CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN TYPEOF(gisu_set[i]\geometric_item_specific_usage.used_representation) :
                     BEGIN
                        IF SIZEOF([ 'STEP_MERGED_AP_SCHEMA.LINE', 'STEP_MERGED_AP_SCHEMA.POINT', 'STEP_MERGED_AP_SCHEMA.PLANE', 'STEP_MERGED_AP_SCHEMA.LINE_AND_POINT_ON_PLANE', 'STEP_MERGED_AP_SCHEMA.LINE_ON_PLANE_PCURVE', 'STEP_MERGED_AP_SCHEMA.POINT_ON_LINE', 'STEP_MERGED_AP_SCHEMA.POINT_ON_PLANE' ] * TYPEOF(gisu_set[i]\geometric_item_specific_usage.identified_item)) = 1 THEN
                           pass := TRUE;
                        END_IF;
                     END;
            OTHERWISE :
                  pass := FALSE;
            END_CASE;
            CASE TRUE OF
               'STEP_MERGED_AP_SCHEMA.TESSELLATED_CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN TYPEOF(gisu_set[i]\geometric_item_specific_usage.used_representation) :
                     BEGIN
                        IF SIZEOF([ 'STEP_MERGED_AP_SCHEMA.PLACEMENT', 'STEP_MERGED_AP_SCHEMA.TESSELLATED_CURVE_SET', 'STEP_MERGED_AP_SCHEMA.TESSELLATED_EDGE', 'STEP_MERGED_AP_SCHEMA.TESSELLATED_FACE', 'STEP_MERGED_AP_SCHEMA.TESSELLATED_SURFACE_SET', 'STEP_MERGED_AP_SCHEMA.TESSELLATED_VERTEX' ] * TYPEOF(gisu_set[i]\geometric_item_specific_usage.identified_item)) = 1 THEN
                           pass := TRUE;
                        END_IF;
                     END;
            OTHERWISE :
                  pass := FALSE;
            END_CASE;
         END_REPEAT;
      END_REPEAT;
   WHERE
      WR1:
         pass;
END_RULE;

[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2026-09-02T09:08:05-04:00