Application module: Geometric tolerance ISO/TS 10303-1051:2019(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definitions
   4.5 ARM function definition
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM entity definitions
     5.2.2 MIM function definitions
     5.2.3 MIM rule definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

5.2 MIM EXPRESS short listing

This clause specifies the EXPRESS schema derived from the mapping table. It uses elements from the common resources or from other application modules and defines the EXPRESS constructs that are specific to this part of ISO 10303.

This clause constitutes the Module Interpreted Module (MIM) of the application module.

This clause also specifies the modifications that apply to the constructs imported from the common resources.

The following restrictions apply to the use, in this schema, of constructs defined in common resources or in application modules:

Short names of entities defined in this schema are described in Annex A. Unambiguous identification of this schema is defined in Annex B.

EXPRESS specification:

*)
SCHEMA Geometric_tolerance_mim;

USE FROM Derived_shape_element_mim;    --  ISO/TS 10303-1130

USE FROM Dimension_tolerance_mim;    --  ISO/TS 10303-1050

USE FROM Feature_and_connection_zone_mim;    --  ISO/TS 10303-1671

USE FROM Measure_representation_mim;    --  ISO/TS 10303-1118

USE FROM Part_shape_mim;    --  ISO/TS 10303-1807

USE FROM product_property_definition_schema    --  ISO 10303-41
  (property_definition,
   product_definition_shape,
   shape_aspect);

USE FROM product_property_representation_schema    --  ISO 10303-41
  (property_definition_representation,
   shape_representation);

USE FROM Shape_composition_mim;    --  ISO/TS 10303-1742

USE FROM Support_resource_mim;    --  ISO/TS 10303-1800

USE FROM shape_aspect_definition_schema    --  ISO 10303-47
  (all_around_shape_aspect,
   apex,
   between_shape_aspect,
   centre_of_symmetry,
   continuous_shape_aspect,
   composite_shape_aspect,
   composite_group_shape_aspect,
   common_datum,
   common_datum_list,
   contacting_feature,
   datum,
   datum_feature,
   datum_reference_modifier_with_value,
   datum_reference,
   datum_reference_compartment,
   datum_reference_element,
   datum_system,
   datum_target,
   derived_shape_aspect,
   extension,
   general_datum_reference,
   geometric_alignment,
   geometric_contact,
   geometric_intersection,
   parallel_offset,
   perpendicular_to,
   referenced_modified_datum,
   simple_datum_reference_modifier,
   shape_aspect_deriving_relationship,
   shape_representation_with_parameters,
   symmetric_shape_aspect,
   tangent);

USE FROM shape_tolerance_schema    --  ISO 10303-47
  (dimension_related_tolerance_zone_element,
   directed_tolerance_zone,
   geometric_tolerance,
   geometric_tolerance_auxiliary_classification,
   geometric_tolerance_relationship,
   geometric_tolerance_with_datum_reference,
   geometric_tolerance_with_defined_unit,
   geometric_tolerance_with_defined_area_unit,
   geometric_tolerance_with_maximum_tolerance,
   geometric_tolerance_with_modifiers,
   gps_filtration_specification,
   gps_filter,
   modified_geometric_tolerance,
   non_uniform_zone_definition,
   oriented_tolerance_zone,
   projected_zone_definition,
   projected_zone_definition_with_offset,
   runout_zone_definition,
   runout_zone_orientation_reference_direction,
   tolerance_zone,
   tolerance_zone_definition,
   tolerance_zone_form,
   tolerance_zone_with_datum,
   cylindricity_tolerance,
   flatness_tolerance,
   line_profile_tolerance,
   position_tolerance,
   roundness_tolerance,
   straightness_tolerance,
   surface_profile_tolerance,
   angularity_tolerance,
   circular_runout_tolerance,
   coaxiality_tolerance,
   concentricity_tolerance,
   parallelism_tolerance,
   perpendicularity_tolerance,
   symmetry_tolerance,
   total_runout_tolerance,
   unequally_disposed_geometric_tolerance);

USE FROM Value_with_unit_extension_mim;    --  ISO/TS 10303-1753

REFERENCE FROM support_resource_schema    --  ISO 10303-41
  (bag_to_set,
   type_check_function);
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Derived_shape_element_mim ISO/TS 10303-1130
Dimension_tolerance_mim ISO/TS 10303-1050
Feature_and_connection_zone_mim ISO/TS 10303-1671
Measure_representation_mim ISO/TS 10303-1118
Part_shape_mim ISO/TS 10303-1807
product_property_definition_schema ISO 10303-41
product_property_representation_schema ISO 10303-41
Shape_composition_mim ISO/TS 10303-1742
Support_resource_mim ISO/TS 10303-1800
shape_aspect_definition_schema ISO 10303-47
shape_tolerance_schema ISO 10303-47
Value_with_unit_extension_mim ISO/TS 10303-1753
support_resource_schema ISO 10303-41

