Application module: Geometric tolerance | ISO/TS 10303-1051:2019(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N10189 - ISO/TS 10303-1051 Geometric tolerance - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N9676
*)
SCHEMA Geometric_tolerance_arm;
USE FROM
Derived_shape_element_arm;
-- ISO/TS 10303-1130
USE FROM
Dimension_tolerance_arm;
-- ISO/TS 10303-1050
USE FROM
Feature_and_connection_zone_arm;
-- ISO/TS 10303-1671
USE FROM
Measure_representation_arm;
-- ISO/TS 10303-1118
USE FROM
Part_shape_arm;
-- ISO/TS 10303-1807
USE FROM
Shape_composition_arm;
-- ISO/TS 10303-1742
USE FROM
Support_resource_arm;
-- ISO/TS 10303-1800
USE FROM
Value_with_unit_extension_arm;
-- ISO/TS 10303-1753
TYPE area_unit_type =
EXTENSIBLE
ENUMERATION
OF
(circular,
square,
rectangular,
cylindrical,
spherical);
END_TYPE;
TYPE collection_plane_orientation =
EXTENSIBLE
ENUMERATION
OF
(perpendicular,
parallel);
END_TYPE;
TYPE common_datum_list =
LIST[1:?] OF Datum_reference_element;
END_TYPE;
TYPE datum_or_common_datum =
SELECT
(common_datum_list,
Datum);
END_TYPE;
TYPE datum_reference_modifier =
EXTENSIBLE
SELECT
(Datum_reference_modifier_with_value,
simple_datum_reference_modifier);
END_TYPE;
TYPE datum_reference_modifier_type =
EXTENSIBLE
ENUMERATION
OF
(circular_or_cylindrical,
spherical,
distance,
projected);
END_TYPE;
TYPE directed_or_oriented_geometric_tolerance_select =
SELECT
(Line_profile_tolerance,
Parallelism_tolerance,
Perpendicularity_tolerance,
Position_tolerance,
Straightness_tolerance,
Symmetry_tolerance);
END_TYPE;
TYPE directed_tolerance_zone_type =
ENUMERATION
OF
(perpendicular,
parallel,
including);
END_TYPE;
TYPE geometric_tolerance_auxiliary_classification_enum =
ENUMERATION
OF
(all_over,
unless_otherwise_specified);
END_TYPE;
TYPE geometric_tolerance_modifier =
EXTENSIBLE
ENUMERATION
OF
(circle_a,
maximum_material_requirement,
least_material_requirement,
reciprocity_requirement,
any_cross_section,
free_state,
common_zone,
minor_diameter,
major_diameter,
pitch_diameter,
line_element,
not_convex,
statistical_tolerance,
tangent_plane,
each_radial_element,
separate_requirement,
united_feature,
associated_minmax_feature,
associated_least_square_feature,
associated_minimum_inscribed_feature,
associated_tangent_feature,
associated_maximum_inscribed_feature);
END_TYPE;
TYPE geometric_tolerance_target =
EXTENSIBLE
GENERIC_ENTITY
SELECT
(Dimensional_location,
Dimensional_size,
Part_view_definition,
General_part_feature);
END_TYPE;
TYPE gps_filtration_specification_target =
EXTENSIBLE
GENERIC_ENTITY
SELECT
(Geometric_tolerance);
END_TYPE;
TYPE gps_filtration_type =
EXTENSIBLE
GENERIC_ENTITY
SELECT
(geometric_tolerance_modifier);
END_TYPE;
TYPE length_or_angle_data_element_select =
SELECT
(Length_data_element,
Angle_data_element);
END_TYPE;
TYPE oriented_tolerance_zone_type =
ENUMERATION
OF
(perpendicular,
parallel,
angular);
END_TYPE;
TYPE simple_datum_reference_modifier =
EXTENSIBLE
ENUMERATION
OF
(free_state,
basic,
translation,
least_material_requirement,
maximum_material_requirement,
point,
line,
plane,
orientation,
any_cross_section,
any_longitudinal_section,
contacting_feature,
distance_variable,
degree_of_freedom_constraint_x,
degree_of_freedom_constraint_y,
degree_of_freedom_constraint_z,
degree_of_freedom_constraint_u,
degree_of_freedom_constraint_v,
degree_of_freedom_constraint_w,
minor_diameter,
major_diameter,
pitch_diameter);
END_TYPE;
TYPE tolerance_zone_target =
SELECT
(Dimensional_location,
Dimensional_size,
General_datum_reference,
Geometric_tolerance);
END_TYPE;
TYPE tolerance_zone_type =
ENUMERATION
OF
(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,
not_known);
END_TYPE;
ENTITY Affected_plane_tolerance_zone
SUBTYPE OF (Directed_or_oriented_tolerance_zone);
affected_plane : Axis_placement_shape_element;
END_ENTITY;
ENTITY All_around_shape_element
SUBTYPE OF (Continuous_shape_element);
END_ENTITY;
ENTITY All_around_shape_element_along_collection_plane
SUBTYPE OF (All_around_shape_element);
base : Datum_system;
orientation : collection_plane_orientation;
END_ENTITY;
ENTITY Angularity_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
END_ENTITY;
ENTITY Axis_placement_shape_element
SUBTYPE OF (Shape_element);
SELF\Shape_element.identified_item : Axis_placement;
END_ENTITY;
ENTITY Between_shape_element
SUBTYPE OF (Continuous_shape_element);
start_features : SET[1:?] OF Shape_element;
end_features : SET[1:?] OF Shape_element;
WHERE
WR1: SIZEOF(QUERY(s <* start_features | NOT (s.product_definitional = TRUE))) = 0;
WR2: SIZEOF(QUERY(s <* end_features | NOT (s.product_definitional = TRUE))) = 0;
END_ENTITY;
ENTITY Circular_runout_tolerance
SUBTYPE OF (Geometric_tolerance);
angle :
OPTIONAL
REAL;
datum_system : Datum_system;
END_ENTITY;
ENTITY Coaxiality_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
END_ENTITY;
ENTITY Concentricity_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
END_ENTITY;
ENTITY Contacting_feature
SUBTYPE OF (Shape_element);
DERIVE
SELF\Shape_element.product_definitional : BOOLEAN := FALSE;
END_ENTITY;
ENTITY Continuous_shape_element
SUPERTYPE OF
(ONEOF (Between_shape_element,
All_around_shape_element))
SUBTYPE OF (Composite_shape_element);
END_ENTITY;
ENTITY Cylindricity_tolerance
SUBTYPE OF (Geometric_tolerance);
END_ENTITY;
ENTITY Datum
SUBTYPE OF (Shape_element);
identification : identifier;
END_ENTITY;
ENTITY Datum_feature
SUPERTYPE OF
(ONEOF (Dimensional_location_with_datum_feature,
Dimensional_size_with_datum_feature))
SUBTYPE OF (Shape_element);
of_datum : Datum;
DERIVE
SELF\Shape_element.product_definitional : BOOLEAN := TRUE;
UNIQUE
UR1: of_datum;
END_ENTITY;
ENTITY Datum_reference_compartment
SUBTYPE OF (General_datum_reference);
point_situation_feature :
OPTIONAL
Point_shape_element;
plane_situation_feature :
OPTIONAL
Plane_shape_element;
straight_line_situation_feature :
OPTIONAL
Axis_placement_shape_element;
INVERSE
owner : Datum_system FOR constituents;
END_ENTITY;
ENTITY Datum_reference_element
SUBTYPE OF (General_datum_reference);
DERIVE
usage : General_datum_reference := sts_get_general_datum_reference(SELF);
WHERE
WR1: SELF <> usage;
WR2: EXISTS(usage);
END_ENTITY;
ENTITY Datum_reference_modifier_with_value;
modifier_type : datum_reference_modifier_type;
modifier_value : Length_data_element;
END_ENTITY;
ENTITY Datum_system
SUBTYPE OF (Shape_element);
constituents : LIST[1:3] OF
UNIQUE
Datum_reference_compartment;
DERIVE
SELF\Shape_element.product_definitional : BOOLEAN := FALSE;
END_ENTITY;
ENTITY Datum_system_with_associated_model_coordinate_system
SUBTYPE OF (Axis_placement_shape_element, Datum_system);
END_ENTITY;
ENTITY Datum_target
ABSTRACT SUPERTYPE
OF (ONEOF (Placed_target,
Target_area,
Target_curve))
SUBTYPE OF (Shape_element);
target_id : STRING;
movement_direction :
OPTIONAL
Direction;
of_datum : Datum;
target_feature :
OPTIONAL
Shape_element;
UNIQUE
UR1: of_datum, target_id;
END_ENTITY;
ENTITY Dimensional_location_with_datum_feature
SUBTYPE OF (Datum_feature, Dimensional_location);
END_ENTITY;
ENTITY Dimensional_size_with_datum_feature
SUBTYPE OF (Datum_feature, Dimensional_size);
WHERE
WR1: SELF\Dimensional_size.is_applied_to :=: SELF;
END_ENTITY;
ENTITY Directed_or_oriented_tolerance_zone
ABSTRACT SUPERTYPE
OF (ONEOF (Tolerance_zone_with_datum,
Affected_plane_tolerance_zone))
SUBTYPE OF (Tolerance_zone);
SELF\Tolerance_zone.zone_for : SET[1:?] OF directed_or_oriented_geometric_tolerance_select;
END_ENTITY;
ENTITY Directed_tolerance_zone
SUBTYPE OF (Tolerance_zone_with_datum);
direction : directed_tolerance_zone_type;
END_ENTITY;
ENTITY Flatness_tolerance
SUBTYPE OF (Geometric_tolerance);
END_ENTITY;
ENTITY General_datum_reference
ABSTRACT SUPERTYPE
OF (ONEOF (Datum_reference_compartment,
Datum_reference_element))
SUBTYPE OF (Shape_element);
base : datum_or_common_datum;
modifiers :
OPTIONAL
SET[1:?] OF datum_reference_modifier;
DERIVE
SELF\Shape_element.product_definitional : BOOLEAN := FALSE;
END_ENTITY;
ENTITY Geometric_tolerance
ABSTRACT SUPERTYPE
OF (ONEOF (Angularity_tolerance,
Circular_runout_tolerance,
Coaxiality_tolerance,
Concentricity_tolerance,
Cylindricity_tolerance,
Flatness_tolerance,
Line_profile_tolerance,
Parallelism_tolerance,
Perpendicularity_tolerance,
Position_tolerance,
Roundness_tolerance,
Straightness_tolerance,
Surface_profile_tolerance,
Symmetry_tolerance,
Total_runout_tolerance));
id :
OPTIONAL
identifier;
name :
OPTIONAL
label;
applied_to : geometric_tolerance_target;
modifiers : SET[1:?] OF geometric_tolerance_modifier;
qualifying_note :
OPTIONAL
STRING;
first_unit_size :
OPTIONAL
length_or_angle_data_element_select;
area_unit_type :
OPTIONAL
area_unit_type;
second_unit_size :
OPTIONAL
length_or_angle_data_element_select;
tolerance_value : Value_with_unit;
unequally_disposed_tolerance_zone_displacement :
OPTIONAL
Value_with_unit;
INVERSE
auxiliary_classification : SET[0:?] OF Geometric_tolerance_auxiliary_classification FOR described_item;
WHERE
WR1: NOT (EXISTS(first_unit_size)) OR ('GEOMETRIC_TOLERANCE_ARM.LENGTH_MEASURE' IN TYPEOF(first_unit_size.value_component))
OR ('GEOMETRIC_TOLERANCE_ARM.PLANE_ANGLE_MEASURE' IN TYPEOF(first_unit_size.value_component));
WR2: NOT (EXISTS(second_unit_size) XOR (area_unit_type IN [area_unit_type.rectangular, area_unit_type.cylindrical, area_unit_type.spherical]));
WR3: NOT(area_unit_type = area_unit_type.cylindrical)
OR ('GEOMETRIC_TOLERANCE_ARM.LENGTH_DATA_ELEMENT' IN TYPEOF(first_unit_size))
AND ('GEOMETRIC_TOLERANCE_ARM.ANGLE_DATA_ELEMENT' IN TYPEOF(second_unit_size));
WR4: NOT (area_unit_type = area_unit_type.rectangular)
OR ('GEOMETRIC_TOLERANCE_ARM.LENGTH_DATA_ELEMENT' IN TYPEOF(first_unit_size))
AND ('GEOMETRIC_TOLERANCE_ARM.LENGTH_DATA_ELEMENT' IN TYPEOF(second_unit_size));
WR5: NOT(area_unit_type = area_unit_type.spherical)
OR ('GEOMETRIC_TOLERANCE_ARM.ANGLE_DATA_ELEMENT' IN TYPEOF(first_unit_size))
AND ('GEOMETRIC_TOLERANCE_ARM.ANGLE_DATA_ELEMENT' IN TYPEOF(second_unit_size));
WR6: NOT(area_unit_type = area_unit_type.spherical)
OR (SIZEOF(QUERY (tz <* USEDIN(SELF,'GEOMETRIC_TOLERANCE_ARM.TOLERANCE_ZONE.ZONE_FOR') |
('GEOMETRIC_TOLERANCE_ARM.ORIENTED_TOLERANCE_ZONE' IN TYPEOF(tz))
)) <> 0 );
WR7: 'VALUE_WITH_UNIT_ARM.LENGTH_UNIT' IN TYPEOF(unequally_disposed_tolerance_zone_displacement.Unit);
WR8: NOT (geometric_tolerance_modifier.circle_a IN modifiers)
OR ('PART_SHAPE_ARM.GENERAL_PART_FEATURE' IN TYPEOF(applied_to))
OR ('DIMENSION_TOLERANCE_ARM.DIMENSIONAL_SIZE' IN TYPEOF(applied_to));
END_ENTITY;
ENTITY Geometric_tolerance_auxiliary_classification;
attribute_value : geometric_tolerance_auxiliary_classification_enum;
described_item : Geometric_tolerance;
END_ENTITY;
ENTITY Geometric_tolerance_relationship;
relation_type : STRING;
relating : Geometric_tolerance;
related : Geometric_tolerance;
END_ENTITY;
ENTITY Gps_filter;
filter_type : gps_filtration_type;
filter_data : LIST[1:?] OF Value_with_unit;
INVERSE
owner : Gps_filtration_specification FOR filter_data;
WHERE
WR1: NOT ('GEOMETRIC_TOLERANCE_ARM.GEOMETRIC_TOLERANCE' IN TYPEOF(owner\Gps_filtration_specification.base_target)) AND
(SIZEOF([
geometric_tolerance_modifier.circle_a,
geometric_tolerance_modifier.maximum_material_requirement,
geometric_tolerance_modifier.least_material_requirement,
geometric_tolerance_modifier.reciprocity_requirement,
geometric_tolerance_modifier.any_cross_section,
geometric_tolerance_modifier.free_state,
geometric_tolerance_modifier.common_zone,
geometric_tolerance_modifier.minor_diameter,
geometric_tolerance_modifier.major_diameter,
geometric_tolerance_modifier.pitch_diameter,
geometric_tolerance_modifier.line_element,
geometric_tolerance_modifier.not_convex,
geometric_tolerance_modifier.statistical_tolerance,
geometric_tolerance_modifier.tangent_plane,
geometric_tolerance_modifier.each_radial_element,
geometric_tolerance_modifier.separate_requirement,
geometric_tolerance_modifier.united_feature,
geometric_tolerance_modifier.associated_minmax_feature,
geometric_tolerance_modifier.associated_least_square_feature,
geometric_tolerance_modifier.associated_minimum_inscribed_feature,
geometric_tolerance_modifier.associated_tangent_feature,
geometric_tolerance_modifier.associated_maximum_inscribed_feature ] *
owner\Gps_filtration_specification.base_target\Geometric_tolerance.modifiers) = 0 );
END_ENTITY;
ENTITY Gps_filtration_specification;
base_target : gps_filtration_specification_target;
filter_data : LIST[1:?] OF Gps_filter;
END_ENTITY;
ENTITY Line_profile_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system :
OPTIONAL
Datum_system;
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Non_uniform_zone_definition
SUBTYPE OF (Tolerance_zone_definition);
END_ENTITY;
ENTITY Oriented_tolerance_zone
SUBTYPE OF (Tolerance_zone_with_datum);
orientation : oriented_tolerance_zone_type;
angle :
OPTIONAL
Angle_data_element;
WHERE
WR1: (orientation <> oriented_tolerance_zone_type.angular) XOR EXISTS(angle);
END_ENTITY;
ENTITY Parallelism_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Perpendicularity_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Placed_target
ABSTRACT SUPERTYPE
OF (ONEOF (Target_circle,
Target_circular_curve,
Target_point,
Target_rectangle,
Target_straight_line))
SUBTYPE OF (Datum_target);
defined_in : Geometric_coordinate_space;
parameter_reference : Axis_placement;
END_ENTITY;
ENTITY Plane_shape_element
SUBTYPE OF (Shape_element);
SELF\Shape_element.identified_item : Plane;
END_ENTITY;
ENTITY Point_shape_element
SUBTYPE OF (Shape_element);
SELF\Shape_element.identified_item : Point;
END_ENTITY;
ENTITY Position_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system :
OPTIONAL
Datum_system;
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Projected_zone_definition
SUBTYPE OF (Tolerance_zone_definition);
projection_end : Shape_element;
projection_length : Length_data_element;
END_ENTITY;
ENTITY Projected_zone_definition_with_offset
SUBTYPE OF (Projected_zone_definition);
offset : Length_data_element;
END_ENTITY;
ENTITY Roundness_tolerance
SUBTYPE OF (Geometric_tolerance);
END_ENTITY;
ENTITY Runout_zone_definition
SUBTYPE OF (Tolerance_zone_definition);
angle : Angle_data_element;
orientation_defining_relationship :
OPTIONAL
Shape_element_relationship;
END_ENTITY;
ENTITY Straightness_tolerance
SUBTYPE OF (Geometric_tolerance);
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Surface_profile_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system :
OPTIONAL
Datum_system;
END_ENTITY;
ENTITY Symmetry_tolerance
SUBTYPE OF (Geometric_tolerance);
datum_system : Datum_system;
INVERSE
directed_or_oriented_tolerance_zone : SET[0:1] OF Directed_or_oriented_tolerance_zone FOR zone_for;
END_ENTITY;
ENTITY Target_area
SUBTYPE OF (Datum_target);
is_defined_by : Shape_element;
END_ENTITY;
ENTITY Target_circle
SUBTYPE OF (Placed_target);
diameter : Numerical_item_with_unit;
END_ENTITY;
ENTITY Target_circular_curve
SUBTYPE OF (Placed_target);
diameter : Numerical_item_with_unit;
END_ENTITY;
ENTITY Target_curve
SUBTYPE OF (Datum_target);
is_defined_by : Shape_element;
END_ENTITY;
ENTITY Target_point
SUBTYPE OF (Placed_target);
END_ENTITY;
ENTITY Target_rectangle
SUBTYPE OF (Placed_target);
target_length : Numerical_item_with_unit;
target_width : Numerical_item_with_unit;
END_ENTITY;
ENTITY Target_straight_line
SUBTYPE OF (Placed_target);
target_length : Numerical_item_with_unit;
END_ENTITY;
ENTITY Tolerance_zone
SUBTYPE OF (Shape_element);
form_type : tolerance_zone_type;
zone_for : SET[1:?] OF tolerance_zone_target;
END_ENTITY;
ENTITY Tolerance_zone_definition
SUPERTYPE OF
(ONEOF (Projected_zone_definition,
Non_uniform_zone_definition,
Runout_zone_definition));
zone : Tolerance_zone;
boundaries : SET[0:?] OF Shape_element;
END_ENTITY;
ENTITY Tolerance_zone_with_datum
SUPERTYPE OF
(ONEOF (Directed_tolerance_zone,
Oriented_tolerance_zone))
SUBTYPE OF (Directed_or_oriented_tolerance_zone);
datum_reference : Datum_system;
END_ENTITY;
ENTITY Total_runout_tolerance
SUBTYPE OF (Geometric_tolerance);
angle : Angle_data_element;
datum_system : Datum_system;
END_ENTITY;
SUBTYPE_CONSTRAINT composite_shape_element_subtypes FOR Composite_shape_element;
ONEOF (Continuous_shape_element,
Composite_group_shape_element);
END_SUBTYPE_CONSTRAINT;
SUBTYPE_CONSTRAINT gl_shape_element_subtypes FOR Shape_element;
ONEOF (Datum,
Datum_feature,
Datum_target,
Tolerance_zone,
Contacting_feature,
Datum_system,
General_datum_reference,
Axis_placement_shape_element,
Plane_shape_element,
Point_shape_element);
END_SUBTYPE_CONSTRAINT;
FUNCTION sts_get_general_datum_reference
(input : Datum_reference_element) : General_datum_reference;
LOCAL general_datum_reference_bag : BAG OF General_datum_reference := (USEDIN(input, 'GEOMETRIC_TOLERANCE_ARM.' + 'GENERAL_DATUM_REFERENCE.' + 'BASE')); END_LOCAL; IF SIZEOF(general_datum_reference_bag) = 1 THEN RETURN (general_datum_reference_bag[1]); ELSE RETURN (?); END_IF;
END_FUNCTION;
END_SCHEMA; -- Geometric_tolerance_arm
© ISO 2019 — All rights reserved