NOTE 2   See Annex D, Figures D.1and D.2 for a graphical representation of this schema.

5.2.1 MIM entity definitions

This subclause specifies the MIM entities for this module. The MIM entities and definitions are specified below.

5.2.1.1 feature_for_datum_target_relationship   EXPRESS-G

A feature_for_datum_target_relationship is a type of shape_aspect_relationship that defines the nominal feature for a datum_target.

EXPRESS specification:

*)
ENTITY feature_for_datum_target_relationship
  SUBTYPE OF (shape_aspect_relationship);
  SELF\shape_aspect_relationship.related_shape_aspect : datum_target;
UNIQUE
  UR1: related_shape_aspect;
WHERE
  WR1: relating_shape_aspect.of_shape :=: related_shape_aspect.of_shape;
  WR2: relating_shape_aspect\shape_aspect.product_definitional = TRUE;
END_ENTITY;
(*

Attribute definitions:

related_shape_aspect: an inherited attribute shall be of type datum_target for the feature_for_datum_target_relationship.

Formal propositions:

UR1: The related_shape_aspect shall be unique within a population of feature_for_datum_target_relationship.

WR1: The relating_shape_aspect and the related_shape_aspect shall belong to the same product_definition_shape.

WR2: The relating_shape_aspect shall have the attribute product_definitional set to TRUE.

5.2.1.2 placed_datum_target_feature   EXPRESS-G

A placed_datum_target_feature is a type of datum_target that represents the implicit definition of a datum target for tolerancing purposes. See ARM definition for Placed_target for more information.

EXPRESS specification:

*)
ENTITY placed_datum_target_feature
  SUBTYPE OF (datum_target);
DERIVE
  representation_associations : SET[0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF);
WHERE
  WR1: SELF.description IN ['point','line','rectangle','circle','circular curve'];
  WR2: SIZEOF(QUERY(pdr <* representation_associations | 'GEOMETRIC_TOLERANCE_MIM.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))) = 1;
  WR3: valid_datum_target_parameters(SELF);
END_ENTITY;
(*

Attribute definitions:

representation_associations: the set of instances of property_definition_representation that specifies a representation of the placed_datum_target_feature.

Formal propositions:

WR1: The description attribute of the placed_datum_target_feature shall be either 'point', 'line', 'rectangle', 'circle' or 'circular curve'.

WR2: A placed_datum_target_feature shall have exactly one implicit representation, conveyed by a shape_representation_with_parameters.

WR3: The items of the implicit representation shall be consistent with the type of the placed_datum_target_feature.

5.2.2 MIM function definitions

This subclause specifies the MIM functions for this module. The MIM functions and definitions are specified below.

5.2.2.1 get_shape_aspect_property_definition_representations

The get_shape_aspect_property_definition_representations function returns the set of instances of shape_definition_representation that refer to a given instance of shape_aspect, through their definition attribute and an instance of property_definition.

NOTE    The type of the returned result is declared as a set of instances of property_definition_representation but only instances of shape_definition_representation are included in the returned result at run time.

EXPRESS specification:

*)
FUNCTION get_shape_aspect_property_definition_representations (s_a_instance : shape_aspect) : SET OF property_definition_representation;
  LOCAL
  pd_set : SET OF property_definition := [];
  pdr_set : SET OF property_definition_representation := [];
    END_LOCAL;
      pd_set := bag_to_set(USEDIN(s_a_instance, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
      IF (SIZEOF(pd_set) < 1)
  THEN
    RETURN(pdr_set);
  END_IF;
      REPEAT i := 1 TO HIINDEX(pd_set);
    pdr_set := pdr_set +
               (QUERY(pdr
                      <* USEDIN(pd_set[i], 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
                      | 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
  END_REPEAT;
      RETURN(pdr_set);
END_FUNCTION;
(*

Argument definitions:

s_a_instance: the shape_aspect that is considered.

5.2.2.2 valid_datum_target_parameters

The valid_datum_target_parameters function evaluates whether the shape_representation_with_parameters that is expected to convey the parameters of the datum feature contains the right items, according to the kind of datum feature that is defined.

This representation shall contain:

The function returns TRUE if these constraints are fulfilled, FALSE otherwise.

EXPRESS specification:

*)
FUNCTION valid_datum_target_parameters (pdf : placed_datum_target_feature) : BOOLEAN;
  LOCAL
  rep_set : SET OF representation := [];
  parameter_representations : SET OF representation;
    END_LOCAL;
      REPEAT i := 1 TO HIINDEX(pdf.representation_associations);
    rep_set := rep_set + pdf.representation_associations[i].used_representation;
  END_REPEAT;
      parameter_representations := QUERY(rep
                                         <* rep_set
                                         | ('GEOMETRIC_TOLERANCE_MIM.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
                                            TYPEOF(rep)));
      IF (SIZEOF(QUERY(srwp
                       <* parameter_representations
                       | (SIZEOF(QUERY(i
                                       <* srwp.items
                                       | (i.name = 'orientation') AND ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(i)))) =
                          1))) <>
          1)
  THEN
    RETURN(FALSE);
  END_IF;
      CASE pdf\shape_aspect.description OF
    'point' : RETURN(SIZEOF(QUERY(srwp <* parameter_representations | (SIZEOF(srwp.items) = 1))) = 1);
    'circle', 'circular curve' : RETURN((SIZEOF(QUERY(srwp
                                                      <* parameter_representations
                                                      | (SIZEOF(srwp.items) = 2))) =
                                         1) AND
                                        (SIZEOF(QUERY(srwp
                                                      <* parameter_representations
                                                      | (SIZEOF(QUERY(i
                                                                      <* srwp.items
                                                                      | (i.name = 'target diameter') AND
                                                                        (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM',
                                                                                 'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT'] *
                                                                                TYPEOF(i)) =
                                                                         2))) =
                                                         1))) =
                                         1));
    'line' : RETURN(SIZEOF(QUERY(srwp
                                 <* parameter_representations
                                 | (SIZEOF(QUERY(i
                                                 <* srwp.items
                                                 | (i.name = 'target length') AND
                                                   (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM',
                                                            'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT'] *
                                                           TYPEOF(i)) =
                                                    2))) =
                                    1))) =
                    1);
    'rectangle' : RETURN((SIZEOF(QUERY(srwp <* parameter_representations | (SIZEOF(srwp.items) = 3))) = 1) AND
                         (SIZEOF(QUERY(srwp
                                       <* parameter_representations
                                       | (SIZEOF(QUERY(i
                                                       <* srwp.items
                                                       | (i.name = 'target length') AND
                                                         (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM',
                                                                  'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT'] *
                                                                 TYPEOF(i)) =
                                                          2))) =
                                          1))) =
                          1) AND
                         (SIZEOF(QUERY(srwp
                                       <* parameter_representations
                                       | (SIZEOF(QUERY(i
                                                       <* srwp.items
                                                       | (i.name = 'target width') AND
                                                         (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM',
                                                                  'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT'] *
                                                                 TYPEOF(i)) =
                                                          2))) =
                                          1))) =
                          1));
    OTHERWISE: RETURN(FALSE);
  END_CASE;
END_FUNCTION;
(*

Argument definitions:

pdf: the placed_datum_target_feature that is considered and checked.

5.2.3 MIM rule definitions

This subclause specifies the MIM rules for this module. The MIM rules and definitions are specified below.

5.2.3.1 non_uniform_zone_definition_constraint

The RULE non_uniform_zone_definition_constraint constrains data population of tolerance_zone_form and tolerance_zone_form for the case of a non-uniform zone.

EXPRESS specification:

*)
RULE non_uniform_zone_definition_constraint FOR
(tolerance_zone_definition, tolerance_zone, tolerance_zone_form);
    LOCAL
  tzf_set : SET OF tolerance_zone_form := QUERY(tzf
                                                <* tolerance_zone_form
                                                | tzf\tolerance_zone_form.name = 'non uniform');
  nuzd_set : SET OF tolerance_zone_definition := QUERY(tzd
                                                       <* tolerance_zone_definition
                                                       | 'SHAPE_TOLERANCE_SCHEMA.NON_UNIFORM_ZONE_DEFINITION' IN
                                                         TYPEOF(tzd));
    END_LOCAL;
WHERE
  WR1: QUERY(tzd <* nuzd_set | (tzd\tolerance_zone_definition.zone\tolerance_zone.form IN tzf_set)) = nuzd_set;
END_RULE;
(*

Argument definitions:

tolerance_zone_definition : the set of all instances of tolerance_zone_definition.

tolerance_zone : the set of all instances of tolerance_zone.

tolerance_zone_form : the set of all instances of tolerance_zone_form.

Formal propositions:

WR1: A non_uniform_zone_definition ENTITY instance shall be provided if and only if the specified tolerance_zone_form is 'non uniform'.

5.2.3.2 unique_gdt_element_id_constraint

The unique_gdt_element_id_constraint rule ensures that for each product_definition_shape, no more than one member of dimensional_location, dimensional_size, shape_aspect, and shape_aspect_relationship that are within the scope of that product_definition_shape has a specific value of the id attribute.

EXPRESS specification:

*)
RULE unique_gdt_element_id_constraint FOR
(product_definition_shape, dimensional_location, dimensional_size, shape_aspect, shape_aspect_relationship);
    LOCAL
  bss : BAG OF STRING := [];
  ds : SET OF dimensional_size := QUERY(ds <* dimensional_size | EXISTS(ds\dimensional_size.id));
  sa : SET OF shape_aspect := QUERY(sa <* shape_aspect | EXISTS(sa\shape_aspect.id));
  sar : SET OF shape_aspect_relationship := QUERY(sar
                                                  <* shape_aspect_relationship
                                                  | EXISTS(sar\shape_aspect_relationship.id));
  ssa : SET OF shape_aspect := [];
  pass : BOOLEAN := TRUE;
    END_LOCAL;
  REPEAT ii := 1 TO SIZEOF(product_definition_shape)
  WHILE pass;
    bss := [];
    ssa := bag_to_set(USEDIN(product_definition_shape[ii], 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE'));
    REPEAT i := 1 TO SIZEOF(ds);
      IF (ds[i]\dimensional_size.applies_to IN ssa)
      THEN
        bss := bss + ds[i]\dimensional_size.id;
      END_IF;
    END_REPEAT;
    REPEAT i := 1 TO SIZEOF(sa);
      IF (sa[i] IN ssa)
      THEN
        bss := bss + sa[i]\shape_aspect.id;
      END_IF;
    END_REPEAT;
    REPEAT i := 1 TO SIZEOF(sar);
      IF (sar[i]\shape_aspect_relationship.relating_shape_aspect IN ssa)
      THEN
        bss := bss + sar[i]\shape_aspect_relationship.id;
      END_IF;
    END_REPEAT;
    IF (SIZEOF(bag_to_set(bss)) <> SIZEOF(bss))
    THEN
      pass := FALSE;
    END_IF;
  END_REPEAT;
WHERE
  WR1: pass;
END_RULE;
(*

Argument definitions:

product_definition_shape : the set of all instances of product_definition_shape.

dimensional_location : the set of all instances of dimensional_location.

dimensional_size : the set of all instances of dimensional_size.

shape_aspect : the set of all instances of shape_aspect.

shape_aspect_relationship : the set of all instances of shape_aspect_relationship.

Formal propositions:

WR1: The local pass variable shall evaluate to TRUE.

5.2.3.3 tolerance_zone_form_name_constraint

The tolerance_zone_form_name_constraint rule ensures that each tolerance_zone_form has a name that is either 'within a circle', 'within a cylinder', 'within a cone', 'within a single complex surface', 'within a sphere', 'between two coaxial cylinders', 'between two concentric circles', 'between two equidistant curves', 'between two equidistant complex lines or two parallel straight lines', 'between two equidistant complex surfaces or two parallel planes', 'between two equidistant surfaces', 'between two non-equidistant complex lines or two non-parallel straight lines', 'between two non-equidistant complex surfaces or two non-parallel planes', 'between two parallel circles on a conical surface', 'between two parallel circles of the same diameter', 'non uniform', 'cylindrical or circular', 'spherical', or 'unknown'.

EXPRESS specification:

*)
RULE tolerance_zone_form_name_constraint FOR
(tolerance_zone_form);
    LOCAL
  names : SET OF STRING := ['within a circle',
                            'within a cylinder',
                            'within a cone',
                            'within a single complex surface',
                            'within a sphere',
                            'between two coaxial cylinders',
                            'between two concentric circles',
                            'between two equidistant curves',
                            'between two equidistant complex lines or two parallel straight lines',
                            'between two equidistant complex surfaces or two parallel planes',
                            'between two equidistant surfaces',
                            'between two non-equidistant complex lines or two non-parallel straight lines',
                            'between two non-equidistant complex surfaces or two non-parallel planes',
                            'between two parallel circles on a conical surface',
                            'between two parallel circles of the same diameter',
                            'non uniform',
                            'cylindrical or circular',
                            'spherical',
                            'unknown'];
  pass : BOOLEAN := TRUE;
    END_LOCAL;
  REPEAT i := 1 TO SIZEOF(tolerance_zone_form)
  WHILE pass;
    pass := (tolerance_zone_form[i].name IN names);
  END_REPEAT;
WHERE
  WR1: pass;
END_RULE;
(*

Argument definitions:

tolerance_zone_form : the set of all instances of tolerance_zone_form.

Formal propositions:

WR1: The local pass variable shall evaluate to TRUE.



*)
END_SCHEMA;  -- Geometric_tolerance_mim
(*


© ISO 2019 — All rights reserved