ISO 10303-238:2022(E)
The following EXPRESS is the expanded form of the short form schema given in 5.2. In the event of any discrepancy between the short form and this expanded listing, the expanded listing shall be used.
SCHEMA model_based_integrated_manufacturing_schema;
(*
ISO TC184/SC4/WG15N196 (superceeds N158)
ISO 10303-238 Edition 3
AIM EXPRESS LONG FORM
*)
CONSTANT
dummy_gri : geometric_representation_item :=
representation_item('') ||
geometric_representation_item();
dummy_tri : topological_representation_item :=
representation_item('') ||
topological_representation_item();
schema_prefix : STRING :=
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'
;
the_binarys : elementary_space :=
make_elementary_space(es_binarys);
the_booleans : elementary_space :=
make_elementary_space(es_booleans);
the_complex_numbers : elementary_space :=
make_elementary_space(
es_complex_numbers);
the_complex_tuples : extended_tuple_space :=
make_extended_tuple_space(
the_zero_tuple_space,
the_complex_numbers);
the_empty_atom_based_tuple : atom_based_tuple := [];
the_empty_atom_based_value : atom_based_value :=
the_empty_atom_based_tuple;
the_empty_maths_tuple : maths_tuple := [];
the_empty_maths_value : maths_value := the_empty_maths_tuple;
the_empty_space : finite_space := make_finite_space([]);
the_generics : elementary_space :=
make_elementary_space(es_generics);
the_integer_tuples : extended_tuple_space :=
make_extended_tuple_space(
the_zero_tuple_space, the_integers);
the_integers : elementary_space :=
make_elementary_space(es_integers);
the_logicals : elementary_space :=
make_elementary_space(es_logicals);
the_maths_spaces : elementary_space :=
make_elementary_space(
es_maths_spaces);
the_neg1_one_interval : finite_real_interval :=
make_finite_real_interval(-1, closed
, 1, closed);
the_neghalfpi_halfpi_interval : finite_real_interval :=
make_finite_real_interval(-0.5 * PI,
closed, 0.5 * PI, closed);
the_negpi_pi_interval : finite_real_interval :=
make_finite_real_interval(-PI, open,
PI, closed);
the_nonnegative_reals : real_interval_from_min :=
make_real_interval_from_min(0,
closed);
the_numbers : elementary_space :=
make_elementary_space(es_numbers);
the_real_tuples : extended_tuple_space :=
make_extended_tuple_space(
the_zero_tuple_space, the_reals);
the_reals : elementary_space :=
make_elementary_space(es_reals);
the_strings : elementary_space :=
make_elementary_space(es_strings);
the_tuples : extended_tuple_space :=
make_extended_tuple_space(
the_zero_tuple_space, the_generics);
the_zero_one_interval : finite_real_interval :=
make_finite_real_interval(0, closed,
1, closed);
the_zero_pi_interval : finite_real_interval :=
make_finite_real_interval(0, closed,
PI, closed);
the_zero_tuple_space : listed_product_space :=
make_listed_product_space([]);
END_CONSTANT;
TYPE absorbed_dose_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE acceleration_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE action_items = SELECT
(action,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_person_and_organization_assignment,
approval_status,
assembly_component_usage_substitute,
certification,
characterized_object,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
dimensional_location,
dimensional_size,
directed_dimensional_location,
document_file,
document_type,
general_property,
identification_item,
material_designation,
organization_relationship,
organizational_project,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
property_definition_relationship,
security_classification,
security_classification_level,
shape_aspect,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1047: activity_mim
TYPE action_method_items = SELECT
(action,
action_method,
action_property,
applied_action_assignment,
characterized_object,
configuration_design,
configuration_item,
contract,
dimensional_location,
dimensional_size,
document_file,
event_occurrence,
geometric_tolerance,
machining_cutting_component,
machining_execution_resource,
machining_tool,
organization,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
shape_aspect);
END_TYPE; -- 10303-1249: activity_method_assignment_mim
TYPE action_request_item = SELECT
(action,
action_method,
action_property,
action_relationship,
alternate_product_relationship,
assembly_component_usage_substitute,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
document_file,
general_property,
material_designation,
organizational_project,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_relationship,
product_definition_substitute,
property_definition,
shape_aspect,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1042: work_request_mim
TYPE actuated_direction = ENUMERATION OF
(bidirectional,
positive_only,
negative_only,
not_actuated);
END_TYPE; -- 10303-105: kinematic_structure_schema
TYPE ahead_or_behind = ENUMERATION OF
(ahead,
exact,
behind);
END_TYPE; -- 10303-41: date_time_schema
TYPE amount_of_substance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE angle_relator = ENUMERATION OF
(equal,
large,
small);
END_TYPE; -- 10303-47: shape_dimension_schema
TYPE angular_deviation = positive_plane_angle_measure;
END_TYPE; -- 10303-42: geometric_model_schema
TYPE annotation_placeholder_occurrence_role = ENUMERATION OF
(annotation_text,
gps_data);
END_TYPE; -- 10303-113: mechanical_design_schema
TYPE annotation_plane_element = SELECT
(draughting_callout,
styled_item);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE annotation_representation_select = SELECT
(draughting_model,
presentation_area,
presentation_view,
symbol_representation);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE annotation_symbol_occurrence_item = SELECT
(annotation_symbol,
defined_symbol);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE annotation_text_occurrence_item = SELECT
(annotation_text,
composite_text,
defined_character_glyph,
text_literal);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE approval_item = SELECT
(action,
action_directive,
action_property,
action_request_solution,
applied_action_assignment,
applied_classification_assignment,
applied_usage_right,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
date,
directed_action,
document,
effectivity,
executed_action,
general_property,
general_property_relationship,
group,
group_relationship,
information_usage_right,
material_designation,
organizational_project,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
representation,
requirement_assignment,
security_classification,
shape_aspect_relationship,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1012: approval_mim
TYPE area_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE area_or_view = SELECT
(presentation_area,
presentation_view);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE area_unit_type = ENUMERATION OF
(spherical,
cylindrical,
rectangular,
square,
circular);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE atom_based_tuple = LIST OF atom_based_value;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE atom_based_value = SELECT
(atom_based_tuple,
maths_atom);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE attribute_classification_item = SELECT
(action_directive,
action_method,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
action_request_status,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
certification,
context_dependent_unit,
contract,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
document_file,
document_relationship,
effectivity,
event_occurrence_relationship,
executed_action,
general_property,
general_property_relationship,
group,
group_relationship,
information_right,
information_usage_right,
language,
measure_representation_item,
measure_with_unit,
named_unit,
organization_relationship,
organizational_address,
organizational_project_relationship,
person_and_organization,
person_and_organization_address,
product,
product_category,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
property_definition_relationship,
property_definition_representation,
representation,
representation_context,
representation_item,
security_classification,
time_interval_relationship,
uncertainty_measure_with_unit,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1246: attribute_classification_mim
TYPE attribute_language_item = SELECT
(action,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_organizational_project_assignment,
approval,
approval_relationship,
approval_status,
attribute_value_assignment,
certification,
certification_type,
contract,
data_environment,
date_role,
date_time_role,
document_relationship,
document_usage_role,
external_source,
group,
group_relationship,
identification_role,
information_right,
information_usage_right,
multi_language_attribute_assignment,
name_assignment,
object_role,
organization_relationship,
organizational_project,
organizational_project_relationship,
organizational_project_role,
person_and_organization,
product,
product_concept_feature,
product_concept_feature_association,
product_definition,
product_definition_formation,
product_definition_relationship,
product_definition_substitute,
property_definition_relationship,
representation,
representation_relationship,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1105: multi_linguism_mim
TYPE attribute_type = SELECT
(label,
text);
END_TYPE; -- 10303-41: management_resources_schema
TYPE axis2_placement = SELECT
(axis2_placement_2d,
axis2_placement_3d);
END_TYPE; -- 10303-42: geometry_schema
TYPE b_spline_curve_form = ENUMERATION OF
(polyline_form,
circular_arc,
elliptic_arc,
parabolic_arc,
hyperbolic_arc,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE b_spline_surface_form = ENUMERATION OF
(plane_surf,
cylindrical_surf,
conical_surf,
spherical_surf,
toroidal_surf,
surf_of_revolution,
ruled_surf,
generalised_cone,
quadric_surf,
surf_of_linear_extrusion,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE boolean_operand = SELECT
(boolean_result,
csg_primitive,
half_space_solid,
solid_model);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE boolean_operator = ENUMERATION OF
(union,
intersection,
difference);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE box_characteristic_select = SELECT
(box_height,
box_rotate_angle,
box_slant_angle,
box_width);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE box_height = positive_ratio_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE box_rotate_angle = plane_angle_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE box_slant_angle = plane_angle_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE box_width = positive_ratio_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE camera_model_d3_multi_clipping_intersection_select = SELECT
(camera_model_d3_multi_clipping_union,
plane);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE camera_model_d3_multi_clipping_union_select = SELECT
(camera_model_d3_multi_clipping_intersection,
plane);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE capacitance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE category_usage_item = SELECT
(product_class);
END_TYPE; -- 10303-1103: product_class_mim
TYPE celsius_temperature_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE central_or_parallel = ENUMERATION OF
(central,
parallel);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE certification_item = SELECT
(alternate_product_relationship,
make_from_usage_option,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship);
END_TYPE; -- 10303-1044: certification_mim
TYPE chained_representation_link = SELECT
(mapped_item,
representation_context,
representation_relationship);
END_TYPE; -- 10303-41: product_property_representation_schema
TYPE character_spacing_select = SELECT
(descriptive_measure,
length_measure,
measure_with_unit,
ratio_measure);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE character_style_select = SELECT
(character_glyph_style_outline,
character_glyph_style_stroke,
text_style_for_defined_font);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE characterized_action_definition = SELECT
(action,
action_method,
action_method_relationship,
action_relationship);
END_TYPE; -- 10303-49: process_property_schema
TYPE characterized_definition = SELECT
(characterized_item,
characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE characterized_item = SELECT
(dimensional_size,
geometric_tolerance,
item_identified_representation_usage);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE characterized_material_property = SELECT
(material_property_representation);
END_TYPE; -- 10303-45: material_property_definition_schema
TYPE characterized_product_definition = SELECT
(product_definition,
product_definition_occurrence,
product_definition_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE characterized_property_representation = SELECT
(action_property_representation,
dimensional_characteristic_representation,
property_definition_representation,
resource_property_representation);
END_TYPE; -- 10303-45: material_property_representation_schema
TYPE characterized_resource_definition = SELECT
(action_resource,
action_resource_relationship,
action_resource_requirement);
END_TYPE; -- 10303-49: process_property_schema
TYPE chordal_deviation = positive_length_measure;
END_TYPE; -- 10303-42: geometric_model_schema
TYPE class_usage_effectivity_context_item = SELECT
(product_definition);
END_TYPE; -- 10303-1112: specification_control_mim
TYPE classification_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
action_request_status,
action_resource,
action_resource_relationship,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_date_and_time_assignment,
applied_date_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
calendar_date,
certification,
characterized_object,
class,
classified_item,
configuration_item,
context_dependent_unit,
contract,
conversion_based_unit,
date_and_time,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
directed_action,
document_file,
document_relationship,
document_type,
effectivity,
event_occurrence,
executed_action,
externally_defined_representation_with_parameters,
general_property,
general_property_relationship,
group,
identification_assignment,
information_right,
information_usage_right,
language,
material_designation,
measure_representation_item,
measure_with_unit,
multi_language_attribute_assignment,
named_unit,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_relationship,
person,
person_and_organization_address,
product,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
security_classification,
security_classification_level,
shape_aspect,
uncertainty_measure_with_unit,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1114: classification_assignment_mim
TYPE classified_item = SELECT
(product,
product_definition,
product_definition_formation);
END_TYPE; -- 10303-1111: classification_with_attributes_mim
TYPE colour_type_enum = ENUMERATION OF
(rgb8,
rgbt8);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE common_datum_list = LIST [2:?] OF datum_reference_element;
WHERE
WR1: SIZEOF(QUERY (dre <* SELF| (dre\shape_aspect.of_shape <> SELF[1]\
shape_aspect.of_shape))) = 0;
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE compound_item_definition = SELECT
(list_representation_item,
set_representation_item);
END_TYPE; -- 10303-43: representation_schema
TYPE conductance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE configuration_design_item = SELECT
(product_definition,
product_definition_formation,
product_definition_occurrence);
END_TYPE; -- 10303-44: configuration_management_schema
TYPE configured_effectivity_context_item = SELECT
(product_concept_feature_association);
END_TYPE; -- 10303-1108: specification_based_configuration_mim
TYPE configured_effectivity_item = SELECT
(action_relationship,
product_definition);
END_TYPE; -- 10303-1108: specification_based_configuration_mim
TYPE constructive_geometry_representation_or_shape_representation = SELECT
(constructive_geometry_representation,
shape_representation);
END_TYPE; -- 10303-1131: construction_geometry_mim
TYPE context_dependent_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE contract_item = SELECT
(action_directive,
alternate_product_relationship,
directed_action,
information_usage_right,
organization,
person_and_organization,
product,
product_definition_formation);
END_TYPE; -- 10303-1062: contract_mim
TYPE count_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
TYPE csg_primitive = SELECT
(block,
cyclide_segment_solid,
eccentric_cone,
ellipsoid,
faceted_primitive,
rectangular_pyramid,
right_angular_wedge,
right_circular_cone,
right_circular_cylinder,
sphere,
torus);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE csg_select = SELECT
(boolean_result,
csg_primitive);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE curve_font_or_scaled_curve_font_select = SELECT
(curve_style_font_and_scaling,
curve_style_font_select);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE curve_on_surface = SELECT
(composite_curve_on_surface,
pcurve,
surface_curve);
END_TYPE; -- 10303-42: geometry_schema
TYPE curve_or_annotation_curve_occurrence = SELECT
(annotation_curve_occurrence,
curve);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE curve_or_curve_set = SELECT
(curve,
geometric_curve_set);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE curve_or_render = SELECT
(curve_style,
curve_style_rendering);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE curve_style_font_select = SELECT
(curve_style_font,
externally_defined_curve_font,
pre_defined_curve_font);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE date_and_time_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval_person_organization,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
contract,
directed_action,
document,
document_file,
effectivity,
event_occurrence,
executed_action,
general_property,
information_usage_right,
machining_operation,
machining_process_executable,
machining_toolpath,
material_designation,
organization_relationship,
organizational_project,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1014: date_time_assignment_mim
TYPE date_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval_person_organization,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
contract,
directed_action,
document,
document_file,
effectivity,
event_occurrence,
executed_action,
general_property,
information_usage_right,
material_designation,
organization_relationship,
organizational_project,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1014: date_time_assignment_mim
TYPE date_time_or_event_occurrence = SELECT
(date_time_select,
event_occurrence);
END_TYPE; -- 10303-41: date_time_schema
TYPE date_time_select = SELECT
(date,
date_and_time,
local_time);
END_TYPE; -- 10303-41: date_time_schema
TYPE datum_or_common_datum = SELECT
(common_datum_list,
datum);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE datum_reference_modifier = SELECT
(datum_reference_modifier_with_value,
simple_datum_reference_modifier);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE datum_reference_modifier_type = ENUMERATION OF
(projected,
distance,
spherical,
circular_or_cylindrical);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE datum_system_or_reference = SELECT
(datum_reference,
datum_system);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE day_in_month_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 31);
END_TYPE; -- 10303-41: date_time_schema
TYPE day_in_week_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 7);
END_TYPE; -- 10303-41: date_time_schema
TYPE day_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 366);
END_TYPE; -- 10303-41: date_time_schema
TYPE defined_glyph_select = SELECT
(externally_defined_character_glyph,
pre_defined_character_glyph);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE defined_symbol_select = SELECT
(externally_defined_symbol,
pre_defined_symbol);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE derived_property_select = SELECT
(action_property,
dimensional_location,
dimensional_size,
geometric_tolerance,
property_definition,
resource_property);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE des_apll_point_select = SELECT
(apll_point,
apll_point_with_surface);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE des_apll_point_symbol = ENUMERATION OF
(circle,
dot,
internal_pair_forward_arrowhead,
internal_pair_reverse_arrowhead,
none,
positive_arrowhead,
triangle);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE description_attribute_select = SELECT
(action_request_solution,
application_context,
approval_role,
configuration_design,
context_dependent_shape_representation,
date_role,
date_time_role,
effectivity,
external_source,
organization_role,
organizational_project,
person_and_organization,
person_and_organization_role,
property_definition_representation,
representation);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE descriptive_measure = STRING;
END_TYPE; -- 10303-41: measure_schema
TYPE dimension_count = INTEGER;
WHERE
WR1: SELF > 0;
END_TYPE; -- 10303-42: geometry_schema
TYPE dimension_extent_usage = ENUMERATION OF
(origin,
target);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE dimensional_characteristic = SELECT
(dimensional_location,
dimensional_size);
END_TYPE; -- 10303-47: shape_dimension_schema
TYPE directed_tolerance_zone_type = ENUMERATION OF
(perpendicular,
parallel,
including);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE direction_count_select = SELECT
(u_direction_count,
v_direction_count);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE document_identifier_assigned_item = SELECT
(document);
END_TYPE; -- 10303-1747: specification_document_mim
TYPE document_reference_item = SELECT
(action_directive,
action_method,
action_relationship,
applied_action_assignment,
applied_external_identification_assignment,
approval,
assembly_component_usage,
certification,
characterized_class,
characterized_object,
class,
class_system,
configuration_design,
configuration_item,
contract,
descriptive_representation_item,
dimensional_size,
executed_action,
externally_defined_dimension_definition,
externally_defined_item,
general_property,
group,
group_relationship,
information_right,
information_usage_right,
material_designation,
measure_representation_item,
organization,
organizational_project,
person,
product,
product_category,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_substitute,
product_related_product_category,
property_definition,
representation,
representation_item,
security_classification,
shape_aspect,
shape_aspect_relationship,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1122: document_assignment_mim
TYPE dose_equivalent_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE dotted_express_identifier = STRING;
WHERE
SYNTAX: dotted_identifiers_syntax(SELF);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE draughting_callout_element = SELECT
(annotation_curve_occurrence,
annotation_fill_area_occurrence,
annotation_placeholder_occurrence,
annotation_symbol_occurrence,
annotation_text_occurrence,
tessellated_annotation_occurrence);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE draughting_model_item_association_select = SELECT
(annotation_occurrence,
draughting_callout);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE draughting_model_item_definition = SELECT
(angularity_tolerance,
circular_runout_tolerance,
coaxiality_tolerance,
concentricity_tolerance,
cylindricity_tolerance,
dimensional_location,
dimensional_size,
flatness_tolerance,
geometric_tolerance,
geometric_tolerance_with_datum_reference,
geometric_tolerance_with_defined_area_unit,
geometric_tolerance_with_defined_unit,
geometric_tolerance_with_maximum_tolerance,
geometric_tolerance_with_modifiers,
line_profile_tolerance,
modified_geometric_tolerance,
parallelism_tolerance,
perpendicularity_tolerance,
position_tolerance,
product_definition_shape,
property_definition,
roundness_tolerance,
shape_aspect,
shape_aspect_relationship,
straightness_tolerance,
surface_profile_tolerance,
symmetry_tolerance,
total_runout_tolerance,
unequally_disposed_geometric_tolerance);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE draughting_model_item_select = SELECT
(axis2_placement,
camera_model,
draughting_callout,
mapped_item,
styled_item);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE draughting_subfigure_representation_item = SELECT
(annotation_occurrence,
axis2_placement,
draughting_callout);
END_TYPE; -- 10303-504: aic_draughting_annotation
TYPE draughting_symbol_representation_item = SELECT
(annotation_curve_occurrence,
annotation_fill_area_occurrence,
annotation_symbol_occurrence,
annotation_text_occurrence,
axis2_placement);
END_TYPE; -- 10303-504: aic_draughting_annotation
TYPE edge_or_curve = SELECT
(curve,
edge_curve);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE effectivity_item = SELECT
(action,
action_method,
action_method_relationship,
action_property,
action_relationship,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
document_file,
general_property,
material_designation,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
security_classification,
shape_aspect,
shape_representation);
END_TYPE; -- 10303-1059: effectivity_application_mim
TYPE electric_charge_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE electric_current_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE electric_potential_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE elementary_function_enumerators = ENUMERATION OF
(ef_and,
ef_or,
ef_not,
ef_xor,
ef_negate_i,
ef_add_i,
ef_subtract_i,
ef_multiply_i,
ef_divide_i,
ef_mod_i,
ef_exponentiate_i,
ef_eq_i,
ef_ne_i,
ef_gt_i,
ef_lt_i,
ef_ge_i,
ef_le_i,
ef_abs_i,
ef_max_i,
ef_min_i,
ef_if_i,
ef_negate_r,
ef_reciprocal_r,
ef_add_r,
ef_subtract_r,
ef_multiply_r,
ef_divide_r,
ef_mod_r,
ef_exponentiate_r,
ef_exponentiate_ri,
ef_eq_r,
ef_ne_r,
ef_gt_r,
ef_lt_r,
ef_ge_r,
ef_le_r,
ef_abs_r,
ef_max_r,
ef_min_r,
ef_acos_r,
ef_asin_r,
ef_atan2_r,
ef_cos_r,
ef_exp_r,
ef_ln_r,
ef_log2_r,
ef_log10_r,
ef_sin_r,
ef_sqrt_r,
ef_tan_r,
ef_if_r,
ef_form_c,
ef_rpart_c,
ef_ipart_c,
ef_negate_c,
ef_reciprocal_c,
ef_add_c,
ef_subtract_c,
ef_multiply_c,
ef_divide_c,
ef_exponentiate_c,
ef_exponentiate_ci,
ef_eq_c,
ef_ne_c,
ef_conjugate_c,
ef_abs_c,
ef_arg_c,
ef_cos_c,
ef_exp_c,
ef_ln_c,
ef_sin_c,
ef_sqrt_c,
ef_tan_c,
ef_if_c,
ef_subscript_s,
ef_eq_s,
ef_ne_s,
ef_gt_s,
ef_lt_s,
ef_ge_s,
ef_le_s,
ef_subsequence_s,
ef_concat_s,
ef_size_s,
ef_format,
ef_value,
ef_like,
ef_if_s,
ef_subscript_b,
ef_eq_b,
ef_ne_b,
ef_gt_b,
ef_lt_b,
ef_ge_b,
ef_le_b,
ef_subsequence_b,
ef_concat_b,
ef_size_b,
ef_if_b,
ef_subscript_t,
ef_eq_t,
ef_ne_t,
ef_concat_t,
ef_size_t,
ef_entuple,
ef_detuple,
ef_insert,
ef_remove,
ef_if_t,
ef_sum_it,
ef_product_it,
ef_add_it,
ef_subtract_it,
ef_scalar_mult_it,
ef_dot_prod_it,
ef_sum_rt,
ef_product_rt,
ef_add_rt,
ef_subtract_rt,
ef_scalar_mult_rt,
ef_dot_prod_rt,
ef_norm_rt,
ef_sum_ct,
ef_product_ct,
ef_add_ct,
ef_subtract_ct,
ef_scalar_mult_ct,
ef_dot_prod_ct,
ef_norm_ct,
ef_if,
ef_ensemble,
ef_member_of);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE elementary_space_enumerators = ENUMERATION OF
(es_numbers,
es_complex_numbers,
es_reals,
es_integers,
es_logicals,
es_booleans,
es_strings,
es_binarys,
es_maths_spaces,
es_maths_functions,
es_generics);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE energy_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE event_occurrence_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
executed_action,
general_property,
material_designation,
organization_relationship,
organizational_project,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
security_classification_level,
shape_representation);
END_TYPE; -- 10303-1364: event_assignment_mim
TYPE express_identifier = dotted_express_identifier;
WHERE
SYNTAX: dot_count(SELF) = 0;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE expression_element = SELECT
(expression);
END_TYPE; -- 10303-61: systems_engineering_representation_schema
TYPE extension_options = ENUMERATION OF
(eo_none,
eo_cont,
eo_cont_right,
eo_cont_left);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE extent_enumeration = ENUMERATION OF
(invalid,
zero,
finite_non_zero,
infinite);
END_TYPE; -- 10303-42: geometry_schema
TYPE external_identification_item = SELECT
(action_relationship,
action_request_status,
applied_external_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
approval,
approval_status,
date_and_time_assignment,
date_assignment,
document_file,
external_source,
externally_defined_class,
externally_defined_general_property,
externally_defined_representation_item,
generic_product_definition_reference,
organizational_address,
product_definition,
security_classification,
trimmed_curve,
versioned_action_request);
END_TYPE; -- 10303-1128: external_item_identification_assignment_mim
TYPE face_or_surface = SELECT
(face_surface,
surface);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE fill_area_style_tile_shape_select = SELECT
(externally_defined_tile,
fill_area_style_tile_coloured_region,
fill_area_style_tile_curve_with_style,
fill_area_style_tile_symbol_with_style,
pre_defined_tile);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE fill_style_select = SELECT
(externally_defined_hatch_style,
externally_defined_tile_style,
fill_area_style_colour,
fill_area_style_hatching,
fill_area_style_tiles);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE font_select = SELECT
(externally_defined_text_font,
pre_defined_text_font);
END_TYPE; -- 10303-46: presentation_resource_schema
TYPE force_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE founded_item_select = SELECT
(founded_item,
representation_item);
END_TYPE; -- 10303-43: representation_schema
TYPE frequency_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE generic_attribute_list_select = SELECT
(address,
person);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE generic_attribute_select = SELECT
(address);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE geometric_item_specific_usage_select = SELECT
(shape_aspect,
shape_aspect_relationship);
END_TYPE; -- 10303-1032: shape_property_assignment_mim
TYPE geometric_model_item = SELECT
(connected_face_set,
edge_loop,
geometric_representation_item);
END_TYPE; -- 10303-1032: shape_property_assignment_mim
TYPE geometric_set_select = SELECT
(annotation_text,
curve,
placement,
planar_box,
point,
surface);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE geometric_tolerance_auxiliary_classification_enum = ENUMERATION OF
(all_over,
unless_otherwise_specified);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE geometric_tolerance_modifier = ENUMERATION OF
(standard_deviation,
valley_depth,
peak_height,
total_range_deviations,
reference_maximum_inscribed_feature,
reference_minimum_circumscribed_feature,
reference_least_square_feature_with_internal_material_constraint,
reference_least_square_feature_with_external_material_constraint,
reference_least_square_feature_without_constraint,
reference_minimax_feature_with_internal_material_constraint,
reference_minimax_feature_with_external_material_constraint,
reference_minimax_feature_without_constraint,
associated_maximum_inscribed_feature,
associated_tangent_feature,
associated_minimum_inscribed_feature,
associated_least_square_feature,
associated_minmax_feature,
united_feature,
separate_requirement,
each_radial_element,
tangent_plane,
statistical_tolerance,
not_convex,
line_element,
pitch_diameter,
major_diameter,
minor_diameter,
common_zone,
free_state,
any_cross_section,
reciprocity_requirement,
least_material_requirement,
maximum_material_requirement,
circle_a);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE geometric_tolerance_target = SELECT
(dimensional_location,
dimensional_size,
product_definition_shape,
shape_aspect);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE gps_filtration_specification_target = SELECT
(geometric_tolerance);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE gps_filtration_type = SELECT
(geometric_tolerance_modifier);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE groupable_item = SELECT
(applied_identification_assignment,
applied_name_assignment,
group_relationship,
instanced_feature,
package_product_concept_feature,
product_concept_feature,
product_definition,
product_definition_formation,
property_definition_representation,
replicate_feature,
representation,
representation_item,
shape_aspect,
shape_aspect_relationship,
transition_feature);
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GROUP' IN TYPEOF
(SELF));
END_TYPE; -- 10303-1113: group_mim
TYPE hour_in_day = INTEGER;
WHERE
WR1: (0 <= SELF) AND (SELF < 24);
END_TYPE; -- 10303-41: date_time_schema
TYPE id_attribute_select = SELECT
(action,
address,
application_context,
dimensional_size,
geometric_tolerance,
group,
organizational_project,
product_category,
property_definition,
representation,
shape_aspect,
shape_aspect_relationship,
topological_representation_item);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE identification_item = SELECT
(action,
action_directive,
action_method,
action_property,
applied_identification_assignment,
approval_status,
class,
class_system,
configuration_item,
contract,
dimensional_size,
document_file,
document_type,
effectivity,
group,
group_relationship,
information_right,
information_usage_right,
material_designation,
measure_representation_item,
organization,
organizational_project,
person_and_organization,
product,
product_category,
product_class,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_relationship,
product_identification,
property_definition,
property_definition_relationship,
representation,
security_classification,
security_classification_level,
shape_aspect_relationship,
shape_representation,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1021: identification_assignment_mim
TYPE identifier = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE idrm_marked_item = SELECT
(document_file,
product_definition);
END_TYPE; -- 10303-1349: incomplete_data_reference_mechanism_mim
TYPE illuminance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE inductance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE input_selector = positive_integer;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE instance_usage_context_select = SELECT
(product_definition_relationship,
product_definition_usage);
END_TYPE; -- 10303-1112: specification_control_mim
TYPE interpolation_type = ENUMERATION OF
(undefined_interpolation_type,
discontinuous_interpolation_type,
synchronous_interpolation_type,
linear_interpolation_type);
END_TYPE; -- 10303-105: kinematic_motion_representation_schema
TYPE invisibility_context = SELECT
(draughting_model,
presentation_representation,
presentation_set);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE invisible_item = SELECT
(draughting_callout,
presentation_layer_assignment,
representation,
styled_item);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE ir_usage_item = action_items;
END_TYPE; -- 10303-1241: information_rights_mim
TYPE item_identified_representation_usage_definition = SELECT
(characterized_object,
dimensional_size,
geometric_tolerance,
represented_definition);
END_TYPE; -- 10303-41: product_property_representation_schema
TYPE item_identified_representation_usage_select = SELECT
(list_representation_item,
representation_item,
set_representation_item);
END_TYPE; -- 10303-41: product_property_representation_schema
TYPE kinematic_analysis_definition = SELECT
(interpolated_configuration_sequence,
prescribed_path);
END_TYPE; -- 10303-105: kinematic_analysis_control_and_result_schema
TYPE kinematic_link_representation_items = SELECT
(curve,
point,
rigid_placement,
surface);
END_TYPE; -- 10303-105: kinematic_structure_schema
TYPE kinematic_result = SELECT
(interpolated_configuration_sequence,
resulting_path);
END_TYPE; -- 10303-105: kinematic_analysis_control_and_result_schema
TYPE kinematic_topology_representation_select = SELECT
(kinematic_topology_directed_structure,
kinematic_topology_network_structure,
kinematic_topology_structure);
END_TYPE; -- 10303-105: kinematic_topology_schema
TYPE knot_type = ENUMERATION OF
(uniform_knots,
quasi_uniform_knots,
piecewise_bezier_knots,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE label = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE layered_item = SELECT
(presentation_representation,
representation_item);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE length_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE length_or_plane_angle_measure_with_unit_select = SELECT
(length_measure_with_unit,
plane_angle_measure_with_unit);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE length_to_height_ratio = ratio_measure;
END_TYPE; -- 10303-42: geometric_model_schema
TYPE limit_condition = ENUMERATION OF
(maximum_material_condition,
least_material_condition,
regardless_of_feature_size);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE linearly_independent_enum = ENUMERATION OF
(independent,
not_independent,
not_tested);
END_TYPE; -- 10303-42: geometry_schema
TYPE link_or_shape_representation = SELECT
(kinematic_link_representation,
shape_representation);
END_TYPE; -- 10303-105: kinematic_motion_representation_schema
TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
TYPE list_representation_item = LIST [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
TYPE locally_refined_spline_type_enum = ENUMERATION OF
(analysis_suitable_t_spline,
hierarchical_b_spline,
lr_b_spline,
semi_standard_t_spline,
standard_t_spline);
END_TYPE; -- 10303-42: geometry_schema
TYPE lower_upper = ENUMERATION OF
(lower,
upper);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE luminous_flux_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE luminous_intensity_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE machining_feature_definition = SELECT
(boss,
compound_feature,
externally_defined_feature_definition,
flat_face,
gear,
marking,
outer_round,
outside_profile,
pocket,
protrusion,
removal_volume,
replicate_feature,
revolved_profile,
rib_top,
round_hole,
rounded_end,
slot,
spherical_cap,
step,
thread,
turned_knurl);
END_TYPE; -- 10303-113: machining_feature_schema
TYPE magnetic_flux_density_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE magnetic_flux_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE marker_select = SELECT
(marker_type,
pre_defined_marker);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE marker_type = ENUMERATION OF
(dot,
x,
plus,
asterisk,
ring,
square,
triangle);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE mass_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE maths_atom = SELECT
(maths_enum_atom,
maths_simple_atom);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_binary = BINARY;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_boolean = BOOLEAN;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_enum_atom = SELECT
(elementary_function_enumerators,
elementary_space_enumerators,
extension_options,
lower_upper,
open_closed,
ordering_type,
repackage_options,
space_constraint_type,
symmetry_type);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_expression = SELECT
(atom_based_value,
generic_expression,
maths_tuple);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_function_select = SELECT
(elementary_function_enumerators,
maths_function);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_integer = INTEGER;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_logical = LOGICAL;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_number = NUMBER;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_real = REAL;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_simple_atom = SELECT
(maths_binary,
maths_boolean,
maths_integer,
maths_logical,
maths_number,
maths_real,
maths_string);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_space_or_function = SELECT
(maths_function,
maths_space);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_string = STRING;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_tuple = LIST [0:?] OF maths_value;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maths_value = SELECT
(atom_based_value,
generic_expression,
maths_tuple);
WHERE
CONSTANCY: NOT ('GENERIC_EXPRESSION' IN stripped_typeof(SELF)) OR
expression_is_constant(SELF);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE maximum_edge_length = positive_length_measure;
END_TYPE; -- 10303-42: geometric_model_schema
TYPE measure_value = SELECT
(absorbed_dose_measure,
acceleration_measure,
amount_of_substance_measure,
area_measure,
capacitance_measure,
celsius_temperature_measure,
conductance_measure,
context_dependent_measure,
count_measure,
descriptive_measure,
dose_equivalent_measure,
electric_charge_measure,
electric_current_measure,
electric_potential_measure,
energy_measure,
force_measure,
frequency_measure,
illuminance_measure,
inductance_measure,
length_measure,
luminous_flux_measure,
luminous_intensity_measure,
magnetic_flux_density_measure,
magnetic_flux_measure,
mass_measure,
non_negative_length_measure,
numeric_measure,
parameter_value,
plane_angle_measure,
positive_length_measure,
positive_plane_angle_measure,
positive_ratio_measure,
power_measure,
pressure_measure,
radioactivity_measure,
ratio_measure,
resistance_measure,
solid_angle_measure,
thermodynamic_temperature_measure,
time_measure,
velocity_measure,
volume_measure);
END_TYPE; -- 10303-41: measure_schema
TYPE mechanical_design_and_draughting_relationship_select = SELECT
(draughting_model,
mechanical_design_geometric_presentation_representation,
mechanical_design_presentation_representation_with_draughting,
mechanical_design_shaded_presentation_representation,
shape_representation);
END_TYPE; -- 10303-1315: mechanical_design_presentation_representation_with_draughting_mim
TYPE mechanical_design_geometric_presentation_area_items = SELECT
(axis2_placement,
mapped_item);
END_TYPE; -- 10303-517: aic_mechanical_design_geometric_presentation
TYPE mechanical_design_geometric_presentation_representation_items = SELECT
(axis2_placement,
camera_model_d3,
mapped_item,
styled_item);
END_TYPE; -- 10303-517: aic_mechanical_design_geometric_presentation
TYPE mechanical_design_shaded_presentation_area_items = SELECT
(axis2_placement,
mapped_item);
END_TYPE; -- 10303-518: aic_mechanical_design_shaded_presentation
TYPE mechanical_design_shaded_presentation_representation_items = SELECT
(axis2_placement,
camera_model_d3,
mapped_item,
styled_item);
END_TYPE; -- 10303-518: aic_mechanical_design_shaded_presentation
TYPE message = STRING;
END_TYPE; -- 10303-41: external_reference_schema
TYPE minute_in_hour = INTEGER;
WHERE
WR1: (0 <= SELF) AND (SELF <= 59);
END_TYPE; -- 10303-41: date_time_schema
TYPE month_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 12);
END_TYPE; -- 10303-41: date_time_schema
TYPE multi_language_attribute_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_organizational_project_assignment,
approval,
approval_relationship,
approval_status,
certification,
certification_type,
contract,
data_environment,
date_role,
date_time_role,
document_relationship,
document_usage_role,
external_source,
group,
group_relationship,
identification_role,
information_right,
information_usage_right,
name_assignment,
object_role,
organization_relationship,
organizational_project,
organizational_project_relationship,
organizational_project_role,
person_and_organization,
product,
product_concept_feature,
product_concept_feature_association,
product_definition,
product_definition_formation,
product_definition_relationship,
product_definition_substitute,
property_definition_relationship,
uncertainty_qualifier,
usage_association,
versioned_action_request);
END_TYPE; -- 10303-1105: multi_linguism_mim
TYPE name_attribute_select = SELECT
(action_request_solution,
address,
configuration_design,
context_dependent_shape_representation,
derived_unit,
effectivity,
person_and_organization,
product_definition,
product_definition_substitute,
property_definition_representation);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE name_item = SELECT
(assembly_component_usage,
external_class_library,
group,
group_relationship,
product,
product_definition);
END_TYPE; -- 10303-1340: name_assignment_mim
TYPE non_negative_length_measure = length_measure;
WHERE
WR1: SELF >= 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE nonnegative_integer = INTEGER;
WHERE
NONNEGATIVITY: SELF >= 0;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE null_style = ENUMERATION OF
(null);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE numeric_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
TYPE one_or_two = positive_integer;
WHERE
IN_RANGE: (SELF = 1) OR (SELF = 2);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE open_closed = ENUMERATION OF
(open,
closed);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE ordering_type = ENUMERATION OF
(by_rows,
by_columns);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE organization_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
applied_action_assignment,
applied_classification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
document_file,
document_type,
effectivity,
event_occurrence,
executed_action,
information_usage_right,
material_designation,
organization,
organization_relationship,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
security_classification,
security_classification_level,
versioned_action_request);
END_TYPE; -- 10303-1013: person_organization_assignment_mim
TYPE oriented_tolerance_zone_type = ENUMERATION OF
(perpendicular,
parallel,
angular);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE parameter_value = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE path_or_composite_curve = SELECT
(composite_curve,
path);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE pcurve_or_surface = SELECT
(pcurve,
surface);
END_TYPE; -- 10303-42: geometry_schema
TYPE person_and_organization_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
applied_action_assignment,
applied_classification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
document_file,
document_type,
event_occurrence,
executed_action,
information_usage_right,
material_designation,
organization,
organization_relationship,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
security_classification,
security_classification_level,
versioned_action_request);
END_TYPE; -- 10303-1013: person_organization_assignment_mim
TYPE person_organization_select = SELECT
(organization,
person,
person_and_organization);
END_TYPE; -- 10303-41: person_organization_schema
TYPE plane_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE plane_or_planar_box = SELECT
(planar_box,
plane);
END_TYPE; -- 10303-101: draughting_element_schema
TYPE point_cloud_set_or_superset = SELECT
(point_cloud_dataset,
point_cloud_superdataset);
END_TYPE; -- 10303-42: scan_data_3d_shape_model_schema
TYPE positive_integer = nonnegative_integer;
WHERE
POSITIVITY: SELF > 0;
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE positive_length_measure = non_negative_length_measure;
WHERE
WR1: SELF > 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE positive_plane_angle_measure = plane_angle_measure;
WHERE
WR1: SELF > 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE positive_ratio_measure = ratio_measure;
WHERE
WR1: SELF > 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE power_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE preferred_surface_curve_representation = ENUMERATION OF
(curve_3d,
pcurve_s1,
pcurve_s2);
END_TYPE; -- 10303-42: geometry_schema
TYPE presentable_text = STRING;
WHERE
WR1: control_characters_free(SELF);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE presentation_representation_select = SELECT
(presentation_representation,
presentation_set);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE presentation_size_assignment_select = SELECT
(area_in_set,
presentation_area,
presentation_view);
END_TYPE; -- 10303-46: presentation_organization_schema
TYPE presentation_style_select = SELECT
(curve_style,
externally_defined_style,
fill_area_style,
null_style,
point_style,
surface_style_usage,
symbol_style,
text_style);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE presented_item_select = SELECT
(action,
action_method,
action_relationship,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_relationship);
END_TYPE; -- 10303-1330: presentation_hierarchy_mim
TYPE pressure_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE product_definition_occurrence_or_reference = SELECT
(product_definition_occurrence,
product_definition_occurrence_reference);
END_TYPE; -- 10303-44: product_structure_schema
TYPE product_definition_or_assembly_relationship = SELECT
(assembly_component_usage,
product_definition);
END_TYPE; -- 10303-1063: product_occurrence_mim
TYPE product_definition_or_breakdown_element_usage = SELECT
(product_definition,
product_definition_usage);
END_TYPE; -- 10303-1248: product_breakdown_mim
TYPE product_definition_or_product_definition_relationship = SELECT
(product_definition,
product_definition_usage);
END_TYPE; -- 10303-1248: product_breakdown_mim
TYPE product_definition_or_reference = SELECT
(generic_product_definition_reference,
product_definition,
product_definition_occurrence);
END_TYPE; -- 10303-41: product_definition_schema
TYPE product_definition_or_reference_or_occurrence = product_definition_or_reference;
END_TYPE; -- 10303-44: product_structure_schema
TYPE product_or_formation_or_definition = SELECT
(product,
product_definition,
product_definition_formation);
END_TYPE; -- 10303-41: document_schema
TYPE product_space = SELECT
(listed_product_space,
uniform_product_space);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE project_item = SELECT
(assembly_component_usage,
configuration_item,
executed_action,
product,
product_concept,
product_definition,
product_definition_formation);
END_TYPE; -- 10303-1061: project_mim
TYPE promissory_usage_in_product_model_assigned_item = SELECT
(product_concept,
product_definition);
END_TYPE; -- 10303-1628: design_product_data_management_mim
TYPE property_or_shape_select = SELECT
(property_definition,
shape_definition);
END_TYPE; -- 10303-49: process_property_schema
TYPE radioactivity_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE ratio_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE real_interval = SELECT
(elementary_space,
finite_real_interval,
real_interval_from_min,
real_interval_to_max);
WHERE
WR1: NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR (SELF\
elementary_space.space_id = es_reals);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE rendering_properties_select = SELECT
(surface_style_reflectance_ambient,
surface_style_transparent);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE repackage_options = ENUMERATION OF
(ro_nochange,
ro_wrap_as_tuple,
ro_unwrap_tuple);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE representation_or_representation_reference = SELECT
(representation,
representation_reference);
END_TYPE; -- 10303-43: representation_schema
TYPE representation_proxy_select = SELECT
(action_method);
END_TYPE; -- 10303-61: systems_engineering_representation_schema
TYPE represented_definition = SELECT
(general_property,
property_definition,
property_definition_relationship,
shape_aspect,
shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_representation_schema
TYPE requirement_assigned_item = SELECT
(characterized_object,
configuration_item,
descriptive_representation_item,
dimensional_location,
dimensional_size,
geometric_tolerance,
product,
product_class,
product_definition,
product_definition_formation,
product_definition_relationship,
representation,
shape_aspect);
END_TYPE; -- 10303-1233: requirement_assignment_mim
TYPE requirement_satisfaction_item = SELECT
(requirement_assigned_item);
END_TYPE; -- 10303-1233: requirement_assignment_mim
TYPE requirement_source_item = SELECT
(characterized_object,
dimensional_location,
dimensional_size,
geometric_tolerance,
group,
group_relationship,
product,
product_definition,
product_definition_formation,
product_definition_relationship,
shape_aspect);
END_TYPE; -- 10303-1233: requirement_assignment_mim
TYPE resistance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE reversible_topology = SELECT
(list_of_reversible_topology_item,
reversible_topology_item,
set_of_reversible_topology_item);
END_TYPE; -- 10303-42: topology_schema
TYPE reversible_topology_item = SELECT
(closed_shell,
edge,
face,
face_bound,
open_shell,
path);
END_TYPE; -- 10303-42: topology_schema
TYPE rigid_placement = SELECT
(axis2_placement_3d,
su_parameters);
END_TYPE; -- 10303-105: kinematic_structure_schema
TYPE role_select = SELECT
(action_assignment,
action_request_assignment,
approval_assignment,
approval_date_time,
certification_assignment,
contract_assignment,
directed_action_assignment,
document_reference,
effectivity_assignment,
group_assignment,
name_assignment,
security_classification_assignment);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE second_in_minute = REAL;
WHERE
WR1: (0 <= SELF) AND (SELF < 60.0);
END_TYPE; -- 10303-41: date_time_schema
TYPE security_classification_item = SELECT
(action,
action_directive,
action_property,
applied_action_assignment,
assembly_component_usage,
assembly_component_usage_substitute,
class_system,
configuration_design,
configuration_effectivity,
configured_effectivity_assignment,
document,
document_file,
executed_action,
general_property,
machining_operation,
machining_process_executable,
machining_toolpath,
make_from_usage_option,
material_designation,
organizational_project,
product,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_relationship,
property_definition,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1015: security_classification_mim
TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
TYPE set_representation_item = SET [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
TYPE shading_curve_method = ENUMERATION OF
(constant_colour,
linear_colour);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE shading_surface_method = ENUMERATION OF
(constant_shading,
colour_shading,
dot_shading,
normal_shading);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE shape_aspect_or_characterized_object = SELECT
(characterized_object,
shape_aspect);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE shape_definition = SELECT
(product_definition_shape,
shape_aspect,
shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE shape_dimension_representation_item = SELECT
(compound_representation_item,
descriptive_representation_item,
measure_representation_item,
placement);
END_TYPE; -- 10303-47: shape_dimension_schema
TYPE shape_model = SELECT
(constructive_geometry_representation,
shape_representation);
END_TYPE; -- 10303-1032: shape_property_assignment_mim
TYPE shape_representation_with_parameters_items = SELECT
(descriptive_representation_item,
direction,
measure_representation_item,
placement);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE shell = SELECT
(closed_shell,
open_shell,
vertex_shell,
wire_shell);
END_TYPE; -- 10303-42: topology_schema
TYPE si_prefix = ENUMERATION OF
(exa,
peta,
tera,
giga,
mega,
kilo,
hecto,
deca,
deci,
centi,
milli,
micro,
nano,
pico,
femto,
atto);
END_TYPE; -- 10303-41: measure_schema
TYPE si_unit_name = ENUMERATION OF
(metre,
gram,
second,
ampere,
kelvin,
mole,
candela,
radian,
steradian,
hertz,
newton,
pascal,
joule,
watt,
coulomb,
volt,
farad,
ohm,
siemens,
weber,
tesla,
henry,
degree_celsius,
lumen,
lux,
becquerel,
gray,
sievert);
END_TYPE; -- 10303-41: measure_schema
TYPE simple_datum_reference_modifier = ENUMERATION OF
(pitch_diameter,
major_diameter,
minor_diameter,
degree_of_freedom_constraint_w,
degree_of_freedom_constraint_v,
degree_of_freedom_constraint_u,
degree_of_freedom_constraint_z,
degree_of_freedom_constraint_y,
degree_of_freedom_constraint_x,
distance_variable,
contacting_feature,
any_longitudinal_section,
any_cross_section,
orientation,
plane,
line,
point,
maximum_material_requirement,
least_material_requirement,
translation,
basic,
free_state);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE size_select = SELECT
(descriptive_measure,
measure_with_unit,
positive_length_measure);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE solid_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE source = ENUMERATION OF
(made,
bought,
not_known);
END_TYPE; -- 10303-41: product_definition_schema
TYPE source_item = SELECT
(identifier,
message);
END_TYPE; -- 10303-41: external_reference_schema
TYPE space_constraint_type = ENUMERATION OF
(sc_equal,
sc_subspace,
sc_member);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE spatial_rotation = SELECT
(rotation_about_direction,
ypr_rotation);
END_TYPE; -- 10303-105: kinematic_state_schema
TYPE spherical_pair_select = SELECT
(spherical_pair,
spherical_pair_with_pin);
END_TYPE; -- 10303-105: kinematic_state_schema
TYPE spline_knot_values = LIST [2:?] OF REAL;
WHERE
WR1: increasing_values_in_list(SELF);
END_TYPE; -- 10303-42: geometry_schema
TYPE string_representation_item_select = SELECT
(descriptive_representation_item,
included_text_block,
structured_text_composition);
END_TYPE; -- 10303-1366: tagged_text_representation_mim
TYPE style_context_select = SELECT
(context_dependent_shape_representation,
group,
presentation_layer_assignment,
presentation_set,
representation,
representation_item,
representation_relationship);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE styled_item_target = SELECT
(geometric_representation_item,
mapped_item,
representation_or_representation_reference,
topological_representation_item);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE supported_item = SELECT
(action,
action_directive,
action_method);
END_TYPE; -- 10303-41: action_schema
TYPE surface_boundary = SELECT
(boundary_curve,
degenerate_pcurve);
END_TYPE; -- 10303-42: geometry_schema
TYPE surface_side = ENUMERATION OF
(positive,
negative,
both);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE surface_side_style_select = SELECT
(pre_defined_surface_side_style,
surface_side_style);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE surface_style_element_select = SELECT
(surface_style_boundary,
surface_style_control_grid,
surface_style_fill_area,
surface_style_parameter_line,
surface_style_rendering,
surface_style_segmentation_curve,
surface_style_silhouette);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE symbol_style_select = SELECT
(symbol_colour);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE symmetry_type = ENUMERATION OF
(identity,
skew,
hermitian,
skew_hermitian);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE terminator = SELECT
(externally_defined_terminator_symbol,
pre_defined_terminator_symbol,
user_defined_terminator_symbol);
END_TYPE; -- 10303-1003: curve_appearance_mim
TYPE tessellated_edge_or_vertex = SELECT
(tessellated_edge,
tessellated_vertex);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE tessellated_facet_long_short_edge_ratio = ratio_measure;
END_TYPE; -- 10303-42: geometric_model_schema
TYPE tessellated_surface_item = SELECT
(tessellated_face,
tessellated_shell,
tessellated_solid,
tessellated_surface_set);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE tessellation_accuracy_parameter_item = SELECT
(angular_deviation,
chordal_deviation,
length_to_height_ratio,
maximum_edge_length,
tessellated_facet_long_short_edge_ratio);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE text = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE text_alignment = label;
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE text_delineation = label;
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE text_or_character = SELECT
(annotation_text,
composite_text,
defined_character_glyph,
text_literal);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE text_path = ENUMERATION OF
(left,
right,
up,
down);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE text_string_representation_item = SELECT
(annotation_text,
axis2_placement,
composite_text,
defined_character_glyph,
text_literal);
END_TYPE; -- 10303-46: presentation_definition_schema
TYPE thermodynamic_temperature_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE time_interval_item = SELECT
(action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_person_and_organization_assignment,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
document_file,
executed_action,
general_property,
material_designation,
organization_relationship,
organizational_project,
person_and_organization,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
END_TYPE; -- 10303-1365: time_interval_assignment_mim
TYPE time_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE tolerance_method_definition = SELECT
(limits_and_fits,
tolerance_value);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE tolerance_value_or_limits_and_fits = SELECT
(limits_and_fits,
tolerance_value);
END_TYPE; -- 10303-113: counterbore_countersink_schema
TYPE tolerance_zone_target = SELECT
(dimensional_location,
dimensional_size,
general_datum_reference,
geometric_tolerance);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE transformation = SELECT
(functionally_defined_transformation,
item_defined_transformation);
END_TYPE; -- 10303-43: representation_schema
TYPE transition_code = ENUMERATION OF
(discontinuous,
continuous,
cont_same_gradient,
cont_same_gradient_same_curvature);
END_TYPE; -- 10303-42: geometry_schema
TYPE trimming_preference = ENUMERATION OF
(cartesian,
parameter,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE trimming_select = SELECT
(cartesian_point,
parameter_value);
END_TYPE; -- 10303-42: geometry_schema
TYPE tuple_space = SELECT
(extended_tuple_space,
product_space);
END_TYPE; -- 10303-50: mathematical_functions_schema
TYPE u_direction_count = INTEGER;
WHERE
WR1: SELF > 1;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE unit = SELECT
(derived_unit,
named_unit);
END_TYPE; -- 10303-41: measure_schema
TYPE unsigned_8_bit_integer = INTEGER;
WHERE
WR1: (0 <= SELF) AND (SELF <= 255);
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE v_direction_count = INTEGER;
WHERE
WR1: SELF > 1;
END_TYPE; -- 10303-46: presentation_appearance_schema
TYPE value_format_type = identifier;
WHERE
WR1: LENGTH(SELF) <= 80;
END_TYPE; -- 10303-45: qualified_measure_schema
TYPE value_qualifier = SELECT
(maths_value_precision_qualifier,
precision_qualifier,
type_qualifier,
uncertainty_qualifier,
value_format_type_qualifier);
END_TYPE; -- 10303-45: qualified_measure_schema
TYPE vector_or_direction = SELECT
(direction,
vector);
END_TYPE; -- 10303-42: geometry_schema
TYPE velocity_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE volume_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE week_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 53);
END_TYPE; -- 10303-41: date_time_schema
TYPE year_number = INTEGER;
WHERE
WR1: SELF > 1581;
END_TYPE; -- 10303-41: date_time_schema
TYPE ypr_enumeration = ENUMERATION OF
(yaw,
pitch,
roll);
END_TYPE; -- 10303-105: kinematic_state_schema
TYPE ypr_rotation = ARRAY [ypr_index
(yaw):ypr_index
(roll)] OF plane_angle_measure;
END_TYPE; -- 10303-105: kinematic_state_schema
TYPE zero_or_one = nonnegative_integer;
WHERE
IN_RANGE: (SELF = 0) OR (SELF = 1);
END_TYPE; -- 10303-50: mathematical_functions_schema
ENTITY abs_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY absorbed_dose_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ABSORBED_DOSE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY absorbed_dose_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.gray);
END_ENTITY; -- 10303-41: measure_schema
ENTITY abstracted_expression_function
SUBTYPE OF (maths_function, quantifier_expression);
DERIVE
SELF\quantifier_expression.variables : LIST [1:?] OF UNIQUE
generic_variable := remove_first(SELF\
multiple_arity_generic_expression.operands);
expr : generic_expression := SELF\
multiple_arity_generic_expression.operands[1];
WHERE
WR1: SIZEOF(QUERY (operand <* SELF\multiple_arity_generic_expression.
operands| NOT has_values_space(operand))) = 0;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY acceleration_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACCELERATION_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY acceleration_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.0,
0.0, -2.0, 0.0, 0.0, 0.0, 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY acos_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY action;
name : label;
description : OPTIONAL text;
chosen_method : action_method;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_assignment
ABSTRACT SUPERTYPE OF (ONEOF(applied_usage_right,
applied_action_assignment));
assigned_action : action;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY action_directive;
name : label;
description : OPTIONAL text;
analysis : text;
comment : text;
requests : SET [1:?] OF versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method;
name : label;
description : OPTIONAL text;
consequence : text;
purpose : text;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method_assignment
ABSTRACT SUPERTYPE;
assigned_action_method : action_method;
role : action_method_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY action_method_relationship;
name : label;
description : OPTIONAL text;
relating_method : action_method;
related_method : action_method;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY action_method_with_associated_documents
SUBTYPE OF (action_method);
documents : SET [1:?] OF document;
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY action_property;
name : label;
description : text;
definition : characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY action_property_representation;
name : label;
description : text;
property : action_property;
representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
ENTITY action_relationship;
name : label;
description : OPTIONAL text;
relating_action : action;
related_action : action;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_request_assignment
ABSTRACT SUPERTYPE;
assigned_action_request : versioned_action_request;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY action_request_solution;
method : action_method;
request : versioned_action_request;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_request_status;
status : label;
assigned_request : versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource;
name : label;
description : OPTIONAL text;
usage : SET [1:?] OF supported_item;
kind : action_resource_type;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource_relationship;
name : label;
description : OPTIONAL text;
relating_resource : action_resource;
related_resource : action_resource;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource_requirement;
name : label;
description : text;
kind : resource_requirement_type;
operations : SET [1:?] OF characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY action_resource_type;
name : label;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_status;
status : label;
assigned_action : executed_action;
END_ENTITY; -- 10303-41: action_schema
ENTITY actuated_kinematic_pair
SUBTYPE OF (kinematic_pair);
t_x : OPTIONAL actuated_direction;
t_y : OPTIONAL actuated_direction;
t_z : OPTIONAL actuated_direction;
r_x : OPTIONAL actuated_direction;
r_y : OPTIONAL actuated_direction;
r_z : OPTIONAL actuated_direction;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY additive_manufacturing_atom
SUBTYPE OF (shape_aspect);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY additive_manufacturing_build_plate_relationship
SUBTYPE OF (additive_manufacturing_setup_relationship);
END_ENTITY; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
ENTITY additive_manufacturing_construction
SUBTYPE OF (shape_aspect);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY additive_manufacturing_feature
SUBTYPE OF (feature_definition);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY additive_manufacturing_setup
SUBTYPE OF (product);
END_ENTITY; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
ENTITY additive_manufacturing_setup_relationship
ABSTRACT SUPERTYPE OF (ONEOF(
additive_manufacturing_build_plate_relationship,
additive_manufacturing_support_structure_geometry_relationship,
additive_manufacturing_setup_workpiece_relationship))
SUBTYPE OF (next_assembly_usage_occurrence);
END_ENTITY; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
ENTITY additive_manufacturing_setup_workpiece_relationship
SUBTYPE OF (additive_manufacturing_setup_relationship);
END_ENTITY; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
ENTITY additive_manufacturing_support_structure_geometry_relationship
SUBTYPE OF (additive_manufacturing_setup_relationship);
END_ENTITY; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
ENTITY additive_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: SELF.description IN [ 'oned', 'twod' ];
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY address;
internal_location : OPTIONAL label;
street_number : OPTIONAL label;
street : OPTIONAL label;
postal_box : OPTIONAL label;
town : OPTIONAL label;
region : OPTIONAL label;
postal_code : OPTIONAL label;
country : OPTIONAL label;
facsimile_number : OPTIONAL label;
telephone_number : OPTIONAL label;
electronic_mail_address : OPTIONAL label;
telex_number : OPTIONAL label;
DERIVE
name : label := get_name_value(SELF);
url : identifier := get_id_value(SELF);
WHERE
WR1: ((((((((((EXISTS(internal_location) OR EXISTS(street_number)) OR
EXISTS(street)) OR EXISTS(postal_box)) OR EXISTS(town)) OR
EXISTS(region)) OR EXISTS(postal_code)) OR EXISTS(country))
OR EXISTS(facsimile_number)) OR EXISTS(telephone_number)) OR
EXISTS(electronic_mail_address)) OR EXISTS(telex_number);
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY advanced_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fcs)))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (msb <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
WR5: SIZEOF(QUERY (brv <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BREP_WITH_VOIDS'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\
brep_with_voids.voids| csh\oriented_closed_shell.orientation)
) = 0))) = 0;
WR6: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_BREP_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
END_ENTITY; -- 10303-514: aic_advanced_brep
ENTITY advanced_face
SUBTYPE OF (face_surface);
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_SURFACE'
] * TYPEOF(face_geometry)) = 1;
WR2: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe\oriented_edge.edge_element)))) = 0))) = 0;
WR3: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1)))
= 0))) = 0;
WR4: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe\edge.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
IN TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry)))
AND ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe\edge.edge_end)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
IN TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))))
) = 0))) = 0;
WR5: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_PATH'
IN TYPEOF(elp_fbnds.bound)))) = 0;
WR6: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_SURFACE'
IN TYPEOF(face_geometry)) OR (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
] * TYPEOF(face_geometry\swept_surface.swept_curve)) = 1);
WR7: SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex))
AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex
\vertex_point.vertex_geometry))))) = 0;
WR8: SIZEOF(QUERY (bnd <* bounds| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' ] *
TYPEOF(bnd.bound)) = 1))) = 0;
WR9: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(oe\oriented_edge.edge_element\edge_curve.
edge_geometry)) AND NOT (SIZEOF(QUERY (sc_ag <* oe.
edge_element\edge_curve.edge_geometry\surface_curve.
associated_geometry| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(sc_ag)))) = 0))) = 0))) = 0;
WR10: (NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_SURFACE'
IN TYPEOF(face_geometry)) OR (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(face_geometry\swept_surface.swept_curve)) OR (SIZEOF(
face_geometry\swept_surface.swept_curve\polyline.points) >= 3
))) AND (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry
)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\edge_curve.
edge_geometry\polyline.points) >= 3))) = 0))) = 0);
END_ENTITY; -- 10303-511: aic_topologically_bounded_surface
ENTITY aggregate_id_attribute;
attribute_value : identifier;
identified_item : SET [1:?] OF id_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY all_around_shape_aspect
SUBTYPE OF (continuous_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY alternate_product_relationship;
name : label;
definition : OPTIONAL text;
alternate : product;
base : product;
basis : text;
UNIQUE
UR1: alternate, base;
WHERE
WR1: alternate :<>: base;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY amount_of_substance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AMOUNT_OF_SUBSTANCE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY amount_of_substance_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 1.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY and_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY angular_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY angular_location
SUBTYPE OF (dimensional_location);
angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY angular_size
SUBTYPE OF (dimensional_size);
angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY angularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY annotation_curve_occurrence
SUPERTYPE OF (ONEOF(dimension_curve, leader_curve, projection_curve))
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : curve_or_curve_set;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_fill_area
SUBTYPE OF (geometric_representation_item);
boundaries : SET [1:?] OF curve;
WHERE
WR1: (SELF\geometric_representation_item.dim = 3) OR (SIZEOF(QUERY (
curve <* boundaries| NOT (((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCLE' IN
TYPEOF(curve)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELLIPSE' IN
TYPEOF(curve))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
IN TYPEOF(curve)) AND (curve\b_spline_curve.closed_curve =
TRUE)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE'
IN TYPEOF(curve)) AND (curve\composite_curve.closed_curve =
TRUE)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(curve)) AND (curve\polyline.points[LOINDEX(curve\
polyline.points)] = curve\polyline.points[HIINDEX(curve\
polyline.points)])))) = 0);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_fill_area_occurrence
SUBTYPE OF (annotation_occurrence);
fill_style_target : point;
SELF\styled_item.item : annotation_fill_area;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_occurrence
SUPERTYPE OF (ONEOF(annotation_point_occurrence,
annotation_curve_occurrence, annotation_fill_area_occurrence,
annotation_text_occurrence, annotation_symbol_occurrence))
SUBTYPE OF (styled_item);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(SELF);
WR2: SIZEOF(QUERY (reps <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_REPRESENTATION_SELECT'
IN TYPEOF(reps)))) = 0;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_occurrence_associativity
SUBTYPE OF (annotation_occurrence_relationship);
WHERE
WR1: SIZEOF(TYPEOF(SELF.related_annotation_occurrence) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE'
]) = 1;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
ENTITY annotation_occurrence_relationship;
name : label;
description : text;
relating_annotation_occurrence : annotation_occurrence;
related_annotation_occurrence : annotation_occurrence;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_placeholder_leader_line
ABSTRACT SUPERTYPE OF (ONEOF(annotation_to_annotation_leader_line,
annotation_to_model_leader_line, auxiliary_leader_line))
SUBTYPE OF (geometric_representation_item);
geometric_elements : LIST [2:?] OF UNIQUE des_apll_point_select;
DERIVE
model_end : des_apll_point_select := geometric_elements[HIINDEX(
geometric_elements)];
INVERSE
container : annotation_placeholder_occurrence_with_leader_line FOR
leader_line;
UNIQUE
UR1: geometric_elements;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY annotation_placeholder_occurrence
SUBTYPE OF (annotation_occurrence, geometric_representation_item);
SELF\styled_item.item : geometric_set;
role : annotation_placeholder_occurrence_role;
line_spacing : positive_length_measure;
INVERSE
the_callout :
draughting_callout
FOR
contents;
the_draughting_model_item_association_with_placeholders : SET [0:1] OF
draughting_model_item_association_with_placeholder
FOR
annotation_placeholder
;
WHERE
WR1: md_valid_content_in_geometric_set_for_placeholder(item);
WR2: NOT (role = annotation_placeholder_occurrence_role.gps_data) OR (
SIZEOF(
the_draughting_model_item_association_with_placeholders) = 1)
AND md_pmi_name_and_type_correlation(SELF);
END_ENTITY; -- 10303-113: mechanical_design_schema
ENTITY annotation_placeholder_occurrence_with_leader_line
SUBTYPE OF (annotation_placeholder_occurrence);
leader_line : SET [1:?] OF annotation_placeholder_leader_line;
UNIQUE
UR1: leader_line;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY annotation_plane
SUBTYPE OF (annotation_occurrence, geometric_representation_item);
elements : OPTIONAL SET [1:?] OF annotation_plane_element;
SELF\styled_item.item : plane_or_planar_box;
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
WR2: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_BOX' IN
TYPEOF(SELF\styled_item.item)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(SELF\styled_item.item\planar_box.placement));
WR3: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_BOX' IN
TYPEOF(SELF\styled_item.item)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(SELF\styled_item.styles[1]\
presentation_style_assignment.styles[1])) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF
(SELF\styled_item.item)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE'
IN TYPEOF(SELF\styled_item.styles[1]\
presentation_style_assignment.styles[1]));
WR4: (SIZEOF(SELF\styled_item.styles) = 1) AND (SIZEOF(SELF\styled_item
.styles[1]\presentation_style_assignment.styles) = 1);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY annotation_point_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : point;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_subfigure_occurrence
SUBTYPE OF (annotation_symbol_occurrence);
WHERE
WR1: SIZEOF(QUERY (sty <* SELF.styles| NOT (SIZEOF(sty.styles) = 1))) =
0;
WR2: SIZEOF(QUERY (sty <* SELF.styles| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NULL_STYLE' IN
TYPEOF(sty.styles[1])))) = 0;
WR3: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL' IN
TYPEOF(SELF.item);
WR4:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_SUBFIGURE_REPRESENTATION'
IN TYPEOF(SELF.item\mapped_item.mapping_source.
mapped_representation);
END_ENTITY; -- 10303-504: aic_draughting_annotation
ENTITY annotation_symbol
SUBTYPE OF (mapped_item);
SELF\mapped_item.mapping_source : symbol_representation_map;
SELF\mapped_item.mapping_target : symbol_target;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_symbol_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : annotation_symbol_occurrence_item;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_text
SUBTYPE OF (mapped_item);
SELF\mapped_item.mapping_target : axis2_placement;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_STRING_REPRESENTATION'
IN TYPEOF(SELF\mapped_item.mapping_source.
mapped_representation);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_text_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : annotation_text_occurrence_item;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY annotation_to_annotation_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
DERIVE
start_end : des_apll_point_select := SELF\
annotation_placeholder_leader_line.geometric_elements[1]
;
WHERE
WR1: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end
)) = 0) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(start_end)) = 0);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY annotation_to_model_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
DERIVE
start_end : des_apll_point_select := SELF\
annotation_placeholder_leader_line.geometric_elements[1]
;
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end
)) = 1;
WR2: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(start_end)) = 0;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY apex
SUBTYPE OF (derived_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY apll_point
SUBTYPE OF (cartesian_point);
symbol_applied : des_apll_point_symbol;
INVERSE
container : annotation_placeholder_leader_line FOR geometric_elements;
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(SELF)) = 0;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET.ELEMENTS'
)) = 0;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY apll_point_with_surface
SUBTYPE OF (cartesian_point);
symbol_applied : des_apll_point_symbol;
associated_surface : face_surface;
INVERSE
container : annotation_placeholder_leader_line FOR geometric_elements;
WHERE
WR1: SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT'
] * TYPEOF(SELF)) = 0;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET.ELEMENTS'
)) = 0;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY application_context;
application : label;
DERIVE
description : text := get_description_value(SELF);
id : identifier := get_id_value(SELF);
INVERSE
context_elements : SET [1:?] OF application_context_element FOR
frame_of_reference;
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY application_context_element
SUPERTYPE OF (ONEOF(product_concept_context, product_context,
product_definition_context));
name : label;
frame_of_reference : application_context;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY application_defined_function
SUBTYPE OF (maths_function);
explicit_domain : tuple_space;
explicit_range : tuple_space;
parameters : LIST OF maths_value;
WHERE
WR1: expression_is_constant(explicit_domain);
WR2: expression_is_constant(explicit_range);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY application_protocol_definition;
status : label;
application_interpreted_model_schema_name : label;
application_protocol_year : year_number;
application : application_context;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY applied_action_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF action_items;
END_ENTITY; -- 10303-1047: activity_mim
ENTITY applied_action_method_assignment
SUBTYPE OF (action_method_assignment);
items : SET [1:?] OF action_method_items;
END_ENTITY; -- 10303-1249: activity_method_assignment_mim
ENTITY applied_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET [1:?] OF action_request_item;
END_ENTITY; -- 10303-1042: work_request_mim
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF approval_item;
END_ENTITY; -- 10303-1012: approval_mim
ENTITY applied_area
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(SELF.of_shape);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT ((2 <= SIZEOF(
impl_rep.used_representation.items)) AND (SIZEOF(impl_rep.
used_representation.items) <= 3)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| NOT (srwp_i.name IN
[ 'orientation', 'effective length', 'maximum length' ]))) >
0))) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'effective length'))) =
1))) = 0))) <= 1;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'maximum length'))) <= 1
))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY applied_attribute_classification_assignment
SUBTYPE OF (attribute_classification_assignment);
SELF\attribute_classification_assignment.assigned_class : class;
items : SET [1:?] OF attribute_classification_item;
END_ENTITY; -- 10303-1246: attribute_classification_mim
ENTITY applied_certification_assignment
SUBTYPE OF (certification_assignment);
items : SET [1:?] OF certification_item;
END_ENTITY; -- 10303-1044: certification_mim
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET [1:?] OF classification_item;
END_ENTITY; -- 10303-1114: classification_assignment_mim
ENTITY applied_classification_assignment_relationship
SUBTYPE OF (classification_assignment_relationship);
SELF\classification_assignment_relationship.related :
applied_classification_assignment;
SELF\classification_assignment_relationship.relating :
applied_classification_assignment;
END_ENTITY; -- 10303-1114: classification_assignment_mim
ENTITY applied_contract_assignment
SUBTYPE OF (contract_assignment);
items : SET [1:?] OF contract_item;
END_ENTITY; -- 10303-1062: contract_mim
ENTITY applied_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
items : SET [1:?] OF date_and_time_item;
END_ENTITY; -- 10303-1014: date_time_assignment_mim
ENTITY applied_date_assignment
SUBTYPE OF (date_assignment);
items : SET [1:?] OF date_item;
END_ENTITY; -- 10303-1014: date_time_assignment_mim
ENTITY applied_directed_action_assignment
SUBTYPE OF (directed_action_assignment);
items : SET [1:?] OF action_request_item;
END_ENTITY; -- 10303-1043: work_order_mim
ENTITY applied_document_reference
SUBTYPE OF (document_reference);
items : SET [1:?] OF document_reference_item;
END_ENTITY; -- 10303-1122: document_assignment_mim
ENTITY applied_document_usage_constraint_assignment
SUBTYPE OF (document_usage_constraint_assignment);
items : SET [1:?] OF document_reference_item;
END_ENTITY; -- 10303-1122: document_assignment_mim
ENTITY applied_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET [1:?] OF effectivity_item;
END_ENTITY; -- 10303-1059: effectivity_application_mim
ENTITY applied_event_occurrence_assignment
SUBTYPE OF (event_occurrence_assignment);
items : SET [1:?] OF event_occurrence_item;
END_ENTITY; -- 10303-1364: event_assignment_mim
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
items : SET [1:?] OF external_identification_item;
END_ENTITY; -- 10303-1128: external_item_identification_assignment_mim
ENTITY applied_external_identification_assignment_relationship
SUBTYPE OF (external_identification_assignment_relationship);
SELF\external_identification_assignment_relationship.related :
applied_external_identification_assignment;
SELF\external_identification_assignment_relationship.relating :
applied_external_identification_assignment;
END_ENTITY; -- 10303-1128: external_item_identification_assignment_mim
ENTITY applied_group_assignment
SUBTYPE OF (group_assignment);
items : SET [1:?] OF groupable_item;
END_ENTITY; -- 10303-1113: group_mim
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET [1:?] OF identification_item;
END_ENTITY; -- 10303-1021: identification_assignment_mim
ENTITY applied_ineffectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET [1:?] OF effectivity_item;
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOT_EFFECTIVITY'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SERIAL_NUMBERED_EFFECTIVITY'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_EFFECTIVITY'
] * TYPEOF(SELF.assigned_effectivity)) = 0;
END_ENTITY; -- 10303-1059: effectivity_application_mim
ENTITY applied_name_assignment
SUBTYPE OF (name_assignment);
item : name_item;
END_ENTITY; -- 10303-1340: name_assignment_mim
ENTITY applied_organization_assignment
SUBTYPE OF (organization_assignment);
items : SET [1:?] OF organization_item;
END_ENTITY; -- 10303-1013: person_organization_assignment_mim
ENTITY applied_organizational_project_assignment
SUBTYPE OF (organizational_project_assignment);
items : SET [1:?] OF project_item;
END_ENTITY; -- 10303-1061: project_mim
ENTITY applied_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
items : SET [1:?] OF person_and_organization_item;
END_ENTITY; -- 10303-1013: person_organization_assignment_mim
ENTITY applied_presented_item
SUBTYPE OF (presented_item);
items : SET [1:?] OF presented_item_select;
END_ENTITY; -- 10303-1330: presentation_hierarchy_mim
ENTITY applied_security_classification_assignment
SUBTYPE OF (security_classification_assignment);
items : SET [1:?] OF security_classification_item;
END_ENTITY; -- 10303-1015: security_classification_mim
ENTITY applied_time_interval_assignment
SUBTYPE OF (time_interval_assignment);
items : SET [0:?] OF time_interval_item;
END_ENTITY; -- 10303-1365: time_interval_assignment_mim
ENTITY applied_usage_right
SUBTYPE OF (action_assignment);
items : SET [1:?] OF ir_usage_item;
END_ENTITY; -- 10303-1241: information_rights_mim
ENTITY approval;
status : approval_status;
level : label;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_assignment
ABSTRACT SUPERTYPE;
assigned_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY approval_date_time;
date_time : date_time_select;
dated_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_person_organization;
person_organization : person_organization_select;
authorized_approval : approval;
role : approval_role;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_relationship;
name : label;
description : OPTIONAL text;
relating_approval : approval;
related_approval : approval;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_role;
role : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_status;
name : label;
END_ENTITY; -- 10303-41: approval_schema
ENTITY area_in_set;
area : presentation_area;
in_set : presentation_set;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY area_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_UNIT' IN TYPEOF(
SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY area_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(2.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY asin_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY assembly_component_usage
SUPERTYPE OF (quantified_assembly_component_usage ANDOR ONEOF(
multi_level_reference_designator, next_assembly_usage_occurrence,
promissory_usage_occurrence, specified_higher_usage_occurrence))
SUBTYPE OF (product_definition_usage);
reference_designator : OPTIONAL identifier;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY assembly_component_usage_substitute;
name : label;
definition : OPTIONAL text;
base : assembly_component_usage;
substitute : assembly_component_usage;
UNIQUE
UR1: base, substitute;
WHERE
WR1: base.relating_product_definition :=: substitute.
relating_product_definition;
WR2: base :<>: substitute;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY assigned_requirement
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : requirement_assignment;
items : SET [1:1] OF product_definition;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY atan_function
SUBTYPE OF (binary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY atom_based_literal
SUBTYPE OF (generic_literal);
lit_value : atom_based_value;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY attribute_classification_assignment
ABSTRACT SUPERTYPE;
assigned_class : group;
attribute_name : label;
role : classification_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY attribute_language_assignment
SUBTYPE OF (attribute_classification_assignment);
SELF\attribute_classification_assignment.assigned_class : language;
items : SET [1:?] OF attribute_language_item;
WHERE
WR1: SELF\attribute_classification_assignment.role.name IN [ 'primary',
'translated' ];
WR2: SELF\attribute_classification_assignment.attribute_name <> '';
END_ENTITY; -- 10303-1105: multi_linguism_mim
ENTITY attribute_value_assignment
ABSTRACT SUPERTYPE;
attribute_name : label;
attribute_value : attribute_type;
role : attribute_value_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY attribute_value_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY auxiliary_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
controlling_leader_line : annotation_to_model_leader_line;
DERIVE
free_space_end : des_apll_point_select := SELF\
annotation_placeholder_leader_line.
geometric_elements[1];
WHERE
WR1: SELF\annotation_placeholder_leader_line.container :=:
controlling_leader_line\annotation_placeholder_leader_line.
container;
WR2: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(free_space_end)) = 0;
WR3: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APLL_POINT_WITH_SURFACE'
] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end
)) = 1;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY axis1_placement
SUBTYPE OF (placement);
axis : OPTIONAL direction;
DERIVE
z : direction := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0
, 1.0 ]));
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [2:2] OF direction := build_2axes(ref_direction);
WHERE
WR1: SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
axis : OPTIONAL direction;
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [3:3] OF direction := build_axes(axis, ref_direction);
WHERE
WR1: SELF\placement.location.dim = 3;
WR2: NOT EXISTS(axis) OR (axis.dim = 3);
WR3: NOT EXISTS(ref_direction) OR (ref_direction.dim = 3);
WR4: (NOT EXISTS(axis) OR NOT EXISTS(ref_direction)) OR (cross_product(
axis, ref_direction).magnitude > 0.0);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_basis
SUBTYPE OF (maths_function, generic_literal);
degree : nonnegative_integer;
repeated_knots : LIST [2:?] OF REAL;
DERIVE
order : positive_integer := degree + 1;
num_basis : positive_integer := SIZEOF(repeated_knots) - order;
WHERE
WR1: num_basis >= order;
WR2: nondecreasing(repeated_knots);
WR3: repeated_knots[order] < repeated_knots[(num_basis + 1)];
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY b_spline_curve
SUPERTYPE OF (ONEOF(uniform_curve, b_spline_curve_with_knots,
quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)
SUBTYPE OF (bounded_curve);
degree : INTEGER;
control_points_list : LIST [2:?] OF cartesian_point;
curve_form : b_spline_curve_form;
closed_curve : LOGICAL;
self_intersect : LOGICAL;
DERIVE
upper_index_on_control_points : INTEGER := SIZEOF(control_points_list)
- 1;
control_points : ARRAY [0:upper_index_on_control_points]
OF cartesian_point := list_to_array
(control_points_list, 0,
upper_index_on_control_points);
WHERE
WR1: ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNIFORM_CURVE' IN
TYPEOF(SELF)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUASI_UNIFORM_CURVE'
IN TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BEZIER_CURVE' IN
TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
knot_multiplicities : LIST [2:?] OF INTEGER;
knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
WR1: constraints_param_b_spline(degree, upper_index_on_knots,
upper_index_on_control_points, knot_multiplicities, knots);
WR2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
basis : LIST [1:?] OF b_spline_basis;
DERIVE
coef : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: function_is_table(coef);
WR2: (space_dimension(coef.range) = 1) AND (number_superspace_of(
factor1(coef.range)) = the_reals);
WR3: SIZEOF(basis) <= SIZEOF(shape_of_array(coef));
WR4: compare_basis_and_coef(basis, coef);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY b_spline_surface
SUPERTYPE OF (ONEOF(b_spline_surface_with_knots, uniform_surface,
quasi_uniform_surface, bezier_surface) ANDOR
rational_b_spline_surface)
SUBTYPE OF (bounded_surface);
u_degree : INTEGER;
v_degree : INTEGER;
control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
surface_form : b_spline_surface_form;
u_closed : LOGICAL;
v_closed : LOGICAL;
self_intersect : LOGICAL;
DERIVE
u_upper : INTEGER := SIZEOF(control_points_list) - 1;
v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF
cartesian_point := make_array_of_array(
control_points_list, 0, u_upper, 0, v_upper);
WHERE
WR1: ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNIFORM_SURFACE'
IN TYPEOF(SELF)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUASI_UNIFORM_SURFACE'
IN TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BEZIER_SURFACE'
IN TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_surface_with_knots
SUBTYPE OF (b_spline_surface);
u_multiplicities : LIST [2:?] OF INTEGER;
v_multiplicities : LIST [2:?] OF INTEGER;
u_knots : LIST [2:?] OF parameter_value;
v_knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
knot_u_upper : INTEGER := SIZEOF(u_knots);
knot_v_upper : INTEGER := SIZEOF(v_knots);
WHERE
WR1: constraints_param_b_spline(SELF\b_spline_surface.u_degree,
knot_u_upper, SELF\b_spline_surface.u_upper, u_multiplicities
, u_knots);
WR2: constraints_param_b_spline(SELF\b_spline_surface.v_degree,
knot_v_upper, SELF\b_spline_surface.v_upper, v_multiplicities
, v_knots);
WR3: SIZEOF(u_multiplicities) = knot_u_upper;
WR4: SIZEOF(v_multiplicities) = knot_v_upper;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_volume
SUPERTYPE OF (ONEOF(b_spline_volume_with_knots, uniform_volume,
quasi_uniform_volume, bezier_volume) ANDOR rational_b_spline_volume)
SUBTYPE OF (volume);
u_degree : INTEGER;
v_degree : INTEGER;
w_degree : INTEGER;
control_points_list : LIST [2:?] OF LIST [2:?] OF LIST [2:?] OF
cartesian_point;
DERIVE
u_upper : INTEGER := SIZEOF(control_points_list) - 1;
v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
w_upper : INTEGER := SIZEOF(control_points_list[1][1]) - 1;
control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF ARRAY [0:
w_upper] OF cartesian_point :=
make_array_of_array_of_array(control_points_list, 0
, u_upper, 0, v_upper, 0, w_upper);
WHERE
WR1: ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BEZIER_VOLUME' IN
TYPEOF(SELF)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNIFORM_VOLUME'
IN TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUASI_UNIFORM_VOLUME'
IN TYPEOF(SELF))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_VOLUME_WITH_KNOTS'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_volume_with_knots
SUBTYPE OF (b_spline_volume);
u_multiplicities : LIST [2:?] OF INTEGER;
v_multiplicities : LIST [2:?] OF INTEGER;
w_multiplicities : LIST [2:?] OF INTEGER;
u_knots : LIST [2:?] OF parameter_value;
v_knots : LIST [2:?] OF parameter_value;
w_knots : LIST [2:?] OF parameter_value;
DERIVE
knot_u_upper : INTEGER := SIZEOF(u_knots);
knot_v_upper : INTEGER := SIZEOF(v_knots);
knot_w_upper : INTEGER := SIZEOF(w_knots);
WHERE
WR1: constraints_param_b_spline(SELF\b_spline_volume.u_degree,
knot_u_upper, SELF\b_spline_volume.u_upper, u_multiplicities,
u_knots);
WR2: constraints_param_b_spline(SELF\b_spline_volume.v_degree,
knot_v_upper, SELF\b_spline_volume.v_upper, v_multiplicities,
v_knots);
WR3: constraints_param_b_spline(SELF\b_spline_volume.w_degree,
knot_w_upper, SELF\b_spline_volume.w_upper, w_multiplicities,
w_knots);
WR4: SIZEOF(u_multiplicities) = knot_u_upper;
WR5: SIZEOF(v_multiplicities) = knot_v_upper;
WR6: SIZEOF(w_multiplicities) = knot_w_upper;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY back_boring_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: 0 = SIZEOF(QUERY (amr <* get_relating_amr(SELF)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
IN TYPEOF(amr)) AND NOT verify_required_action_property(amr.
related_method, 'oriented spindle stop')));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY background_colour
SUBTYPE OF (colour);
presentation : area_or_view;
UNIQUE
UR1: presentation;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY banded_matrix
SUBTYPE OF (linearized_table_function);
default_entry : maths_value;
below : INTEGER;
above : INTEGER;
order : ordering_type;
WHERE
WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
WR2: -below <= above;
WR3: member_of(default_entry, factor1(SELF\linearized_table_function.
source.range));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY basic_round_hole
SUBTYPE OF (round_hole);
depth : OPTIONAL positive_length_measure_with_unit;
depth_tolerance : OPTIONAL tolerance_value;
diameter : positive_length_measure_with_unit;
diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
placement : shape_representation;
through_hole : BOOLEAN;
WHERE
WR1: SIZEOF(placement\representation.items) = 1;
WR2: SIZEOF(QUERY (ri <* placement\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(ri)))) = 1;
WR3:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(depth_tolerance\tolerance_value.lower_bound);
WR4:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(depth_tolerance\tolerance_value.upper_bound);
WR5: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(diameter_tolerance\tolerance_value.lower_bound));
WR6: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(diameter_tolerance\tolerance_value.upper_bound));
WR7: through_hole XOR EXISTS(depth);
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY basic_round_hole_occurrence
SUBTYPE OF (shape_aspect_occurrence);
SELF\shape_aspect_occurrence.definition : basic_round_hole;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF\shape_aspect.of_shape\property_definition.
definition);
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY basic_round_hole_occurrence_in_assembly
SUBTYPE OF (basic_round_hole_occurrence);
modified_components : LIST [1:?] OF UNIQUE
multi_level_reference_designator;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY basic_sparse_matrix
SUBTYPE OF (explicit_table_function, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST [3:3] OF
maths_function;
default_entry : maths_value;
order : ordering_type;
DERIVE
index : maths_function := SELF\multiple_arity_generic_expression.
operands[1];
loc : maths_function := SELF\multiple_arity_generic_expression.
operands[2];
val : maths_function := SELF\multiple_arity_generic_expression.
operands[3];
WHERE
WR1: function_is_1d_table(index);
WR2: function_is_1d_table(loc);
WR3: function_is_1d_table(val);
WR4: check_sparse_index_domain(index.domain, index_base, shape, order);
WR5: check_sparse_index_to_loc(index.range, loc.domain);
WR6: loc.domain = val.domain;
WR7: check_sparse_loc_range(loc.range, index_base, shape, order);
WR8: member_of(default_entry, val.range);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY between_shape_aspect
SUBTYPE OF (continuous_shape_aspect);
WHERE
WR1: SIZEOF(QUERY (sar <* SELF\composite_shape_aspect.
component_relationships| (sar\shape_aspect_relationship.name
= 'start feature'))) = 1;
WR2: SIZEOF(QUERY (sar <* SELF\composite_shape_aspect.
component_relationships| (sar\shape_aspect_relationship.name
= 'end feature'))) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bezier_volume
SUBTYPE OF (b_spline_volume);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY binary_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF(xor_expression, equals_expression))
SUBTYPE OF (boolean_expression, binary_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY binary_function_call
ABSTRACT SUPERTYPE OF (ONEOF(atan_function))
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY binary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST [2:2] OF generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY binary_literal
SUBTYPE OF (generic_literal);
lit_value : BINARY;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY binary_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(minus_expression, div_expression,
mod_expression, slash_expression, power_expression,
binary_function_call))
SUBTYPE OF (numeric_expression, binary_generic_expression);
SELF\binary_generic_expression.operands : LIST [2:2] OF
numeric_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY block
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY block_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 4;
WR2: SIZEOF(QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1;
WR5: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'height'))) = 1;
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY block_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY boolean_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function, boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_boolean_expression,
unary_boolean_expression, binary_boolean_expression,
multiple_arity_boolean_expression, comparison_expression,
interval_expression, boolean_defined_function))
SUBTYPE OF (expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY boolean_literal
SUBTYPE OF (simple_boolean_expression, generic_literal);
the_value : BOOLEAN;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY boolean_representation_item
SUBTYPE OF (representation_item, boolean_literal);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY boolean_result
SUBTYPE OF (geometric_representation_item);
operator : boolean_operator;
first_operand : boolean_operand;
second_operand : boolean_operand;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY boolean_variable
SUBTYPE OF (simple_boolean_expression, variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY boring_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: SELF.description IN [ 'boring', 'reaming' ];
WR2: verify_optional_action_property(SELF, 'spindle stop') AND
verify_enumeration_action_property(SELF, 'spindle stop', [
'spindle stop at bottom', 'spindle nonstop' ]);
WR3: verify_optional_action_property(SELF, 'testcut depth') AND
verify_length_measure_action_property(SELF, 'testcut depth');
WR4: verify_optional_action_property(SELF, 'waiting position') AND
verify_rep_item_for_action_property(SELF, 'waiting position',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY boss
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'circular', 'complex',
'rectangular' ];
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'boss height occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear')) AND (sdr.name
= 'boss height'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((1 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 2)))) = 1))) = 1;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (srwp_i.name =
'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(
pdr.used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'fillet radius'))) <= 1)
)) = 0))) = 0;
WR6: NOT (SELF\characterized_object.description = 'circular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'circular profile occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR7: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'top condition occurrence') AND (
SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'boss top usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS_TOP' IN
TYPEOF(fcr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR8: NOT (SELF\characterized_object.description = 'circular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in diameter occurrence') AND
(SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr.related_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS' IN TYPEOF(
fcr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR9: NOT (SELF\characterized_object.description = 'complex') OR (SIZEOF
(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'enclosed boundary occurrence') AND
(SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1)))
= 0);
WR10: NOT (SELF\characterized_object.description IN [ 'complex',
'rectangular' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN
(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in boundary occurrence') AND
(SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr.related_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS' IN TYPEOF(
fcr.relating_shape_aspect))) AND (fcr.related_shape_aspect.
description IN [ 'angle taper', 'directed taper' ]))) = 1)))
<= 1))) = 0);
WR11: NOT (SELF\characterized_object.description = 'rectangular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'rectangular profile occurrence')
AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR12: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY boss_top
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex' ];
WR3: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR4: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOCATION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR6: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| ((sar.description = 'boss top usage') AND (sar.name IN [
'boss height start', 'boss height end' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'top condition occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS' IN TYPEOF(
fcr.related_shape_aspect.of_shape.definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS_TOP' IN
TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) <= 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'top radius'))) <= 1)))
= 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY bottom_and_side_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'axial cutting depth') AND
verify_length_measure_action_property(SELF,
'axial cutting depth');
WR3: verify_optional_action_property(SELF, 'radial cutting depth') AND
verify_length_measure_action_property(SELF,
'radial cutting depth');
WR4: verify_optional_action_property(SELF, 'allowance side') AND
verify_length_measure_action_property(SELF, 'allowance side')
;
WR5: verify_optional_action_property(SELF, 'allowance bottom') AND
verify_length_measure_action_property(SELF,
'allowance bottom');
WR6: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance side') AND
verify_required_action_property(SELF, 'allowance bottom');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY bound_variable_semantics
SUBTYPE OF (variable_semantics);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY boundary_curve
SUBTYPE OF (composite_curve_on_surface);
WHERE
WR1: SELF\composite_curve.closed_curve;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_curve
SUPERTYPE OF (ONEOF(polyline, b_spline_curve, trimmed_curve,
bounded_pcurve, bounded_surface_curve, composite_curve,
locally_refined_spline_curve))
SUBTYPE OF (curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_pcurve
SUBTYPE OF (pcurve, bounded_curve);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' IN
TYPEOF(SELF\pcurve.reference_to_curve.items[1]);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_surface
SUPERTYPE OF (ONEOF(b_spline_surface, rectangular_trimmed_surface,
curve_bounded_surface, rectangular_composite_surface,
locally_refined_spline_surface))
SUBTYPE OF (surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_surface_curve
SUBTYPE OF (surface_curve, bounded_curve);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' IN
TYPEOF(SELF\surface_curve.curve_3d);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY box_domain
SUBTYPE OF (founded_item);
corner : cartesian_point;
xlength : positive_length_measure;
ylength : positive_length_measure;
zlength : positive_length_measure;
WHERE
WR1: SIZEOF(QUERY (item <* USEDIN(SELF, '')| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOXED_HALF_SPACE'
IN TYPEOF(item)))) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY boxed_half_space
SUBTYPE OF (half_space_solid);
enclosure : box_domain;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY breakdown_context
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY breakdown_element_group_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group :
product_definition_element_relationship;
items : SET [1:1] OF
product_definition_or_breakdown_element_usage;
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY breakdown_element_realization
SUBTYPE OF (characterized_object, product_definition_element_relationship
);
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY breakdown_element_usage
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY breakdown_of
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY brep_with_voids
SUBTYPE OF (manifold_solid_brep);
voids : SET [1:?] OF oriented_closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY calendar_date
SUBTYPE OF (date);
day_component : day_in_month_number;
month_component : month_in_year_number;
WHERE
WR1: valid_calendar_date(SELF);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY camera_image
SUPERTYPE OF (ONEOF(camera_image_3d_with_scale))
SUBTYPE OF (mapped_item);
SELF\mapped_item.mapping_source : camera_usage;
SELF\mapped_item.mapping_target : planar_box;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_image_3d_with_scale
SUBTYPE OF (camera_image);
DERIVE
scale : positive_ratio_measure := SELF\mapped_item.mapping_target\
planar_extent.size_in_x / SELF\mapped_item.mapping_source.
mapping_origin\camera_model_d3.perspective_of_volume.
view_window.size_in_x;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_MODEL_D3' IN
TYPEOF(SELF\mapped_item.mapping_source.mapping_origin);
WR2: aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(SELF\
mapped_item.mapping_source.mapping_origin\camera_model_d3.
perspective_of_volume.view_window);
WR3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
perspective_of_volume.front_plane_clipping AND SELF\
mapped_item.mapping_source.mapping_origin\camera_model_d3.
perspective_of_volume.view_volume_sides_clipping;
WR4: (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) AND
(SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0)
;
WR5: (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
perspective_of_volume.view_window.size_in_x > 0) AND (SELF\
mapped_item.mapping_source.mapping_origin\camera_model_d3.
perspective_of_volume.view_window.size_in_y > 0);
WR6: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(SELF\mapped_item.mapping_target\planar_box.
placement)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(SELF\mapped_item.mapping_target\planar_box.
placement));
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model
ABSTRACT SUPERTYPE OF (ONEOF(camera_model_d3))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ITEM_DEFINED_TRANSFORMATION.TRANSFORM_ITEM_1'
)) + SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_MAP.MAPPING_ORIGIN'
)) > 0;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)) = 0;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_d3
SUBTYPE OF (camera_model);
view_reference_system : axis2_placement_3d;
perspective_of_volume : view_volume;
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_d3_multi_clipping
SUBTYPE OF (camera_model_d3);
shape_clipping : SET [1:?] OF
camera_model_d3_multi_clipping_intersection_select;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_d3_multi_clipping_intersection
SUBTYPE OF (geometric_representation_item);
shape_clipping : SET [2:?] OF
camera_model_d3_multi_clipping_intersection_select;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_d3_multi_clipping_union
SUBTYPE OF (geometric_representation_item);
shape_clipping : SET [2:?] OF
camera_model_d3_multi_clipping_union_select;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_d3_with_hlhsr
SUBTYPE OF (camera_model_d3);
hidden_line_surface_removal : BOOLEAN;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_model_with_light_sources
SUBTYPE OF (camera_model_d3);
sources : SET [1:?] OF light_source;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY camera_usage
SUBTYPE OF (representation_map);
SELF\representation_map.mapping_origin : camera_model;
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_REPRESENTATION'
IN TYPEOF(SELF\representation_map.mapped_representation));
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY capacitance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAPACITANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY capacitance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.farad);
END_ENTITY; -- 10303-41: measure_schema
ENTITY cartesian_complex_number_region
SUBTYPE OF (maths_space, generic_literal);
real_constraint : real_interval;
imag_constraint : real_interval;
WHERE
WR1: ((min_exists(real_constraint) OR max_exists(real_constraint)) OR
min_exists(imag_constraint)) OR max_exists(imag_constraint);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY cartesian_point
SUPERTYPE OF (ONEOF(cylindrical_point, polar_point, spherical_point))
SUBTYPE OF (point);
coordinates : LIST [1:3] OF length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cartesian_transformation_operator
SUPERTYPE OF (ONEOF(cartesian_transformation_operator_2d,
cartesian_transformation_operator_3d))
SUBTYPE OF (geometric_representation_item,
functionally_defined_transformation);
axis1 : OPTIONAL direction;
axis2 : OPTIONAL direction;
local_origin : cartesian_point;
scale : OPTIONAL REAL;
DERIVE
scl : REAL := NVL(scale, 1.0);
WHERE
WR1: scl > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cartesian_transformation_operator_2d
SUBTYPE OF (cartesian_transformation_operator);
DERIVE
u : LIST [2:2] OF direction := base_axis(2, SELF\
cartesian_transformation_operator.axis1, SELF\
cartesian_transformation_operator.axis2, ?);
WHERE
WR1: SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
axis3 : OPTIONAL direction;
DERIVE
u : LIST [3:3] OF direction := base_axis(3, SELF\
cartesian_transformation_operator.axis1, SELF\
cartesian_transformation_operator.axis2, axis3);
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY celsius_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THERMODYNAMIC_TEMPERATURE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY certification;
name : label;
purpose : text;
kind : certification_type;
END_ENTITY; -- 10303-41: certification_schema
ENTITY certification_assignment
ABSTRACT SUPERTYPE;
assigned_certification : certification;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY certification_type;
description : label;
END_ENTITY; -- 10303-41: certification_schema
ENTITY chain_based_geometric_item_specific_usage
SUBTYPE OF (geometric_item_specific_usage,
chain_based_item_identified_representation_usage);
END_ENTITY; -- 10303-1032: shape_property_assignment_mim
ENTITY chain_based_item_identified_representation_usage
SUBTYPE OF (item_identified_representation_usage);
nodes : LIST [2:?] OF UNIQUE representation;
undirected_link : LIST [1:?] OF chained_representation_link;
DERIVE
root : representation := nodes[1];
SELF\item_identified_representation_usage.used_representation :
representation := nodes[HIINDEX(nodes)];
leaf : representation := used_representation;
directed_link : LIST [1:?] OF representation_relationship :=
get_directed_link(nodes, undirected_link);
WHERE
WR1: EXISTS(directed_link);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY chamfer
SUBTYPE OF (transition_feature);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'chamfer face'))) <= 1))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER_OFFSET'
IN TYPEOF(fcr.related_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER' IN
TYPEOF(fcr.relating_shape_aspect))) AND (fcr.
related_shape_aspect.description = 'first offset'))) = 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER_OFFSET'
IN TYPEOF(fcr.related_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER' IN
TYPEOF(fcr.relating_shape_aspect))) AND (fcr.
related_shape_aspect.description = 'second offset'))) = 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY chamfer_offset
SUBTYPE OF (shape_aspect);
WHERE
WR1: SELF.description IN [ 'first offset', 'second offset' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'offset amount'))) = 1))
) = 0))) = 0);
WR5: NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'first face shape'))) <= 1))) = 0)
;
WR6: NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'offset amount') OR (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'offset angle'))) = 1)))
= 0))) = 0);
WR7: NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'second face shape'))) <= 1))) = 0
);
WR8: SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER_OFFSET'
IN TYPEOF(sdr.related_shape_aspect)))) = 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY character_glyph_style_outline
SUBTYPE OF (founded_item);
outline_style : curve_style;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY character_glyph_style_stroke
SUBTYPE OF (founded_item);
stroke_style : curve_style;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY characteristic_data_column_header
SUBTYPE OF (general_property);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY characteristic_data_column_header_link
SUBTYPE OF (general_property_relationship);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY characteristic_data_table_header
SUBTYPE OF (general_property);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY characteristic_data_table_header_decomposition
SUBTYPE OF (general_property_relationship);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY characteristic_type
SUBTYPE OF (group);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY characterized_chain_based_item_within_representation
SUBTYPE OF (characterized_item_within_representation);
nodes : LIST [2:?] OF UNIQUE representation;
undirected_link : LIST [1:?] OF chained_representation_link;
DERIVE
root : representation := nodes[1];
SELF\characterized_item_within_representation.rep : representation :=
nodes[HIINDEX(nodes)];
leaf : representation := rep;
directed_link : LIST [1:?] OF representation_relationship :=
get_directed_link(nodes, undirected_link);
WHERE
WR1: EXISTS(directed_link);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY characterized_class
SUBTYPE OF (characterized_object, class);
END_ENTITY; -- 10303-1111: classification_with_attributes_mim
ENTITY characterized_item_within_representation
SUBTYPE OF (characterized_object);
item : representation_item;
rep : representation;
UNIQUE
UR1: item, rep;
WHERE
WR1: rep IN using_representations(item);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY characterized_object;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY characterized_object_relationship;
name : label;
description : OPTIONAL text;
relating_object : characterized_object;
related_object : characterized_object;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY characterized_product_concept_feature
SUBTYPE OF (product_concept_feature, characterized_object);
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY characterized_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category, characterized_object);
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY characterized_representation
SUBTYPE OF (representation, characterized_object);
DERIVE
SELF\characterized_object.name : label := SELF\representation.name;
SELF\characterized_object.description : text := SELF\representation.
description;
END_ENTITY; -- 10303-1805: characterized_representation_mim
ENTITY circle
SUBTYPE OF (conic);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY circular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0
))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY circular_involute
SUBTYPE OF (curve);
position : axis2_placement;
base_radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY circular_path
SUBTYPE OF (path_node);
via_point : cartesian_point;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY circular_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 3))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 5)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) <= 1))) =
0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'base feature rotation')
)) <= 1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of features'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'angular spacing'))) = 1
))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY circular_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY class
SUBTYPE OF (group);
END_ENTITY; -- 10303-54: classification_schema
ENTITY class_by_extension
SUBTYPE OF (class);
END_ENTITY; -- 10303-54: classification_schema
ENTITY class_by_intension
SUBTYPE OF (class);
END_ENTITY; -- 10303-54: classification_schema
ENTITY class_system
SUBTYPE OF (group);
END_ENTITY; -- 10303-1111: classification_with_attributes_mim
ENTITY class_usage_effectivity_context_assignment
SUBTYPE OF (effectivity_context_assignment);
items : SET [1:?] OF class_usage_effectivity_context_item;
WHERE
WR1: SELF.role.name = 'class usage influence';
WR2: SIZEOF(QUERY (i <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(i)))) = 0;
WR3: (((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_EFFECTIVITY_ASSIGNMENT'
IN TYPEOF(SELF.assigned_effectivity_assignment)) AND (SIZEOF
(TYPEOF(SELF.assigned_effectivity_assignment.
assigned_effectivity)) = 1)) AND (SELF.
assigned_effectivity_assignment.assigned_effectivity.id =
'class usage')) AND (SIZEOF(QUERY (i <* SELF.
assigned_effectivity_assignment\
applied_effectivity_assignment.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE'
IN TYPEOF(i)))) = 0);
END_ENTITY; -- 10303-1112: specification_control_mim
ENTITY classification_assignment
ABSTRACT SUPERTYPE;
assigned_class : group;
role : classification_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY classification_assignment_relationship;
id : OPTIONAL identifier;
description : OPTIONAL text;
relating : classification_assignment;
related : classification_assignment;
relation_type : STRING;
WHERE
WR1: acyclic_classification_assignment_relationship(SELF, [ related ],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASSIFICATION_ASSIGNMENT_RELATIONSHIP'
);
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY classification_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY closed_path_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
ENTITY clothoid
SUBTYPE OF (curve);
position : axis2_placement;
clothoid_constant : length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY coaxiality_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY colour;
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY colour_rgb
SUBTYPE OF (colour_specification);
red : REAL;
green : REAL;
blue : REAL;
WHERE
WR1: (0.0 <= red) AND (red <= 1.0);
WR2: (0.0 <= green) AND (green <= 1.0);
WR3: (0.0 <= blue) AND (blue <= 1.0);
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY colour_specification
SUBTYPE OF (colour);
name : label;
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY common_datum
SUBTYPE OF (composite_shape_aspect, datum);
WHERE
WR1: SIZEOF(SELF\composite_shape_aspect.component_relationships) = 2;
WR2: SIZEOF(QUERY (sar <* SELF\composite_shape_aspect.
component_relationships| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM' IN TYPEOF
(sar.related_shape_aspect)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMMON_DATUM' IN
TYPEOF(sar.related_shape_aspect))))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY comparison_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_expression
ABSTRACT SUPERTYPE OF (ONEOF(comparison_equal, comparison_greater,
comparison_greater_equal, comparison_less, comparison_less_equal,
comparison_not_equal, like_expression))
SUBTYPE OF (boolean_expression, binary_generic_expression);
SELF\binary_generic_expression.operands : LIST [2:2] OF expression;
WHERE
WR1: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2])) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_greater
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_greater_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_less
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_less_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_not_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY complex_number_literal
SUBTYPE OF (generic_literal);
real_part : REAL;
imag_part : REAL;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY complex_number_literal_polar
SUBTYPE OF (complex_number_literal);
modulus : REAL;
argument : REAL;
DERIVE
SELF\complex_number_literal.real_part : REAL := modulus * COS(argument)
;
SELF\complex_number_literal.imag_part : REAL := modulus * SIN(argument)
;
WHERE
WR1: modulus >= 0;
WR2: (0 <= argument) AND (argument <= 2 * PI);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY complex_triangulated_face
SUBTYPE OF (tessellated_face);
pnindex : LIST [0:?] OF INTEGER;
triangle_strips : LIST [0:?] OF LIST [3:?] OF INTEGER;
triangle_fans : LIST [0:?] OF LIST [3:?] OF INTEGER;
WHERE
WR1: (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.
pnmax);
WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <>
coordinates.npoints));
WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0)
);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY complex_triangulated_surface_set
SUBTYPE OF (tessellated_surface_set);
pnindex : LIST [0:?] OF INTEGER;
triangle_strips : LIST [0:?] OF LIST [3:?] OF INTEGER;
triangle_fans : LIST [0:?] OF LIST [3:?] OF INTEGER;
WHERE
WR1: (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\
tessellated_surface_set.pnmax);
WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax
<> coordinates.npoints));
WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0)
);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY composite_curve
SUBTYPE OF (bounded_curve);
segments : LIST [1:?] OF composite_curve_segment;
self_intersect : LOGICAL;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_curve : LOGICAL := segments[n_segments].transition <>
discontinuous;
WHERE
WR1: NOT closed_curve AND (SIZEOF(QUERY (temp <* segments| (temp.
transition = discontinuous))) = 1) OR closed_curve AND (
SIZEOF(QUERY (temp <* segments| (temp.transition =
discontinuous))) = 0);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_curve_on_surface
SUPERTYPE OF (boundary_curve)
SUBTYPE OF (composite_curve);
DERIVE
basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
WHERE
WR1: SIZEOF(basis_surface) > 0;
WR2: constraints_composite_curve_on_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_curve_segment
SUBTYPE OF (founded_item);
transition : transition_code;
same_sense : BOOLEAN;
parent_curve : curve;
INVERSE
using_curves : BAG [1:?] OF composite_curve FOR segments;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' IN
TYPEOF(parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_group_shape_aspect
SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY composite_hole
SUBTYPE OF (compound_feature);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SELF\characterized_object.description
IN [ 'counterbore', 'countersunk' ]);
WR2: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.
component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE' IN
TYPEOF(sar.related_shape_aspect)))) = 2))) = 1))) = 1);
WR3: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (NOT (SELF\characterized_object.
description = 'countersunk') OR (SIZEOF(QUERY (pds <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.
component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE' IN
TYPEOF(sar.related_shape_aspect)) AND NOT (SIZEOF(QUERY (pds
<* QUERY (pd <* USEDIN(sar.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in diameter occurrence') AND
(SIZEOF(QUERY (fcr2 <* QUERY (sar2 <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar2.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar2)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr2.related_shape_aspect)))) = 1))) = 0))) = 0))) = 1))) =
1))) = 1));
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY composite_shape_aspect
SUPERTYPE OF (ONEOF(continuous_shape_aspect, common_datum,
composite_group_shape_aspect))
SUBTYPE OF (shape_aspect);
INVERSE
component_relationships : SET [2:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY composite_text
SUBTYPE OF (geometric_representation_item);
collected_text : SET [2:?] OF text_or_character;
WHERE
WR1: acyclic_composite_text(SELF, collected_text);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY composite_text_with_associated_curves
SUBTYPE OF (composite_text);
associated_curves : SET [1:?] OF curve;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY composite_text_with_blanking_box
SUBTYPE OF (composite_text);
blanking : planar_box;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY composite_text_with_delineation
SUBTYPE OF (composite_text);
delineation : text_delineation;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY composite_text_with_extent
SUBTYPE OF (composite_text);
extent : planar_extent;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY composite_unit_shape_aspect
SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- 10303-1742: shape_composition_mim
ENTITY compound_feature
SUBTYPE OF (feature_definition);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (csa.name = 'compound feature in solid') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)))) = 1))) = 1);
WR2: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)))) = 1))) = 1);
WR3: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (SIZEOF(QUERY (fcr <* csa.
component_relationships| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(fcr)))) = 0))) = 1))) = 1);
WR4: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)))) = 1))) = 1);
WR5: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.
component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THREAD' IN
TYPEOF(sar.related_shape_aspect)))) = 0))) = 1))) = 1);
WR6: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_COMPOSITE_HOLE'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.
component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_FEATURE'
IN TYPEOF(sar.related_shape_aspect)) AND (sar.
related_shape_aspect\characterized_object.name <> SELF\
characterized_object.name))) = 0))) = 1))) = 1);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY compound_representation_item
SUPERTYPE OF (ONEOF(row_representation_item, table_representation_item))
SUBTYPE OF (representation_item);
item_element : compound_item_definition;
END_ENTITY; -- 10303-43: representation_schema
ENTITY compound_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF.context_of_items)) AND (SELF.context_of_items
\geometric_representation_context.coordinate_space_dimension
= 3);
WR2: SIZEOF(QUERY (cbsr_i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(cbsr_i)) <> 1))) = 0;
WR3: SIZEOF(QUERY (cbsr_i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(cbsr_i)) = 1))) > 0;
WR4: SIZEOF(QUERY (cbsr_i <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(cbsr_i)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
] * TYPEOF(cbsr_i\mapped_item.mapping_source)) <> 1))) = 0;
END_ENTITY; -- 10303-1327: compound_shape_representation_mim
ENTITY concat_expression
SUBTYPE OF (string_expression, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
string_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY concentricity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY concept_feature_operator;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY concept_feature_relationship;
name : label;
description : OPTIONAL text;
relating_product_concept_feature : product_concept_feature;
related_product_concept_feature : product_concept_feature;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY concept_feature_relationship_with_condition
SUBTYPE OF (concept_feature_relationship);
conditional_operator : concept_feature_operator;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY concurrent_action_method
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY conditional_concept_feature
SUBTYPE OF (product_concept_feature);
condition : concept_feature_relationship_with_condition;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY conductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDUCTANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY conductance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.siemens);
END_ENTITY; -- 10303-41: measure_schema
ENTITY configurable_item
SUBTYPE OF (configuration_item);
item_concept_feature : SET [1:?] OF product_concept_feature_association
;
END_ENTITY; -- 10303-44: configuration_management_schema
ENTITY configuration_design;
configuration : configuration_item;
design : configuration_design_item;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
UNIQUE
UR1: configuration, design;
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-44: configuration_management_schema
ENTITY configuration_effectivity
SUBTYPE OF (product_definition_effectivity);
configuration : configuration_design;
UNIQUE
UR1: configuration, SELF\product_definition_effectivity.usage,
SELF\effectivity.id;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_USAGE'
IN TYPEOF(SELF\product_definition_effectivity.usage);
END_ENTITY; -- 10303-44: configuration_management_schema
ENTITY configuration_item;
id : identifier;
name : label;
description : OPTIONAL text;
item_concept : product_concept;
purpose : OPTIONAL label;
END_ENTITY; -- 10303-44: configuration_management_schema
ENTITY configuration_item_hierarchical_relationship
SUBTYPE OF (configuration_item_relationship);
END_ENTITY; -- 10303-1056: configuration_item_mim
ENTITY configuration_item_relationship;
name : label;
description : OPTIONAL text;
relating_configuration_item : configuration_item;
related_configuration_item : configuration_item;
END_ENTITY; -- 10303-44: configuration_management_schema
ENTITY configuration_item_revision_sequence
SUBTYPE OF (configuration_item_relationship);
END_ENTITY; -- 10303-1056: configuration_item_mim
ENTITY configured_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET [1:?] OF configured_effectivity_item;
WHERE
WR1: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EFFECTIVITY' ] *
TYPEOF(SELF.assigned_effectivity)) = 1) AND (SELF.
assigned_effectivity.id = 'configuration validity');
WR2: SIZEOF(SELF.items) = 1;
WR3: SIZEOF(QUERY (i <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(i)) OR NOT (i\product_definition.
frame_of_reference.name IN [ 'conceptual definition',
'part occurrence', 'functional definition',
'alternative definition' ]))) = 0;
WR4: SELF.role.name IN [ 'design', 'usage' ];
WR5: (SELF.role.name <> 'design') OR (SIZEOF(QUERY (i <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.
name = 'part occurrence'))) = 0);
WR6: (SELF.role.name <> 'usage') OR (SIZEOF(QUERY (i <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.
name = 'conceptual definition'))) = 0);
WR7: SELF.role.description IN [ 'exception', 'inherited', 'local' ];
WR8: SIZEOF(QUERY (x <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT'
IN TYPEOF(x)))) = 1;
END_ENTITY; -- 10303-1108: specification_based_configuration_mim
ENTITY configured_effectivity_context_assignment
SUBTYPE OF (effectivity_context_assignment);
SELF\effectivity_context_assignment.assigned_effectivity_assignment :
configured_effectivity_assignment;
items : SET [1:?] OF
configured_effectivity_context_item
;
WHERE
WR1: SIZEOF(SELF.items) = 1;
END_ENTITY; -- 10303-1108: specification_based_configuration_mim
ENTITY conic
SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola))
SUBTYPE OF (curve);
position : axis2_placement;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY conical_surface
SUBTYPE OF (elementary_surface);
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
WR1: radius >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY connected_edge_set
SUBTYPE OF (topological_representation_item);
ces_edges : SET [1:?] OF edge;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connected_edge_sub_set
SUBTYPE OF (connected_edge_set);
parent_edge_set : connected_edge_set;
WHERE
WR1: SELF :<>: parent_edge_set;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connected_face_set
SUPERTYPE OF (ONEOF(closed_shell, open_shell))
SUBTYPE OF (topological_representation_item);
cfs_faces : SET [1:?] OF face;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connected_face_sub_set
SUBTYPE OF (connected_face_set);
parent_face_set : connected_face_set;
WHERE
WR1: SELF :<>: parent_face_set;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connected_volume_set
SUBTYPE OF (topological_representation_item);
cvs_volumes : SET [1:?] OF volume_with_faces;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connected_volume_sub_set
SUBTYPE OF (connected_volume_set);
parent_volume_set : connected_volume_set;
WHERE
WR1: SELF :<>: parent_volume_set;
END_ENTITY; -- 10303-42: topology_schema
ENTITY connection_zone_interface_plane_relationship
SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
UR1: SELF\shape_aspect_relationship.name;
END_ENTITY; -- 10303-1671: feature_and_connection_zone_mim
ENTITY constant_function
SUBTYPE OF (maths_function, generic_literal);
sole_output : maths_value;
source_of_domain : maths_space_or_function;
WHERE
WR1: no_cyclic_domain_reference(source_of_domain, [ SELF ]);
WR2: expression_is_constant(domain_from(source_of_domain));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY constituent_shape_aspect
SUBTYPE OF (shape_aspect);
parent : shape_aspect;
DERIVE
SELF\shape_aspect.of_shape : product_definition_shape :=
get_product_definition_shape(SELF);
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY constructive_geometry_representation
SUBTYPE OF (representation);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items)) AND ((2 <=
SELF\representation.context_of_items\
geometric_representation_context.coordinate_space_dimension)
AND (SELF\representation.context_of_items\
geometric_representation_context.coordinate_space_dimension
<= 3));
WR2: SIZEOF(QUERY (cgr_i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_EDGE_SET'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT'
] * TYPEOF(cgr_i)) <> 1))) = 0;
WR3: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'
)) > 0;
END_ENTITY; -- 10303-1131: construction_geometry_mim
ENTITY constructive_geometry_representation_relationship
SUBTYPE OF (representation_relationship);
SELF\representation_relationship.rep_1 :
constructive_geometry_representation_or_shape_representation
;
SELF\representation_relationship.rep_2 :
constructive_geometry_representation;
WHERE
WR1: (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF.rep_1.context_of_items));
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-1131: construction_geometry_mim
ENTITY contact_ratio_representation
SUBTYPE OF (representation);
WHERE
WR1: (SIZEOF(SELF.items) = 1) AND (SIZEOF(QUERY (i <* SELF.items| (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ]
* TYPEOF(i)) = 1) AND (i.name = 'ratio value'))) = 1);
WR2: (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (pdr\property_definition_representation.name =
'contact ratio reference'))) = 1) AND (SIZEOF(QUERY (pdr <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (pdr\property_definition_representation.name =
'contact ratio reference') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(pdr\property_definition_representation.definition\
property_definition.definition)))) = 1);
WR3: (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY'
IN TYPEOF(gpa\general_property_association.base_definition))
AND (gpa\general_property_association.base_definition\
general_property.name = 'surface_condition'))) = 1))) = 1);
END_ENTITY; -- 10303-1110: surface_conditions_mim
ENTITY contacting_feature
SUBTYPE OF (shape_aspect);
WHERE
WR1: SELF\shape_aspect.product_definitional = FALSE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY context_dependent_invisibility
SUBTYPE OF (invisibility);
presentation_context : invisibility_context;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY context_dependent_kinematic_link_representation;
representation_relation :
kinematic_link_representation_association
;
represented_product_relation :
product_definition_relationship_kinematics
;
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY context_dependent_over_riding_styled_item
SUBTYPE OF (over_riding_styled_item);
style_context : LIST [1:?] OF style_context_select;
WHERE
WR1: (SIZEOF(QUERY (sc <* style_context| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM'
IN TYPEOF(sc)))) = 1) OR (SIZEOF(QUERY (sc <* style_context|
(('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM'
IN TYPEOF(sc)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION'
IN TYPEOF(sc))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP'
IN TYPEOF(sc)))) = SIZEOF(style_context));
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY context_dependent_shape_representation;
representation_relation : shape_representation_relationship;
represented_product_relation : product_definition_shape;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP'
IN TYPEOF(represented_product_relation\property_definition.
definition);
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
WR3: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY; -- 10303-41: measure_schema
ENTITY continuous_shape_aspect
SUPERTYPE OF (ONEOF(between_shape_aspect, all_around_shape_aspect))
SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY contouring_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'allowance') AND
verify_length_measure_action_property(SELF, 'allowance');
WR3: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY contract;
name : label;
purpose : text;
kind : contract_type;
END_ENTITY; -- 10303-41: contract_schema
ENTITY contract_assignment
ABSTRACT SUPERTYPE;
assigned_contract : contract;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY contract_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_contract : contract;
related_contract : contract;
END_ENTITY; -- 10303-41: contract_schema
ENTITY contract_type;
description : label;
END_ENTITY; -- 10303-41: contract_schema
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
name : label;
conversion_factor : measure_with_unit;
WHERE
WR1: SELF\named_unit.dimensions = derive_dimensional_exponents(
conversion_factor\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY convex_hexahedron
SUBTYPE OF (faceted_primitive);
WHERE
WR1: SIZEOF(points) = 8;
WR2: above_plane(points[1], points[2], points[3], points[4]) = 0.0;
WR3: above_plane(points[5], points[8], points[7], points[6]) = 0.0;
WR4: above_plane(points[1], points[4], points[8], points[5]) = 0.0;
WR5: above_plane(points[4], points[3], points[7], points[8]) = 0.0;
WR6: above_plane(points[3], points[2], points[6], points[7]) = 0.0;
WR7: above_plane(points[1], points[5], points[6], points[2]) = 0.0;
WR8: same_side([ points[1], points[2], points[3] ], [ points[5], points
[6], points[7], points[8] ]);
WR9: same_side([ points[1], points[4], points[8] ], [ points[3], points
[7], points[6], points[2] ]);
WR10: same_side([ points[1], points[2], points[5] ], [ points[3],
points[7], points[8], points[4] ]);
WR11: same_side([ points[5], points[6], points[7] ], [ points[1],
points[2], points[3], points[4] ]);
WR12: same_side([ points[3], points[7], points[6] ], [ points[1],
points[4], points[8], points[5] ]);
WR13: same_side([ points[3], points[7], points[8] ], [ points[1],
points[5], points[6], points[2] ]);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY coordinated_universal_time_offset;
hour_offset : INTEGER;
minute_offset : OPTIONAL INTEGER;
sense : ahead_or_behind;
DERIVE
actual_minute_offset : INTEGER := NVL(minute_offset, 0);
WHERE
WR1: (0 <= hour_offset) AND (hour_offset < 24);
WR2: (0 <= actual_minute_offset) AND (actual_minute_offset <= 59);
WR3: NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (
sense = exact));
END_ENTITY; -- 10303-41: date_time_schema
ENTITY coordinates_list
SUBTYPE OF (tessellated_item);
npoints : INTEGER;
position_coords : LIST [1:?] OF LIST [3:3] OF REAL;
WHERE
WR1: npoints = SIZEOF(position_coords);
WR2: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPOSITIONED_TESSELLATED_ITEM'
] * TYPEOF(SELF)) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY cos_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY counterbore_hole_definition
SUBTYPE OF (explicit_composite_hole);
counterbore : LIST [1:?] OF UNIQUE
explicit_round_hole;
drilled_hole_depth : OPTIONAL
positive_length_measure_with_unit;
drilled_hole_depth_tolerance : OPTIONAL tolerance_value;
drilled_hole_diameter : positive_length_measure_with_unit;
drilled_hole_diameter_tolerance : OPTIONAL
tolerance_value_or_limits_and_fits
;
through_hole : BOOLEAN;
WHERE
WR1: through_hole XOR EXISTS(drilled_hole_depth);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
lower_bound);
WR3:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
upper_bound);
WR4: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
lower_bound));
WR5: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
upper_bound));
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY counterbore_hole_occurrence
SUBTYPE OF (shape_aspect_occurrence);
SELF\shape_aspect_occurrence.definition : counterbore_hole_definition;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF\shape_aspect.of_shape\property_definition.
definition);
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY counterbore_hole_occurrence_in_assembly
SUBTYPE OF (counterbore_hole_occurrence);
modified_components : LIST [1:?] OF UNIQUE
multi_level_reference_designator;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY counterdrill_hole_definition
SUBTYPE OF (explicit_composite_hole);
counterbore : explicit_round_hole;
counterdrill_angle :
positive_plane_angle_measure_with_unit
;
counterdrill_angle_tolerance : OPTIONAL tolerance_value;
drilled_hole_depth : OPTIONAL
positive_length_measure_with_unit;
drilled_hole_depth_tolerance : OPTIONAL tolerance_value;
drilled_hole_diameter : positive_length_measure_with_unit;
drilled_hole_diameter_tolerance : OPTIONAL
tolerance_value_or_limits_and_fits
;
through_hole : BOOLEAN;
WHERE
WR1: through_hole XOR EXISTS(drilled_hole_depth);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(counterdrill_angle_tolerance\tolerance_value.
lower_bound);
WR3:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(counterdrill_angle_tolerance\tolerance_value.
upper_bound);
WR4:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
lower_bound);
WR5:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
upper_bound);
WR6: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
lower_bound));
WR7: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
upper_bound));
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY counterdrill_hole_occurrence
SUBTYPE OF (shape_aspect_occurrence);
SELF\shape_aspect_occurrence.definition : counterdrill_hole_definition;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF\shape_aspect.of_shape\property_definition.
definition);
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY counterdrill_hole_occurrence_in_assembly
SUBTYPE OF (counterdrill_hole_occurrence);
modified_components : LIST [1:?] OF UNIQUE
multi_level_reference_designator;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY countersink_hole_definition
SUBTYPE OF (explicit_composite_hole);
countersink_angle :
positive_plane_angle_measure_with_unit
;
countersink_angle_tolerance : OPTIONAL tolerance_value;
countersink_diameter : positive_length_measure_with_unit;
countersink_diameter_tolerance : OPTIONAL
tolerance_value_or_limits_and_fits
;
drilled_hole_depth : OPTIONAL
positive_length_measure_with_unit;
drilled_hole_depth_tolerance : OPTIONAL tolerance_value;
drilled_hole_diameter : positive_length_measure_with_unit;
drilled_hole_diameter_tolerance : OPTIONAL
tolerance_value_or_limits_and_fits
;
through_hole : BOOLEAN;
WHERE
WR1: through_hole XOR EXISTS(drilled_hole_depth);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(countersink_angle_tolerance\tolerance_value.
lower_bound);
WR3:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(countersink_angle_tolerance\tolerance_value.
upper_bound);
WR4: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(countersink_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(countersink_diameter_tolerance\tolerance_value.
lower_bound));
WR5: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(countersink_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(countersink_diameter_tolerance\tolerance_value.
upper_bound));
WR6:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
lower_bound);
WR7:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_depth_tolerance\tolerance_value.
upper_bound);
WR8: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
lower_bound));
WR9: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(drilled_hole_diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.
upper_bound));
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY countersink_hole_occurrence
SUBTYPE OF (shape_aspect_occurrence);
SELF\shape_aspect_occurrence.definition : countersink_hole_definition;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF\shape_aspect.of_shape\property_definition.
definition);
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY countersink_hole_occurrence_in_assembly
SUBTYPE OF (countersink_hole_occurrence);
modified_components : LIST [1:?] OF UNIQUE
multi_level_reference_designator;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY csg_solid
SUBTYPE OF (solid_model);
tree_root_expression : csg_select;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY cubic_bezier_tessellated_edge
SUBTYPE OF (tessellated_edge);
SELF\tessellated_edge.line_strip : LIST [4:?] OF INTEGER;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY cubic_bezier_triangulated_face
SUBTYPE OF (tessellated_face);
ctriangles : LIST [1:?] OF LIST [10:10] OF INTEGER;
WHERE
WR1: SIZEOF(SELF\tessellated_face.normals) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY cubic_tessellated_connecting_edge
SUBTYPE OF (cubic_bezier_tessellated_edge);
smooth : LOGICAL;
face1 : cubic_bezier_triangulated_face;
face2 : cubic_bezier_triangulated_face;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY curve
SUPERTYPE OF (ONEOF(line, conic, clothoid, circular_involute, pcurve,
surface_curve, offset_curve_2d, offset_curve_3d, curve_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY curve_based_path
SUBTYPE OF (path_node);
path_curve : curve;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY curve_based_path_with_orientation
SUBTYPE OF (kinematic_path_segment);
position_curve : bounded_curve;
orientation_curve : bounded_curve;
WHERE
WR1: TYPEOF(position_curve) = TYPEOF(orientation_curve);
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY curve_based_path_with_orientation_and_parameters
SUBTYPE OF (curve_based_path_with_orientation);
parameters : path_parameter_representation;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY curve_bounded_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
boundaries : SET [1:?] OF boundary_curve;
implicit_outer : BOOLEAN;
WHERE
WR1: NOT implicit_outer OR (SIZEOF(QUERY (temp <* boundaries| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTER_BOUNDARY_CURVE'
IN TYPEOF(temp)))) = 0);
WR2: NOT implicit_outer OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_SURFACE'
IN TYPEOF(basis_surface));
WR3: SIZEOF(QUERY (temp <* boundaries| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTER_BOUNDARY_CURVE'
IN TYPEOF(temp)))) <= 1;
WR4: SIZEOF(QUERY (temp <* boundaries| (temp\composite_curve_on_surface
.basis_surface[1] <> basis_surface))) = 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY curve_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY curve_replica
SUBTYPE OF (curve);
parent_curve : curve;
transformation : cartesian_transformation_operator;
WHERE
WR1: transformation.dim = parent_curve.dim;
WR2: acyclic_curve_replica(SELF, parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY curve_style
SUBTYPE OF (founded_item);
name : label;
curve_font : OPTIONAL curve_font_or_scaled_curve_font_select;
curve_width : OPTIONAL size_select;
curve_colour : OPTIONAL colour;
WHERE
WR1: (EXISTS(curve_font) OR EXISTS(curve_width)) OR EXISTS(curve_colour
);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY curve_style_font
SUBTYPE OF (founded_item);
name : label;
pattern_list : LIST [1:?] OF curve_style_font_pattern;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY curve_style_font_and_scaling
SUBTYPE OF (founded_item);
name : label;
curve_font : curve_style_font_select;
curve_font_scaling : REAL;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY curve_style_font_pattern
SUBTYPE OF (founded_item);
visible_segment_length : positive_length_measure;
invisible_segment_length : positive_length_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY curve_style_rendering;
rendering_method : shading_curve_method;
rendering_properties : surface_rendering_properties;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY curve_swept_solid_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_AREA_SOLID'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_DISK_SOLID'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_AREA_SOLID'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_DISK_SOLID'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR4: SIZEOF(QUERY (scsas <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE_SWEPT_AREA_SOLID'
IN TYPEOF(it)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR
('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) =
0;
END_ENTITY; -- 10303-523: aic_curve_swept_solid
ENTITY cyclide_segment_solid
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
radius1 : positive_length_measure;
radius2 : positive_length_measure;
cone_angle1 : plane_angle_measure;
cone_angle2 : plane_angle_measure;
turn_angle : plane_angle_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY cylindrical_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY cylindrical_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : cylindrical_pair;
actual_translation : length_measure;
actual_rotation : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY cylindrical_pair_with_range
SUBTYPE OF (cylindrical_pair);
lower_limit_actual_translation : OPTIONAL length_measure;
upper_limit_actual_translation : OPTIONAL length_measure;
lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(
upper_limit_actual_translation)) XOR (
lower_limit_actual_translation <
upper_limit_actual_translation);
WR2: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(
upper_limit_actual_rotation)) XOR (
lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY cylindrical_point
SUBTYPE OF (cartesian_point);
r : length_measure;
theta : plane_angle_measure;
z : length_measure;
DERIVE
SELF\cartesian_point.coordinates : LIST [3:3] OF length_measure := [ r
* COS(theta), r * SIN(theta), z ];
WHERE
WR1: r >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cylindrical_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 3;
WR2: SIZEOF(QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) = 1;
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cylindrical_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
radius : positive_length_measure;
height : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cylindricity_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY data_environment;
name : label;
description : text;
elements : SET [1:?] OF characterized_property_representation;
END_ENTITY; -- 10303-45: material_property_representation_schema
ENTITY date
SUPERTYPE OF (ONEOF(calendar_date, ordinal_date,
week_of_year_and_day_date, year_month));
year_component : year_number;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY date_and_time;
date_component : date;
time_component : local_time;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY date_and_time_assignment
ABSTRACT SUPERTYPE;
assigned_date_and_time : date_and_time;
role : date_time_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY date_assignment
ABSTRACT SUPERTYPE;
assigned_date : date;
role : date_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY date_representation_item
SUBTYPE OF (representation_item, date);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY date_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY date_time_representation_item
SUBTYPE OF (representation_item, date_and_time);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY date_time_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY dated_effectivity
SUBTYPE OF (effectivity);
effectivity_end_date : OPTIONAL date_time_or_event_occurrence;
effectivity_start_date : OPTIONAL date_time_or_event_occurrence;
WHERE
WR1: EXISTS(effectivity_end_date) OR EXISTS(effectivity_start_date);
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY datum
SUBTYPE OF (shape_aspect);
identification : identifier;
INVERSE
established_by_relationships : SET [1:?] OF shape_aspect_relationship
FOR related_shape_aspect;
UNIQUE
UR1: identification, SELF\shape_aspect.of_shape;
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMMON_DATUM' IN
TYPEOF(SELF)) XOR (SIZEOF(QUERY (x <* SELF\datum.
established_by_relationships| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_FEATURE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_TARGET' ]
* TYPEOF(x\shape_aspect_relationship.relating_shape_aspect))
= 1))) >= 1);
WR2: SIZEOF(QUERY (x <* SELF\datum.established_by_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_FEATURE'
IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect))
)) <= 1;
WR3: SELF\shape_aspect.product_definitional = FALSE;
WR4: SELF\shape_aspect.name = '';
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_feature
SUPERTYPE OF (ONEOF(dimensional_location_with_datum_feature,
dimensional_size_with_datum_feature))
SUBTYPE OF (shape_aspect);
INVERSE
feature_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (sar <* SELF\datum_feature.feature_basis_relationship
| ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM' IN
TYPEOF(sar\shape_aspect_relationship.related_shape_aspect))))
= 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_feature_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY datum_reference;
precedence : INTEGER;
referenced_datum : datum;
WHERE
WR1: precedence > 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_reference_compartment
SUBTYPE OF (general_datum_reference);
INVERSE
owner : datum_system FOR constituents;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_reference_element
SUBTYPE OF (general_datum_reference);
DERIVE
owner : general_datum_reference := sts_get_general_datum_reference(SELF
);
WHERE
WR1: SELF <> owner;
WR2: EXISTS(owner);
WR3: SELF\shape_aspect.of_shape = owner\shape_aspect.of_shape;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_reference_modifier_with_value;
modifier_type : datum_reference_modifier_type;
modifier_value : length_measure_with_unit;
WHERE
WR1: modifier_value\measure_with_unit.value_component > 0.0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_system
SUBTYPE OF (shape_aspect);
constituents : LIST [1:3] OF UNIQUE datum_reference_compartment;
UNIQUE
UR1: SELF\shape_aspect.of_shape, SELF\shape_aspect.name;
WHERE
WR1: SELF\shape_aspect.product_definitional = FALSE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
INVERSE
target_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (sar <* SELF\datum_target.target_basis_relationship|
('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM' IN
TYPEOF(sar\shape_aspect_relationship.related_shape_aspect))))
= 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_target_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY default_model_geometric_view
SUBTYPE OF (model_geometric_view, shape_aspect);
DERIVE
SELF\shape_aspect.product_definitional : LOGICAL := FALSE;
UNIQUE
UR1: of_shape;
WHERE
WR1: SELF\characterized_object.name = SELF\shape_aspect.name;
WR2: NOT EXISTS(SELF\characterized_object.description);
WR3: NOT EXISTS(SELF\shape_aspect.description);
END_ENTITY; -- 10303-1315: mechanical_design_presentation_representation_with_draughting_mim
ENTITY default_tolerance_table
SUBTYPE OF (representation);
WHERE
WR1: SIZEOF(QUERY (i <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEFAULT_TOLERANCE_TABLE_CELL'
IN TYPEOF(i)))) = 0;
WR2: ((SIZEOF(QUERY (rr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'
)| (rr.name < 'general tolerance definition'))) = 0) AND (
SIZEOF(QUERY (rr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'
)| (rr.name = 'general tolerance definition') AND (rr.rep_2.
name < 'default tolerance'))) = 0)) AND (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'
)) = 0);
END_ENTITY; -- 10303-1052: default_tolerance_mim
ENTITY default_tolerance_table_cell
SUBTYPE OF (compound_representation_item);
WHERE
WR1: SIZEOF(QUERY (x <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION.ITEMS'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEFAULT_TOLERANCE_TABLE'
IN TYPEOF(x)))) = 1;
WR2: default_tolerance_table_cell_wr2(SELF\compound_representation_item
.item_element);
WR3: default_tolerance_table_cell_wr3(SELF\compound_representation_item
.item_element);
WR4: default_tolerance_table_cell_wr4(SELF\compound_representation_item
.item_element);
WR5: default_tolerance_table_cell_wr5(SELF\compound_representation_item
.item_element);
END_ENTITY; -- 10303-1052: default_tolerance_mim
ENTITY defined_character_glyph
SUBTYPE OF (geometric_representation_item);
definition : defined_glyph_select;
placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY defined_function
ABSTRACT SUPERTYPE OF (ONEOF(numeric_defined_function,
string_defined_function, boolean_defined_function) ANDOR
sql_mappable_defined_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY defined_symbol
SUBTYPE OF (geometric_representation_item);
definition : defined_symbol_select;
target : symbol_target;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY definite_integral_expression
SUBTYPE OF (quantifier_expression);
lower_limit_neg_infinity : BOOLEAN;
upper_limit_pos_infinity : BOOLEAN;
DERIVE
integrand : generic_expression := SELF\
multiple_arity_generic_expression.operands
[1];
variable_of_integration : maths_variable := SELF\
multiple_arity_generic_expression.operands
[2];
SELF\quantifier_expression.variables : LIST [1:1] OF UNIQUE
generic_variable := [
variable_of_integration ];
WHERE
WR1: has_values_space(integrand);
WR2: space_is_continuum(values_space_of(integrand));
WR3: definite_integral_expr_check(SELF\
multiple_arity_generic_expression.operands,
lower_limit_neg_infinity, upper_limit_pos_infinity);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY definite_integral_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
variable_of_integration : input_selector;
lower_limit_neg_infinity : BOOLEAN;
upper_limit_pos_infinity : BOOLEAN;
DERIVE
integrand : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: space_is_continuum(integrand.range);
WR2: definite_integral_check(integrand.domain, variable_of_integration,
lower_limit_neg_infinity, upper_limit_pos_infinity);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY definitional_product_definition_usage
SUBTYPE OF (product_definition_usage);
UNIQUE
UR1: relating_product_definition, related_product_definition;
END_ENTITY; -- 10303-1055: part_definition_relationship_mim
ENTITY definitional_representation
SUBTYPE OF (representation);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARAMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items);
END_ENTITY; -- 10303-43: representation_schema
ENTITY definitional_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1: acyclic_representation_relationship(SELF, [ SELF\
representation_relationship.rep_2 ],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION')
;
END_ENTITY; -- 10303-43: representation_schema
ENTITY definitional_representation_relationship_with_same_context
SUBTYPE OF (definitional_representation_relationship);
WHERE
WR1: SELF\representation_relationship.rep_1.context_of_items :=: SELF\
representation_relationship.rep_2.context_of_items;
END_ENTITY; -- 10303-43: representation_schema
ENTITY degenerate_pcurve
SUBTYPE OF (point);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
WR1: SIZEOF(reference_to_curve\representation.items) = 1;
WR2: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF(
reference_to_curve\representation.items[1]);
WR3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
select_outer : BOOLEAN;
WHERE
WR1: major_radius < minor_radius;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY dependent_variable_definition
SUBTYPE OF (unary_generic_expression);
name : label;
description : text;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY derived_shape_aspect
SUPERTYPE OF (ONEOF(apex, centre_of_symmetry, geometric_alignment,
geometric_contact, geometric_intersection, parallel_offset,
perpendicular_to, extension, tangent))
SUBTYPE OF (shape_aspect);
INVERSE
deriving_relationships : SET [1:?] OF
shape_aspect_deriving_relationship FOR
relating_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY derived_unit
SUPERTYPE OF (ONEOF(absorbed_dose_unit, acceleration_unit,
radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit
, electric_charge_unit, conductance_unit, electric_potential_unit,
energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit,
illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit,
pressure_unit, resistance_unit, velocity_unit, volume_unit));
elements : SET [1:?] OF derived_unit_element;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: (SIZEOF(elements) > 1) OR (SIZEOF(elements) = 1) AND (elements[1].
exponent <> 1.0);
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: measure_schema
ENTITY derived_unit_element;
unit : named_unit;
exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
ENTITY description_attribute;
attribute_value : text;
described_item : description_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY descriptive_representation_item
SUPERTYPE OF (ONEOF(tagged_text_item, uniform_resource_identifier))
SUBTYPE OF (representation_item);
description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY diameter_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY dielectric_constant_measure_with_unit
SUBTYPE OF (ratio_measure_with_unit);
END_ENTITY; -- 10303-1753: value_with_unit_extension_mim
ENTITY dimension_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\
draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(dce_1)))) = 0);
WR2: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\
draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
IN TYPEOF(dce_1)))) = 0);
WR3: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\
draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE'
IN TYPEOF(dce_1)))) = 0);
END_ENTITY; -- 10303-101: draughting_dimension_schema
ENTITY dimension_callout_component_relationship
SUBTYPE OF (draughting_callout_relationship);
WHERE
WR1: SELF.name IN [ 'prefix', 'suffix' ];
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRUCTURED_DIMENSION_CALLOUT'
IN TYPEOF(SELF.relating_draughting_callout);
WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRUCTURED_DIMENSION_CALLOUT'
]) = 0;
WR4: SELF.related_draughting_callout.contents * SELF.
relating_draughting_callout.contents = SELF.
related_draughting_callout.contents;
WR5: (SELF.name = 'prefix') AND (SIZEOF(QUERY (ato <* QUERY (con <*
SELF.related_draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| NOT (ato.name = 'prefix text'))) = 0);
WR6: (SELF.name = 'suffix') AND (SIZEOF(QUERY (ato <* QUERY (con <*
SELF.related_draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| NOT (ato.name = 'suffix text'))) = 0);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY dimension_callout_relationship
SUBTYPE OF (draughting_callout_relationship);
WHERE
WR1: SELF.name IN [ 'primary', 'secondary' ];
WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIAMETER_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORDINATE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RADIUS_DIMENSION'
]) >= 1;
WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
]) = 0;
WR4: SELF.related_draughting_callout.contents * SELF.
relating_draughting_callout.contents = SELF.
related_draughting_callout.contents;
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY dimension_curve
SUBTYPE OF (annotation_curve_occurrence);
WHERE
WR1: SIZEOF(QUERY (dct <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TERMINATOR_SYMBOL.ANNOTATED_CURVE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_TERMINATOR'
IN TYPEOF(dct)))) <= 2;
WR2: SIZEOF(QUERY (dcdc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT.CONTENTS'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
IN TYPEOF(dcdc)))) >= 1;
WR3: (SIZEOF(QUERY (dct1 <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TERMINATOR_SYMBOL.ANNOTATED_CURVE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_TERMINATOR'
IN TYPEOF(dct1)) AND (dct1\dimension_curve_terminator.role =
dimension_extent_usage.origin))) <= 1) AND (SIZEOF(QUERY (
dct2 <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TERMINATOR_SYMBOL.ANNOTATED_CURVE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_TERMINATOR'
IN TYPEOF(dct2)) AND (dct2\dimension_curve_terminator.role =
dimension_extent_usage.target))) <= 1);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY dimension_curve_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(QUERY (d_c <* SELF\draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE'
IN TYPEOF(d_c)))) <= 2;
WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY dimension_curve_terminator
SUBTYPE OF (terminator_symbol);
role : dimension_extent_usage;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE' IN
TYPEOF(SELF\terminator_symbol.annotated_curve);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY dimension_curve_terminator_to_projection_curve_associativity
SUBTYPE OF (annotation_occurrence_associativity);
SELF\annotation_occurrence_relationship.relating_annotation_occurrence
: dimension_curve_terminator;
SELF\annotation_occurrence_relationship.related_annotation_occurrence :
projection_curve;
END_ENTITY; -- 10303-1362: dimension_and_tolerance_callouts_mim
ENTITY dimension_pair
SUBTYPE OF (draughting_callout_relationship);
WHERE
WR1: SELF.name IN [ 'chained', 'parallel' ];
WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIAMETER_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORDINATE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RADIUS_DIMENSION'
]) = 1;
WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIAMETER_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORDINATE_DIMENSION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RADIUS_DIMENSION'
]) = 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY dimension_related_tolerance_zone_element;
related_dimension : dimensional_location;
related_element : tolerance_zone_definition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY dimension_text_associativity
SUBTYPE OF (text_literal, mapped_item);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DIMENSION_REPRESENTATION'
IN TYPEOF(SELF\mapped_item.mapping_source.
mapped_representation);
WR2: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT'
IN TYPEOF(SELF\mapped_item.mapping_target);
WR3: SIZEOF(QUERY (ato <* QUERY (si <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(si)))| NOT (SIZEOF(QUERY (dc <* USEDIN(ato,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT.CONTENTS'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT'
IN TYPEOF(dc))) * [ SELF\mapped_item.mapping_target ]) = 1))
) = 0;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
ENTITY dimensional_characteristic_representation;
dimension : dimensional_characteristic;
representation : shape_dimension_representation;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_exponents;
length_exponent : REAL;
mass_exponent : REAL;
time_exponent : REAL;
electric_current_exponent : REAL;
thermodynamic_temperature_exponent : REAL;
amount_of_substance_exponent : REAL;
luminous_intensity_exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
ENTITY dimensional_location
SUPERTYPE OF (ONEOF(angular_location, dimensional_location_with_path))
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: SELF\shape_aspect_relationship.relating_shape_aspect :<>: SELF\
shape_aspect_relationship.related_shape_aspect;
WR2: SELF\shape_aspect_relationship.relating_shape_aspect.of_shape :=:
SELF\shape_aspect_relationship.related_shape_aspect.of_shape;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_location_with_datum_feature
SUBTYPE OF (datum_feature, dimensional_location);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY dimensional_location_with_path
SUBTYPE OF (dimensional_location);
path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_size
SUPERTYPE OF (ONEOF(angular_size, dimensional_size_with_path));
applies_to : shape_aspect;
name : label;
DERIVE
id : identifier := get_id_value(SELF);
UNIQUE
UR1: id, applies_to;
WHERE
WR1: applies_to.product_definitional = TRUE;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_size_with_datum_feature
SUBTYPE OF (datum_feature, dimensional_size);
WHERE
WR1: SELF\dimensional_size.applies_to :=: SELF;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY dimensional_size_with_path
SUBTYPE OF (dimensional_size);
path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY directed_action
SUBTYPE OF (executed_action);
directive : action_directive;
END_ENTITY; -- 10303-41: action_schema
ENTITY directed_action_assignment
ABSTRACT SUPERTYPE;
assigned_directed_action : directed_action;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: action_schema
ENTITY directed_dimensional_location
SUBTYPE OF (dimensional_location);
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY directed_tolerance_zone
SUBTYPE OF (tolerance_zone_with_datum);
direction : directed_tolerance_zone_type;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY direction
SUBTYPE OF (geometric_representation_item);
direction_ratios : LIST [2:3] OF REAL;
WHERE
WR1: SIZEOF(QUERY (tmp <* direction_ratios| (tmp <> 0.0))) > 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY direction_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' IN
TYPEOF(it)))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY div_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY document;
id : identifier;
name : label;
description : OPTIONAL text;
kind : document_type;
INVERSE
representation_types : SET [0:?] OF document_representation_type FOR
represented_document;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_file
SUBTYPE OF (document, characterized_object);
WHERE
WR1: SELF\characterized_object.name = '';
WR2: NOT EXISTS(SELF\characterized_object.description);
WR3: SIZEOF(QUERY (drt <* SELF\document.representation_types| (drt.name
IN [ 'digital', 'physical' ]))) = 1;
END_ENTITY; -- 10303-1127: file_identification_mim
ENTITY document_identifier
SUBTYPE OF (group);
UNIQUE
UR1: SELF\group.name, SELF\group.description;
END_ENTITY; -- 10303-1747: specification_document_mim
ENTITY document_identifier_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : document_identifier;
items : SET [1:?] OF document_identifier_assigned_item;
END_ENTITY; -- 10303-1747: specification_document_mim
ENTITY document_product_association
ABSTRACT SUPERTYPE;
name : label;
description : OPTIONAL text;
relating_document : document;
related_product : product_or_formation_or_definition;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_product_equivalence
SUBTYPE OF (document_product_association);
WHERE
WR1: SELF\document_product_association.name = 'equivalence';
WR2: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT' IN
TYPEOF(SELF\document_product_association.related_product)) OR
(SELF\document_product_association.relating_document.kind.
product_data_type = 'configuration controlled document') AND
(SIZEOF(QUERY (prpc <* USEDIN(SELF\
document_product_association.related_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'document'))) = 1);
WR3: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION'
IN TYPEOF(SELF.related_product)) OR (SELF\
document_product_association.relating_document.kind.
product_data_type =
'configuration controlled document version') AND (SIZEOF(
QUERY (prpc <* USEDIN(SELF.related_product\
product_definition_formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'document'))) = 1);
WR4: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF.related_product)) OR (SELF\
document_product_association.relating_document.kind.
product_data_type =
'configuration controlled document definition') AND (SIZEOF(
QUERY (prpc <* USEDIN(SELF\document_product_association.
related_product\product_definition.formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'document'))) = 1);
END_ENTITY; -- 10303-1122: document_assignment_mim
ENTITY document_reference
ABSTRACT SUPERTYPE;
assigned_document : document;
source : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY document_relationship;
name : label;
description : OPTIONAL text;
relating_document : document;
related_document : document;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_representation_type;
name : label;
represented_document : document;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_type;
product_data_type : label;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_usage_constraint_assignment
ABSTRACT SUPERTYPE;
assigned_document_usage : document_usage_constraint;
role : document_usage_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY document_usage_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY dose_equivalent_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DOSE_EQUIVALENT_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY dose_equivalent_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.sievert);
END_ENTITY; -- 10303-41: measure_schema
ENTITY draughting_annotation_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT (
(SIZEOF(sty.styles) = 1) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sty.styles[1]))))) = 0);
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT (
(SIZEOF(sty.styles) = 1) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE'
IN TYPEOF(sty.styles[1]))))) = 0);
WR3: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (bound <* SELF.item\
annotation_fill_area.boundaries| NOT (SIZEOF(QUERY (si <*
USEDIN(bound,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF(si)))) > 0))) = 0);
WR4: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT (
(SIZEOF(sty.styles) = 1) AND (SIZEOF(TYPEOF(sty.styles[1]) *
[ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SYMBOL_STYLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NULL_STYLE' ])
= 1)))) = 0);
WR5: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL'
IN TYPEOF(SELF.item))) OR (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_SYMBOL_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_SUBFIGURE_REPRESENTATION'
] * TYPEOF(SELF.item\mapped_item.mapping_source.
mapped_representation)) = 1);
WR6: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT (
(SIZEOF(sty.styles) = 1) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_STYLE' IN
TYPEOF(sty.styles[1]))))) = 0);
WR7: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) OR (SIZEOF(TYPEOF(SELF.item) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL' ]
) = 1);
WR8: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* SELF.item\
composite_text.collected_text| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL' IN
TYPEOF(tl)))) = 0);
WR9: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL' IN
TYPEOF(SELF.item))) OR (SELF.item\text_literal.alignment IN
[ 'baseline left', 'baseline centre', 'baseline right' ]);
WR10: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* QUERY (text <*
SELF.item\composite_text.collected_text| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL' IN
TYPEOF(text)))| NOT (tl\text_literal.alignment IN [
'baseline left', 'baseline centre', 'baseline right' ]))) = 0
);
WR11: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
IN TYPEOF(SELF.item))) OR check_text_alignment(SELF.item);
WR12: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
IN TYPEOF(SELF.item))) OR check_text_font(SELF.item);
WR13: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* QUERY (text <*
SELF.item\composite_text.collected_text| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL' IN
TYPEOF(text)))| NOT (SIZEOF(TYPEOF(tl) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL_WITH_BLANKING_BOX'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'
]) = 0))) = 0);
WR14: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'
IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (crv <* SELF.item\
text_literal_with_associated_curves.associated_curves| NOT (
SIZEOF(QUERY (si <* USEDIN(crv,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF(si)))) > 0))) = 0);
WR15: NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES'
IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (crv <* SELF.item\
composite_text_with_associated_curves.associated_curves| NOT
(SIZEOF(QUERY (si <* USEDIN(crv,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF(si)))) > 0))) = 0);
WR16: SIZEOF(QUERY (cs <* QUERY (sty <* SELF.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sty.styles[1])))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(cs.styles[1]\curve_style.curve_width)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(cs.styles[1]\curve_style.curve_width\
measure_with_unit.value_component))))) = 0;
WR17: SIZEOF(QUERY (fas <* QUERY (sty <* SELF.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE'
IN TYPEOF(sty.styles[1])))| NOT ((SIZEOF(QUERY (fs <* fas.
styles[1]\fill_area_style.fill_styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE_TILES'
IN TYPEOF(fs)))) <= 1) AND (SIZEOF(QUERY (fst <* QUERY (fs
<* fas.styles[1]\fill_area_style.fill_styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE_TILES'
IN TYPEOF(fs)))| NOT (SIZEOF(fst\fill_area_style_tiles.tiles
) = 1))) = 0)))) = 0;
WR18: SIZEOF(QUERY (fas <* QUERY (sty <* SELF.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE'
IN TYPEOF(sty.styles[1])))| NOT (SIZEOF(QUERY (fsh <* QUERY
(fs <* fas.styles[1]\fill_area_style.fill_styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE_HATCHING'
IN TYPEOF(fs)))| NOT (fsh\fill_area_style_hatching.
point_of_reference_hatch_line :=: fsh\
fill_area_style_hatching.pattern_start))) = 0))) = 0;
WR19: SIZEOF(QUERY (ts <* QUERY (sty <* SELF.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_STYLE' IN
TYPEOF(sty.styles[1])))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
IN TYPEOF(ts.styles[1])))) = 0;
WR20: SIZEOF(QUERY (ts <* QUERY (sty <* SELF.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
IN TYPEOF(sty.styles[1])))| NOT (SIZEOF(ts.styles[1]\
text_style_with_box_characteristics.characteristics) = 4))) =
0;
END_ENTITY; -- 10303-504: aic_draughting_annotation
ENTITY draughting_callout
SUBTYPE OF (geometric_representation_item);
contents : SET [1:?] OF draughting_callout_element;
WHERE
WR1: (((SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(l_1)))) = 0) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) AND (SIZEOF(QUERY (l_1 <* SELF\
draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
IN TYPEOF(l_1)))) = 0)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) AND (SIZEOF(QUERY (l_1 <* SELF\
draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE'
IN TYPEOF(l_1)))) = 0)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
IN TYPEOF(SELF));
WR2: SIZEOF(QUERY (apo <* contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_PLACEHOLDER_OCCURRENCE'
IN TYPEOF(apo)))) < 2;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY draughting_callout_relationship;
name : label;
description : text;
relating_draughting_callout : draughting_callout;
related_draughting_callout : draughting_callout;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY draughting_elements
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(QUERY (l_c <* QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(con)))| NOT (SIZEOF(QUERY (ldc <* USEDIN(l_c,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT.CONTENTS'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
IN TYPEOF(ldc)))) <= 1))) = 0;
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
IN TYPEOF(con)))) <= 2);
WR3: SIZEOF(QUERY (rc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_RELATIONSHIP'
IN TYPEOF(rc)) AND (rc.name = 'primary'))) <= 1;
WR4: SIZEOF(QUERY (rc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_RELATIONSHIP'
IN TYPEOF(rc)) AND (rc.name = 'secondary'))) <= 1;
WR5: SIZEOF(QUERY (sec <* QUERY (rc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_RELATIONSHIP'
IN TYPEOF(rc)) AND (rc.name = 'secondary'))| NOT (SIZEOF(
QUERY (prim <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_RELATIONSHIP'
IN TYPEOF(prim)) AND (prim.name = 'primary'))) = 1))) = 0;
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY draughting_model
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF draughting_model_item_select;
UNIQUE
UR1: SELF\representation.name;
WHERE
WR1: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_MODEL'
] * TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) = 1))) = 0;
WR2: SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(si\styled_item.item)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.
mapped_representation)) AND (SIZEOF(QUERY (sty <* smi\
styled_item.styles| NOT (SIZEOF(QUERY (psa <* sty.styles| NOT
('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE'
IN TYPEOF(psa)))) = 1))) = 1)))) = 0;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY draughting_model_item_association
SUBTYPE OF (item_identified_representation_usage);
SELF\item_identified_representation_usage.definition :
draughting_model_item_definition;
SELF\item_identified_representation_usage.used_representation :
annotation_representation_select;
SELF\item_identified_representation_usage.identified_item :
draughting_model_item_association_select;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY draughting_model_item_association_with_placeholder
SUBTYPE OF (draughting_model_item_association);
SELF\draughting_model_item_association.used_representation :
draughting_model;
SELF\item_identified_representation_usage.identified_item :
draughting_callout;
annotation_placeholder : annotation_placeholder_occurrence;
END_ENTITY; -- 10303-113: mechanical_design_schema
ENTITY draughting_pre_defined_colour
SUBTYPE OF (pre_defined_colour);
WHERE
WR1: SELF\pre_defined_item.name IN [ 'red', 'green', 'blue', 'yellow',
'magenta', 'cyan', 'black', 'white' ];
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY draughting_pre_defined_curve_font
SUBTYPE OF (pre_defined_curve_font);
WHERE
WR1: SELF\pre_defined_item.name IN [ 'continuous', 'chain',
'chain double dash', 'dashed', 'dotted' ];
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY draughting_pre_defined_text_font
SUBTYPE OF (pre_defined_text_font);
WHERE
WR1: SELF\pre_defined_item.name[ 1 : 8 ] = 'ISO 3098';
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY draughting_subfigure_representation
SUBTYPE OF (symbol_representation);
SELF\representation.items : SET [1:?] OF
draughting_subfigure_representation_item;
WHERE
WR1: SIZEOF(QUERY (item <* SELF\representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT'
] * TYPEOF(item)) = 1))) >= 1;
WR2: SIZEOF(QUERY (srm <* QUERY (rm <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SYMBOL_REPRESENTATION_MAP'
IN TYPEOF(rm)))| NOT (SIZEOF(QUERY (a_s <* QUERY (mi <* srm.
map_usage| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL'
IN TYPEOF(mi)))| NOT (SIZEOF(QUERY (aso <* USEDIN(a_s,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SUBFIGURE_OCCURRENCE'
IN TYPEOF(aso)))) = 0))) = 0))) > 0;
WR3: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
END_ENTITY; -- 10303-504: aic_draughting_annotation
ENTITY draughting_symbol_representation
SUBTYPE OF (symbol_representation);
SELF\representation.items : SET [1:?] OF
draughting_symbol_representation_item;
UNIQUE
UR1: SELF\representation.name;
WHERE
WR1: SIZEOF(QUERY (item <* SELF\representation.items| (SIZEOF(TYPEOF(
item) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
]) = 1))) >= 1;
WR2: SIZEOF(QUERY (item <* SELF\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SUBFIGURE_OCCURRENCE'
IN TYPEOF(item)))) = 0;
WR3: SIZEOF(QUERY (rm <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SYMBOL_REPRESENTATION_MAP'
IN TYPEOF(rm)))) = 0;
WR4: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
END_ENTITY; -- 10303-504: aic_draughting_annotation
ENTITY draughting_text_literal_with_delineation
SUBTYPE OF (text_literal_with_delineation);
WHERE
WR1: SELF.delineation IN [ 'underline', 'overline' ];
END_ENTITY; -- 10303-504: aic_draughting_annotation
ENTITY drilling_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: SELF.description IN [ 'drilling', 'counter sinking',
'center drilling', 'multistep drilling' ];
WR2: NOT (SELF.description = 'multistep drilling') OR (((((((
verify_required_action_property(SELF, 'retract distance') AND
verify_length_measure_action_property(SELF,
'retract distance')) AND verify_required_action_property(SELF
, 'first depth')) AND verify_length_measure_action_property(
SELF, 'first depth')) AND verify_required_action_property(
SELF, 'depth of step')) AND
verify_length_measure_action_property(SELF, 'depth of step'))
AND verify_optional_action_property(SELF, 'dwell time step')
) AND verify_rep_type_for_action_property(SELF,
'dwell time step', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'dwell time step', [ 'dwell time' ]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY drilling_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: verify_optional_action_property(SELF, 'overcut length') AND
verify_length_measure_action_property(SELF, 'overcut length')
;
WR2: verify_optional_action_property(SELF, 'cutting depth') AND
verify_length_measure_action_property(SELF, 'cutting depth');
WR3: verify_optional_action_property(SELF, 'previous diameter') AND
verify_length_measure_action_property(SELF,
'previous diameter');
WR4: (verify_optional_action_property(SELF, 'dwell time bottom') AND
verify_rep_type_for_action_property(SELF, 'dwell time bottom'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'dwell time bottom', [ 'dwell time' ]);
WR5: (verify_optional_action_property(SELF, 'feedrate on retract') AND
verify_rep_type_for_action_property(SELF,
'feedrate on retract', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'feedrate on retract', [ 'relative speed' ]);
WR6: verify_optional_relating_amr_with_name(SELF, 'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRILLING_TYPE_STRATEGY'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY drilling_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: (verify_optional_action_property(SELF, 'reduced cut at start') AND
verify_rep_type_for_action_property(SELF,
'reduced cut at start', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'reduced cut at start', [ 'relative speed' ]);
WR2: (verify_optional_action_property(SELF, 'reduced feedrate at start'
) AND verify_rep_type_for_action_property(SELF,
'reduced feedrate at start', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'reduced feedrate at start', [ 'relative speed' ]);
WR3: verify_optional_action_property(SELF, 'depth of start') AND
verify_length_measure_action_property(SELF, 'depth of start')
;
WR4: (verify_optional_action_property(SELF, 'reduced cut at end') AND
verify_rep_type_for_action_property(SELF,
'reduced cut at end', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'reduced cut at end', [ 'relative speed' ]);
WR5: (verify_optional_action_property(SELF, 'reduced feedrate at end')
AND verify_rep_type_for_action_property(SELF,
'reduced feedrate at end', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'reduced feedrate at end', [ 'relative speed' ]);
WR6: verify_optional_action_property(SELF, 'depth of end') AND
verify_length_measure_action_property(SELF, 'depth of end');
WR7: verify_required_action_property(SELF, 'depth of start') OR (0 =
SIZEOF(get_action_property(SELF, 'reduced cut at start')))
AND (0 = SIZEOF(get_action_property(SELF,
'reduced feedrate at start')));
WR8: verify_required_action_property(SELF, 'depth of end') OR (0 =
SIZEOF(get_action_property(SELF, 'reduced cut at end'))) AND
(0 = SIZEOF(get_action_property(SELF,
'reduced feedrate at end')));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY dupin_cyclide_surface
SUBTYPE OF (elementary_surface);
generalised_major_radius : positive_length_measure;
generalised_minor_radius : positive_length_measure;
skewness : length_measure;
WHERE
WR1: skewness >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY eccentric_cone
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
height : positive_length_measure;
x_offset : length_measure;
y_offset : length_measure;
ratio : REAL;
WHERE
WR1: ratio >= 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY eccentric_conical_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
height : positive_length_measure;
x_offset : length_measure;
y_offset : length_measure;
ratio : REAL;
WHERE
WR1: ratio >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY edge
SUPERTYPE OF (ONEOF(edge_curve, oriented_edge, subedge))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
ebwm_boundary : SET [1:?] OF connected_edge_set;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY edge_based_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) >= 1;
WR3: SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (
edges <* eb.ces_edges| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(edges)))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (
pline_edges <* QUERY (edges <* eb.ces_edges| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(edges\edge_curve.edge_geometry)))| NOT (SIZEOF(
pline_edges\edge_curve.edge_geometry\polyline.points) > 2)))
= 0))) = 0))) = 0;
WR5: SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (
edges <* eb.ces_edges| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(edges.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(edges.edge_end))))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (
edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\
edge_curve.edge_geometry))) = 0))) = 0))) = 0;
WR7: SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (
edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(
edges.edge_start\vertex_point.vertex_geometry) AND
valid_wireframe_vertex_point(edges.edge_end\vertex_point.
vertex_geometry)))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR9: SELF.context_of_items\geometric_representation_context.
coordinate_space_dimension = 3;
END_ENTITY; -- 10303-501: aic_edge_based_wireframe
ENTITY edge_curve
SUBTYPE OF (edge, geometric_representation_item);
edge_geometry : curve;
same_sense : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_loop
SUBTYPE OF (loop, path);
DERIVE
ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
WR1: SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].
edge_end;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_round
SUBTYPE OF (transition_feature);
WHERE
WR1: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR2: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 3))) = 0))) = 0);
WR3: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR4: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) <= 1))
) = 0))) = 0);
WR5: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) <= 1)
)) = 0))) = 0);
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'edge round face'))) <= 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'first face shape'))) <= 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'second face shape'))) <= 1))) = 0
;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY effectivity
SUPERTYPE OF (ONEOF(serial_numbered_effectivity, dated_effectivity,
lot_effectivity, time_interval_based_effectivity));
id : identifier;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY effectivity_assignment
ABSTRACT SUPERTYPE;
assigned_effectivity : effectivity;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY effectivity_context_assignment
ABSTRACT SUPERTYPE;
assigned_effectivity_assignment : effectivity_assignment;
role : effectivity_context_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY effectivity_context_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY effectivity_relationship;
name : label;
description : OPTIONAL text;
related_effectivity : effectivity;
relating_effectivity : effectivity;
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY electric_charge_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_CHARGE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY electric_charge_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.coulomb);
END_ENTITY; -- 10303-41: measure_schema
ENTITY electric_current_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_CURRENT_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY electric_current_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 1.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY electric_potential_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_POTENTIAL_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY electric_potential_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.volt);
END_ENTITY; -- 10303-41: measure_schema
ENTITY elementary_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh.cfs_faces| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE' IN
TYPEOF(fcs)))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'
IN TYPEOF(fcs\face_surface.face_geometry)))) = 0))) = 0))) =
0;
WR5: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) = 0))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' ] *
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1))) = 0)
)) = 0))) = 0))) = 0))) = 0;
WR7: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_end))))) = 0))) = 0))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT (
SIZEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry
\polyline.points) >= 3))) = 0))) = 0))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (msb <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
WR10: SIZEOF(QUERY (brv <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BREP_WITH_VOIDS'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\
brep_with_voids.voids| csh\oriented_closed_shell.orientation)
) = 0))) = 0;
WR11: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_BREP_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR12: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex))
AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex
\vertex_point.vertex_geometry))))) = 0))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-513: aic_elementary_brep
ENTITY elementary_function
SUBTYPE OF (maths_function, generic_literal);
func_id : elementary_function_enumerators;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY elementary_space
SUBTYPE OF (maths_space, generic_literal);
space_id : elementary_space_enumerators;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY elementary_surface
SUPERTYPE OF (ONEOF(plane, cylindrical_surface, conical_surface,
spherical_surface, toroidal_surface))
SUBTYPE OF (surface);
position : axis2_placement_3d;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY ellipse
SUBTYPE OF (conic);
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY ellipsoid
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
semi_axis_3 : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY ellipsoid_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
semi_axis_3 : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY energy_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ENERGY_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY energy_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.joule);
END_ENTITY; -- 10303-41: measure_schema
ENTITY environment;
syntactic_representation : generic_variable;
semantics : variable_semantics;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY equals_expression
SUBTYPE OF (binary_boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
equivalent_point : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY event_occurrence;
id : identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY event_occurrence_assignment
ABSTRACT SUPERTYPE;
assigned_event_occurrence : event_occurrence;
role : event_occurrence_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY event_occurrence_relationship;
name : label;
description : OPTIONAL text;
relating_event : event_occurrence;
related_event : event_occurrence;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY event_occurrence_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY exclusive_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category);
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY; -- 10303-41: action_schema
ENTITY exp_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY expanded_uncertainty
SUBTYPE OF (standard_uncertainty);
coverage_factor : REAL;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY explicit_composite_hole
SUBTYPE OF (composite_hole);
placement : shape_representation;
INVERSE
explicit_shape : SET [0:?] OF item_identified_representation_usage FOR
definition;
WHERE
WR1: SIZEOF(QUERY (ri <* placement\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(ri)))) = 1;
WR2: (SIZEOF(explicit_shape) = 0) OR (SIZEOF(QUERY (es <*
explicit_shape| NOT (placement = es\
item_identified_representation_usage.used_representation))) =
0);
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY explicit_round_hole
SUBTYPE OF (round_hole);
depth : positive_length_measure_with_unit;
depth_tolerance : OPTIONAL tolerance_value;
diameter : positive_length_measure_with_unit;
diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
placement : shape_representation;
WHERE
WR1: SIZEOF(QUERY (ri <* placement\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(ri)))) = 1;
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(depth_tolerance\tolerance_value.lower_bound);
WR3:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(depth_tolerance\tolerance_value.upper_bound);
WR4: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(diameter_tolerance\tolerance_value.lower_bound));
WR5: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_VALUE'
IN TYPEOF(diameter_tolerance)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(diameter_tolerance\tolerance_value.upper_bound));
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY explicit_table_function
ABSTRACT SUPERTYPE OF (ONEOF(listed_real_data, listed_integer_data,
listed_logical_data, listed_string_data, listed_complex_number_data,
listed_data, externally_listed_data, linearized_table_function,
basic_sparse_matrix))
SUBTYPE OF (maths_function);
index_base : zero_or_one;
shape : LIST [1:?] OF positive_integer;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY expression
ABSTRACT SUPERTYPE OF (ONEOF(numeric_expression, boolean_expression,
string_expression))
SUBTYPE OF (generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY expression_conversion_based_unit
SUBTYPE OF (context_dependent_unit, variable_semantics);
INVERSE
associated_variable_environment : environment FOR semantics;
END_ENTITY; -- 10303-1753: value_with_unit_extension_mim
ENTITY expression_denoted_function
SUBTYPE OF (maths_function, unary_generic_expression);
DERIVE
expr : generic_expression := SELF\unary_generic_expression.operand;
WHERE
WR1: schema_prefix + 'FUNCTION_SPACE' IN TYPEOF(values_space_of(expr));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY expression_item_representation_item
SUBTYPE OF (representation_item);
item : expression_element;
END_ENTITY; -- 10303-61: systems_engineering_representation_schema
ENTITY expression_representation_item
SUBTYPE OF (representation_item, generic_expression);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY extended_tuple_space
SUBTYPE OF (maths_space, generic_literal);
base : tuple_space;
extender : maths_space;
WHERE
WR1: expression_is_constant(base) AND expression_is_constant(extender);
WR2: no_cyclic_space_reference(SELF, []);
WR3: extender <> the_empty_space;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY extended_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: EXISTS(SELF.description);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY extension
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY external_class_library
SUBTYPE OF (external_source);
END_ENTITY; -- 10303-1275: external_class_mim
ENTITY external_identification_assignment
ABSTRACT SUPERTYPE
SUBTYPE OF (identification_assignment);
source : external_source;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY external_identification_assignment_relationship;
id : OPTIONAL identifier;
description : OPTIONAL text;
relating : external_identification_assignment;
related : external_identification_assignment;
relation_type : STRING;
WHERE
WR1: acyclic_external_identification_assignment_relationship(SELF, [
related ],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP'
);
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY external_source;
source_id : source_item;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY external_source_relationship;
name : label;
description : OPTIONAL text;
relating_source : external_source;
related_source : external_source;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY externally_defined_character_glyph
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY externally_defined_class
SUBTYPE OF (class, externally_defined_item);
END_ENTITY; -- 10303-1275: external_class_mim
ENTITY externally_defined_colour
SUBTYPE OF (colour_specification, externally_defined_item);
END_ENTITY; -- 10303-1002: colour_mim
ENTITY externally_defined_curve_font
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY externally_defined_dimension_definition
SUBTYPE OF (dimensional_size, externally_defined_item);
WHERE
WR1: (SELF\externally_defined_item.item_id = 'external size dimension')
AND (SELF\externally_defined_item.source.source_id =
'external size dimension specification');
WR2: 1 >= SIZEOF(QUERY (adr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_DOCUMENT_REFERENCE.ITEMS'
)| (adr.assigned_document.description =
'external size dimension specification')));
END_ENTITY; -- 10303-1050: dimension_tolerance_mim
ENTITY externally_defined_feature_definition
SUBTYPE OF (feature_definition, externally_defined_item);
WHERE
WR1: ((((SELF\characterized_object.description = 'thread') AND (SELF\
externally_defined_item.item_id = 'external thread')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification') OR ((SELF\
characterized_object.description = 'gear') AND (SELF\
externally_defined_item.item_id = 'external gear')) AND (SELF
\externally_defined_item.source.source_id =
'external feature specification')) OR ((SELF\
characterized_object.description = 'marking') AND (SELF\
externally_defined_item.item_id = 'external marking')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification')) OR ((SELF\
characterized_object.description = 'knurl') AND (SELF\
externally_defined_item.item_id = 'external knurl')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification');
WR2: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((5 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 10)))) = 1))) = 1);
WR3: NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 2))) = 1))) = 1);
WR4: NOT (SELF\characterized_object.description = 'knurl') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 1))) = 1))) = 1);
WR5: NOT (SELF\characterized_object.description IN [ 'knurl', 'thread'
]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'partial area occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied area usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_AREA' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR6: NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))
) = 0);
WR7: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'removal direction')) AND ((it
.description = 'internal') OR (it.description = 'external')))
) = 1))) = 0))) = 0);
WR8: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0)))
= 0);
WR9: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'hand'))) = 1))) = 0))) = 0);
WR10: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) =
0);
WR11: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0);
WR12: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) <= 1
))) = 0))) = 0);
WR13: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'number of threads'))) =
1))) = 0))) = 0);
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))
) = 0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'nominal size'))) <= 1))
) = 0))) = 0;
WR16: NOT (SELF\characterized_object.description IN [ 'knurl', 'gear',
'thread' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR17: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) >= 11))) = 1))) = 1);
WR18: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth'))) = 1
))) = 0))) = 0);
WR19: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name =
'reference pressure angle'))) = 1))) = 0))) = 0);
WR20: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor'))) =
1))) = 0))) = 0);
WR21: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth')))
= 1))) = 0))) = 0);
WR22: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'face width'))) = 1))) =
0))) = 0);
WR23: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter'))) = 1)))
= 0))) = 0);
WR24: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'module or diametral pitch'))
AND ((it.description = 'module') OR (it.description =
'diametral pitch')))) = 1))) = 0))) = 0);
WR25: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute'))) =
1))) = 0))) = 0);
WR26: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'internal or external gear'))
AND ((it.description = 'internal') OR (it.description =
'external')))) = 1))) = 0))) = 0);
WR27: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius')))
<= 1))) = 0))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY externally_defined_general_property
SUBTYPE OF (general_property, externally_defined_item);
END_ENTITY; -- 10303-1129: external_properties_mim
ENTITY externally_defined_hatch_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY externally_defined_item;
item_id : source_item;
source : external_source;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY externally_defined_item_relationship;
name : label;
description : OPTIONAL text;
relating_item : externally_defined_item;
related_item : externally_defined_item;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY externally_defined_item_with_multiple_references
SUBTYPE OF (externally_defined_item);
references : LIST [1:?] OF UNIQUE source_item;
UNIQUE
UR1: references;
WHERE
WR1: NOT (SELF\externally_defined_item.item_id IN references);
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY externally_defined_marker
SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY externally_defined_representation
SUBTYPE OF (representation, externally_defined_item);
SELF\representation.items : SET [1:?] OF
externally_defined_representation_item;
END_ENTITY; -- 10303-1779: external_representation_item_mim
ENTITY externally_defined_representation_item
SUBTYPE OF (representation_item, externally_defined_item);
END_ENTITY; -- 10303-1779: external_representation_item_mim
ENTITY externally_defined_representation_with_parameters
SUBTYPE OF (representation);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS'
)) = 1;
WR2: SIZEOF(QUERY (adr <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(adr)))) <= 1;
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY externally_defined_string
SUBTYPE OF (externally_defined_representation_item);
END_ENTITY; -- 10303-1779: external_representation_item_mim
ENTITY externally_defined_style
SUBTYPE OF (externally_defined_item, founded_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY externally_defined_symbol
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY externally_defined_terminator_symbol
SUBTYPE OF (externally_defined_symbol);
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY externally_defined_text_font
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY externally_defined_tile
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY externally_defined_tile_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY externally_listed_data
SUBTYPE OF (explicit_table_function, generic_literal,
externally_defined_item);
value_range : maths_space;
WHERE
WR1: expression_is_constant(value_range);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY extruded_area_solid
SUBTYPE OF (swept_area_solid);
extruded_direction : direction;
depth : positive_length_measure;
WHERE
WR1: dot_product(SELF\swept_area_solid.swept_area.basis_surface\
elementary_surface.position.p[3], extruded_direction) <> 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY extruded_face_solid
SUBTYPE OF (swept_face_solid);
extruded_direction : direction;
depth : positive_length_measure;
WHERE
WR1: dot_product(SELF\swept_face_solid.swept_face.face_geometry\
elementary_surface.position.p[3], extruded_direction) <> 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY face
SUPERTYPE OF (ONEOF(face_surface, subface, oriented_face))
SUBTYPE OF (topological_representation_item);
bounds : SET [1:?] OF face_bound;
WHERE
WR1: NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)));
WR2: SIZEOF(QUERY (temp <* bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_OUTER_BOUND'
IN TYPEOF(temp)))) <= 1;
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_based_surface_model
SUBTYPE OF (geometric_representation_item);
fbsm_faces : SET [1:?] OF connected_face_set;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY face_bound
SUBTYPE OF (topological_representation_item);
bound : loop;
orientation : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_outer_bound
SUBTYPE OF (face_bound);
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) >= 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE' IN
TYPEOF(it)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_FACE'
IN TYPEOF(it))))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY face_shape_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(SELF.rep_1);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(SELF.rep_2);
END_ENTITY; -- 10303-1814: machining_features_mim
ENTITY face_surface
SUBTYPE OF (face, geometric_representation_item);
face_geometry : surface;
same_sense : BOOLEAN;
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_SURFACE'
IN TYPEOF(face_geometry));
END_ENTITY; -- 10303-42: topology_schema
ENTITY faceted_brep
SUBTYPE OF (manifold_solid_brep);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY faceted_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ] *
TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (fbrep <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(fbrep)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE' IN
TYPEOF(fcs)) AND ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF
(fcs\face_surface.face_geometry)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
IN TYPEOF(fcs\face_surface.face_geometry\elementary_surface.
position.location)))))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (fbrep <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(fbrep)|
NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces|
NOT (SIZEOF(QUERY (bnds <* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_OUTER_BOUND'
IN TYPEOF(bnds)))) = 1))) = 0))) = 0))) = 0;
WR5: SIZEOF(QUERY (msb <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SOLID_BREP'
IN TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
WR6: SIZEOF(QUERY (brv <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BREP_WITH_VOIDS'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\
brep_with_voids.voids| csh\oriented_closed_shell.orientation)
) = 0))) = 0;
WR7: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACETED_BREP_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
END_ENTITY; -- 10303-512: aic_faceted_brep
ENTITY faceted_primitive
SUPERTYPE OF (ONEOF(tetrahedron, convex_hexahedron))
SUBTYPE OF (geometric_representation_item);
points : LIST [4:?] OF UNIQUE cartesian_point;
WHERE
WR1: points[1].dim = 3;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY facing_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'allowance') AND
verify_length_measure_action_property(SELF, 'allowance');
WR3: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY feature_component_definition
SUBTYPE OF (characterized_object);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY feature_component_relationship
SUPERTYPE OF (ONEOF(pattern_omit_membership, pattern_offset_membership))
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: ((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPLICATE_FEATURE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TRANSITION_FEATURE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MODIFIED_PATTERN'
] * TYPEOF(SELF.relating_shape_aspect)) = 1) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_DEFINITION'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)))
OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition));
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY feature_definition
SUPERTYPE OF (ONEOF(boss, compound_feature,
externally_defined_feature_definition, flat_face, gear, marking,
outer_round, outside_profile, pocket, protrusion, removal_volume,
replicate_feature, revolved_profile, rib_top, round_hole, rounded_end
, spherical_cap, step, slot, thread, turned_knurl))
SUBTYPE OF (characterized_object);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY feature_definition_with_connection_area
SUBTYPE OF (shape_feature_definition);
END_ENTITY; -- 10303-1671: feature_and_connection_zone_mim
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; -- 10303-1051: geometric_tolerance_mim
ENTITY feature_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(srwp_i)))) > 0))) > 0))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'base feature placement'))) > 1)))
= 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY fill_area_style
SUBTYPE OF (founded_item);
name : label;
fill_styles : SET [1:?] OF fill_style_select;
WHERE
WR1: SIZEOF(QUERY (fill_style <* fill_styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE_COLOUR'
IN TYPEOF(fill_style)))) <= 1;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_colour;
name : label;
fill_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_hatching
SUBTYPE OF (geometric_representation_item);
hatch_line_appearance : curve_style;
start_of_next_hatch_line : one_direction_repeat_factor;
point_of_reference_hatch_line : cartesian_point;
pattern_start : cartesian_point;
hatch_line_angle : plane_angle_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_tile_coloured_region
SUBTYPE OF (geometric_representation_item);
closed_curve : curve_or_annotation_curve_occurrence;
region_colour : colour;
WHERE
WR1: ((((NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN
TYPEOF(closed_curve)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCLE' IN
TYPEOF(closed_curve))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELLIPSE' IN
TYPEOF(closed_curve))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
IN TYPEOF(closed_curve)) AND (closed_curve\b_spline_curve.
closed_curve = TRUE)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE'
IN TYPEOF(closed_curve)) AND (closed_curve\composite_curve.
closed_curve = TRUE)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(closed_curve)) AND (closed_curve\polyline.points[
LOINDEX(closed_curve\polyline.points)] = closed_curve\
polyline.points[HIINDEX(closed_curve\polyline.points)]);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_tile_curve_with_style
SUBTYPE OF (geometric_representation_item);
styled_curve : annotation_curve_occurrence;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_tile_symbol_with_style
SUBTYPE OF (geometric_representation_item);
symbol : annotation_symbol_occurrence;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fill_area_style_tiles
SUBTYPE OF (geometric_representation_item);
tiling_pattern : two_direction_repeat_factor;
tiles : SET [1:?] OF fill_area_style_tile_shape_select;
tiling_scale : positive_ratio_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY fillet
SUBTYPE OF (transition_feature);
WHERE
WR1: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR2: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 3))) = 0))) = 0);
WR3: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR4: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) <= 1))
) = 0))) = 0);
WR5: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) <= 1)
)) = 0))) = 0);
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'fillet face'))) = 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'first face shape'))) = 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'second face shape'))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY final_solution
SUBTYPE OF (product_definition_formation);
status : STRING;
INVERSE
specification : SET [1:?] OF product_definition FOR formation;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY finite_function
SUBTYPE OF (maths_function, generic_literal);
pairs : SET [1:?] OF LIST [2:2] OF maths_value;
WHERE
WR1: VALUE_UNIQUE(list_selected_components(pairs, 1));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY finite_integer_interval
SUBTYPE OF (maths_space, generic_literal);
min : INTEGER;
max : INTEGER;
DERIVE
size : positive_integer := max - min + 1;
WHERE
WR1: min <= max;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY finite_real_interval
SUBTYPE OF (maths_space, generic_literal);
min : REAL;
min_closure : open_closed;
max : REAL;
max_closure : open_closed;
WHERE
WR1: min < max;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY finite_space
SUBTYPE OF (maths_space, generic_literal);
members : SET OF maths_value;
WHERE
WR1: VALUE_UNIQUE(members);
WR2: SIZEOF(QUERY (expr <* QUERY (member <* members| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERIC_EXPRESSION'
IN TYPEOF(member)))| NOT expression_is_constant(expr))) = 0;
WR3: no_cyclic_space_reference(SELF, []);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY fixed_reference_swept_surface
SUBTYPE OF (swept_surface);
directrix : curve;
fixed_reference : direction;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY flat_face
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'removal direction'))) = 1))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'course of travel occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear')) AND (sdr.name
= 'course of travel'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'removal boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name =
'removal boundary'))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'enclosed boundary occurrence') AND
(SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.
relating_shape_aspect.description = 'boundary'))) = 1))) <= 1
))) = 0;
WR5: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
WR6: SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF
(QUERY (sar <* csa.component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROTRUSION' ] *
TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'removal depth'))) <= 1)
)) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY flatness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY force_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FORCE_UNIT' IN TYPEOF
(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY force_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.newton);
END_ENTITY; -- 10303-41: measure_schema
ENTITY format_function
SUBTYPE OF (string_expression, binary_generic_expression);
DERIVE
value_to_format : generic_expression := SELF\binary_generic_expression.
operands[1];
format_string : generic_expression := SELF\binary_generic_expression.
operands[2];
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(value_to_format)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(format_string));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY founded_item
SUPERTYPE OF (ONEOF(character_glyph_style_outline,
character_glyph_style_stroke, curve_style, curve_style_font,
curve_style_font_and_scaling, curve_style_font_pattern,
externally_defined_style, fill_area_style, point_style,
presentation_style_assignment, surface_side_style,
surface_style_boundary, surface_style_control_grid,
surface_style_fill_area, surface_style_parameter_line,
surface_style_segmentation_curve, surface_style_silhouette,
surface_style_usage, symbol_style, text_style));
DERIVE
users : SET [0:?] OF founded_item_select := using_items(SELF, []);
WHERE
WR1: SIZEOF(users) > 0;
WR2: NOT (SELF IN users);
END_ENTITY; -- 10303-43: representation_schema
ENTITY free_variable_semantics
SUBTYPE OF (variable_semantics);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY freeform_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: verify_optional_relating_amr_with_name(SELF, 'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREEFORM_MILLING_STRATEGY'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY freeform_milling_strategy
SUBTYPE OF (milling_type_strategy);
WHERE
WR1: NOT (SELF.description IN [ 'leading line', 'plane cutter contact',
'plane cutter location', 'uv' ]) OR ((((((
verify_required_action_property(SELF, 'pathmode') AND
verify_enumeration_action_property(SELF, 'pathmode', [
'forward', 'zigzag' ])) AND verify_required_action_property(
SELF, 'cutmode')) AND verify_enumeration_action_property(SELF
, 'cutmode', [ 'climb', 'conventional' ])) AND
verify_required_action_property(SELF, 'milling tolerances'))
AND verify_rep_type_for_action_property(SELF,
'milling tolerances', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREEFORM_MILLING_TOLERANCE_REPRESENTATION'
])) AND verify_optional_action_property(SELF,
'stepover length')) AND verify_length_measure_action_property
(SELF, 'stepover length');
WR2: NOT (SELF.description = 'leading line') OR
verify_required_action_property(SELF, 'leading line') AND
verify_rep_item_for_action_property(SELF, 'leading line', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
);
WR3: NOT (SELF.description IN [ 'plane cutter contact',
'plane cutter location' ]) OR verify_required_action_property
(SELF, 'plane normal') AND
verify_rep_item_for_action_property(SELF, 'plane normal', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]);
WR4: NOT (SELF.description = 'uv') OR ((verify_required_action_property
(SELF, 'forward direction') AND
verify_rep_item_for_action_property(SELF, 'forward direction'
, [ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]
)) AND verify_required_action_property(SELF,
'sideward direction')) AND
verify_rep_item_for_action_property(SELF,
'sideward direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY freeform_milling_tolerance_representation
SUBTYPE OF (representation);
WHERE
WR1: verify_required_rep_item(SELF, 'chordal tolerance') AND
verify_length_measure_rep_item(SELF, 'chordal tolerance');
WR2: verify_required_rep_item(SELF, 'scallop height') AND
verify_length_measure_rep_item(SELF, 'scallop height');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY frequency_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREQUENCY_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY frequency_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.hertz);
END_ENTITY; -- 10303-41: measure_schema
ENTITY fully_constrained_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY function_application
SUBTYPE OF (multiple_arity_generic_expression);
func : maths_function_select;
arguments : LIST [1:?] OF maths_expression;
DERIVE
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
generic_expression := [ convert_to_maths_function(func) ]
+ convert_to_operands(arguments);
WHERE
WR1: function_applicability(func, arguments);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY function_space
SUBTYPE OF (maths_space, generic_literal);
domain_constraint : space_constraint_type;
domain_argument : maths_space;
range_constraint : space_constraint_type;
range_argument : maths_space;
WHERE
WR1: expression_is_constant(domain_argument) AND expression_is_constant
(range_argument);
WR2: (domain_argument <> the_empty_space) AND (range_argument <>
the_empty_space);
WR3: (domain_constraint <> sc_member) OR NOT member_of(the_empty_space,
domain_argument);
WR4: (range_constraint <> sc_member) OR NOT member_of(the_empty_space,
range_argument);
WR5: NOT (any_space_satisfies(domain_constraint, domain_argument) AND
any_space_satisfies(range_constraint, range_argument));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY functional_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY; -- 10303-1216: functional_breakdown_mim
ENTITY functional_element_usage
SUBTYPE OF (breakdown_element_usage);
END_ENTITY; -- 10303-1216: functional_breakdown_mim
ENTITY functionally_defined_transformation;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-43: representation_schema
ENTITY gear
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) <= 13))) = 1))) = 1;
WR2: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth'))) = 1
))) = 0))) = 0);
WR3: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name =
'reference pressure angle'))) = 1))) = 0))) = 0);
WR4: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor'))) =
1))) = 0))) = 0);
WR5: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth')))
= 1))) = 0))) = 0);
WR6: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'face width'))) = 1))) =
0))) = 0);
WR7: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter'))) = 1)))
= 0))) = 0);
WR8: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'module or diametral pitch'))
AND ((it.description = 'module') OR (it.description =
'diametral pitch')))) = 1))) = 0))) = 0);
WR9: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'internal or external gear'))
AND ((it.description = 'internal') OR (it.description =
'external')))) = 1))) = 0))) = 0);
WR10: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute'))) =
1))) = 0))) = 0);
WR11: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius')))
<= 1))) = 0))) = 0);
WR12: NOT (SELF\characterized_object.description IN [ 'helix gear',
'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'reference helix angle')
)) = 1))) = 0))) = 0);
WR13: NOT (SELF\characterized_object.description IN [ 'helix gear',
'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'gear tooth')) AND ((it.
description = 'left hand tooth') OR (it.description =
'right hand tooth')))) = 1))) = 0))) = 0);
WR14: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) =
0))) = 0);
WR15: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'root angle'))) = 1))) =
0))) = 0);
WR16: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY gear_pair
SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
radius_first_link : length_measure;
radius_second_link : length_measure;
bevel : plane_angle_measure;
helical_angle : plane_angle_measure;
gear_ratio : REAL;
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY gear_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : gear_pair;
actual_rotation_1 : plane_angle_measure;
DERIVE
actual_rotation_2 : plane_angle_measure := -actual_rotation_1 * SELF\
pair_value.applies_to_pair\gear_pair.gear_ratio;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY gear_pair_with_range
SUBTYPE OF (gear_pair);
lower_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_rotation_1) OR NOT EXISTS(
upper_limit_actual_rotation_1)) XOR (
lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1
);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY general_datum_reference
ABSTRACT SUPERTYPE OF (ONEOF(datum_reference_compartment,
datum_reference_element))
SUBTYPE OF (shape_aspect);
base : datum_or_common_datum;
modifiers : OPTIONAL SET [1:?] OF datum_reference_modifier;
WHERE
WR1: SELF\shape_aspect.name = '';
WR2: NOT EXISTS(SELF\shape_aspect.description);
WR3: NOT EXISTS(SELF\shape_aspect.id);
WR4: SELF\shape_aspect.product_definitional = FALSE;
WR5: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM' IN TYPEOF
(base)) OR (SELF\shape_aspect.of_shape = base\shape_aspect.
of_shape);
WR6: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMMON_DATUM_LIST'
IN TYPEOF(base)) OR (SELF\shape_aspect.of_shape = base[1]\
shape_aspect.of_shape);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY general_feature
SUBTYPE OF (shape_feature_definition);
WHERE
WR1: (SIZEOF(get_property_definition_representations(SELF)) <= 1) AND (
SIZEOF(QUERY (pdr <* get_property_definition_representations(
SELF)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) <= 1);
WR2: SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description =
'course of travel occurrence'))) = SIZEOF(QUERY (sa <*
get_shape_aspects(SELF)| (sa.description =
'course of travel occurrence') AND (SIZEOF(QUERY (sar <*
USEDIN(sa,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar.name = 'course of travel'))) = 1)))
;
WR3: SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description =
'course of travel occurrence'))) = SIZEOF(QUERY (sa <*
get_shape_aspects(SELF)| (sa.description =
'course of travel occurrence') AND (SIZEOF(QUERY (sar <*
USEDIN(sa,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sar.relating_shape_aspect)))) = 1)));
WR4: SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description =
'boundary occurrence'))) = SIZEOF(QUERY (sa <*
get_shape_aspects(SELF)| (sa.description =
'boundary occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar.description = 'profile usage'))) =
1)));
WR5: (SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(sa)))) <= 1) AND (SIZEOF(QUERY (sa <*
get_shape_aspects(SELF)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(sa)) AND (sa.name = 'general compound feature'))
AND (SIZEOF(QUERY (sar <* USEDIN(sa,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INSTANCED_FEATURE'
IN TYPEOF(sar.related_shape_aspect)))) >= 2))) <= 1);
END_ENTITY; -- 10303-1764: shape_feature_mim
ENTITY general_linear_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
sum_index : one_or_two;
DERIVE
mat : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: function_is_2d_table(mat);
WR2: (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.
range), es_numbers);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY general_material_property
SUBTYPE OF (general_property);
WHERE
WR1: SIZEOF(QUERY (gpa <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATERIAL_PROPERTY'
IN TYPEOF(gpa\general_property_association.
derived_definition)))) = 0;
END_ENTITY; -- 10303-1681: generic_material_aspects_mim
ENTITY general_property;
id : identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY general_property_association;
name : label;
description : OPTIONAL text;
base_definition : general_property;
derived_definition : derived_property_select;
WHERE
WR1: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_LOCATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE'
] * TYPEOF(derived_definition)) > 0) OR (SIZEOF(USEDIN(
derived_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)) = 1);
WR2: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_LOCATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE'
] * TYPEOF(derived_definition)) > 0) OR (derived_definition.
name = base_definition.name);
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY general_property_relationship;
name : label;
description : OPTIONAL text;
relating_property : general_property;
related_property : general_property;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY generic_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_generic_expression,
unary_generic_expression, binary_generic_expression,
multiple_arity_generic_expression));
WHERE
WR1: is_acyclic(SELF);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY generic_literal
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY generic_product_definition_reference
ABSTRACT SUPERTYPE OF (ONEOF(product_definition_reference,
product_definition_reference_with_local_representation));
source : external_source;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY generic_variable
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
INVERSE
interpretation : environment FOR syntactic_representation;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY geometric_alignment
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY geometric_contact
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 2;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY geometric_curve_set
SUBTYPE OF (geometric_set);
WHERE
WR1: SIZEOF(QUERY (temp <* SELF\geometric_set.elements| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF
(temp)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT' IN TYPEOF
(temp))))) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY geometric_intersection
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY geometric_item_specific_usage
SUBTYPE OF (item_identified_representation_usage);
SELF\item_identified_representation_usage.definition :
geometric_item_specific_usage_select;
SELF\item_identified_representation_usage.used_representation :
shape_model;
SELF\item_identified_representation_usage.identified_item :
geometric_model_item;
END_ENTITY; -- 10303-1032: shape_property_assignment_mim
ENTITY geometric_model_element_relationship
SUBTYPE OF (geometric_representation_item,
representation_item_relationship);
SELF\representation_item_relationship.relating_representation_item :
geometric_representation_item;
SELF\representation_item_relationship.related_representation_item :
geometric_representation_item;
UNIQUE
UR1: SELF\representation_item_relationship.relating_representation_item,
SELF\representation_item_relationship.related_representation_item;
WHERE
WR1: SELF\representation_item_relationship.relating_representation_item
:<>: SELF\representation_item_relationship.
related_representation_item;
END_ENTITY; -- 10303-1667: extended_basic_geometry_mim
ENTITY geometric_representation_context
SUPERTYPE OF (ONEOF(geometric_representation_context_with_parameter,
path_parameter_representation_context))
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY geometric_representation_context_with_parameter
SUBTYPE OF (geometric_representation_context);
parameter_unit : OPTIONAL unit;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY geometric_representation_item
SUPERTYPE OF ((((((ONEOF(kinematic_path, placement) ANDOR ONEOF(
rotation_about_direction, su_parameters)) ANDOR ONEOF(curve,
externally_defined_hatch_style, externally_defined_tile_style,
fill_area_style_hatching, fill_area_style_tile_coloured_region,
fill_area_style_tile_curve_with_style,
fill_area_style_tile_symbol_with_style, fill_area_style_tiles,
one_direction_repeat_factor, point, vector)) ANDOR ONEOF(
annotation_fill_area, composite_text, curve, defined_character_glyph,
defined_symbol, point, symbol_target, text_literal)) ANDOR ONEOF(
camera_model, camera_model_d3_multi_clipping_intersection,
camera_model_d3_multi_clipping_union, curve, direction, light_source)
) ANDOR ONEOF(point, direction, vector, placement,
cartesian_transformation_operator, curve, surface, edge_curve,
face_surface, poly_loop, vertex_point, solid_model, boolean_result,
sphere, right_circular_cone, right_circular_cylinder, torus, block,
right_angular_wedge, ellipsoid, faceted_primitive,
rectangular_pyramid, cyclide_segment_solid, volume, half_space_solid,
shell_based_surface_model, face_based_surface_model,
shell_based_wireframe_model, edge_based_wireframe_model,
geometric_set, tessellated_item, volume_with_faces, scanned_data_item
)) ANDOR ONEOF(curve, planar_extent))
SUBTYPE OF (representation_item);
DERIVE
dim : dimension_count := dimension_of(SELF);
WHERE
WR1: SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(using_rep.context_of_items)))) = 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY geometric_set
SUPERTYPE OF (ONEOF(geometric_curve_set))
SUBTYPE OF (geometric_representation_item);
elements : SET [1:?] OF geometric_set_select;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY geometric_tolerance
ABSTRACT SUPERTYPE OF ((((geometric_tolerance_with_datum_reference ANDOR
geometric_tolerance_with_defined_unit) ANDOR ONEOF(
geometric_tolerance_with_modifiers, modified_geometric_tolerance))
ANDOR unequally_disposed_geometric_tolerance) ANDOR ONEOF(
cylindricity_tolerance, flatness_tolerance, line_profile_tolerance,
position_tolerance, roundness_tolerance, straightness_tolerance,
surface_profile_tolerance));
name : label;
description : OPTIONAL text;
magnitude : OPTIONAL length_measure_with_unit;
toleranced_shape_aspect : geometric_tolerance_target;
DERIVE
controlling_shape : product_definition_shape :=
sts_get_product_definition_shape(
toleranced_shape_aspect);
id : identifier := get_id_value(SELF);
INVERSE
auxiliary_classification : SET [0:?] OF
geometric_tolerance_auxiliary_classification
FOR described_item;
tolerance_relationship : SET [0:?] OF
geometric_tolerance_relationship FOR
relating_geometric_tolerance;
UNIQUE
UR1: id, controlling_shape;
WHERE
WR1: magnitude\measure_with_unit.value_component >= 0.0;
WR2: EXISTS(controlling_shape);
WR3: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP'
IN TYPEOF(toleranced_shape_aspect)) OR (
toleranced_shape_aspect\shape_aspect_relationship.
relating_shape_aspect.of_shape :=: toleranced_shape_aspect\
shape_aspect_relationship.related_shape_aspect.of_shape);
WR4: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
WR5: SIZEOF(QUERY (tr <* tolerance_relationship| (tr.name =
'composite tolerance'))) <= 1;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_auxiliary_classification;
attribute_value : geometric_tolerance_auxiliary_classification_enum;
described_item : geometric_tolerance;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_relationship;
name : label;
description : text;
relating_geometric_tolerance : geometric_tolerance;
related_geometric_tolerance : geometric_tolerance;
WHERE
WR1: ((NOT (name = 'composite tolerance') OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITION_TOLERANCE'
IN TYPEOF(relating_geometric_tolerance)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITION_TOLERANCE'
IN TYPEOF(related_geometric_tolerance))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE_PROFILE_TOLERANCE'
IN TYPEOF(relating_geometric_tolerance)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE_PROFILE_TOLERANCE'
IN TYPEOF(related_geometric_tolerance))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_PROFILE_TOLERANCE'
IN TYPEOF(relating_geometric_tolerance)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_PROFILE_TOLERANCE'
IN TYPEOF(related_geometric_tolerance));
WR2: NOT (name = 'composite tolerance') OR (
relating_geometric_tolerance\geometric_tolerance.
toleranced_shape_aspect :=: related_geometric_tolerance\
geometric_tolerance.toleranced_shape_aspect);
WR3: acyclic_geometric_tolerance_relationship(SELF, [
related_geometric_tolerance ],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE'
);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_datum_reference
SUPERTYPE OF (ONEOF(angularity_tolerance, circular_runout_tolerance,
coaxiality_tolerance, concentricity_tolerance, parallelism_tolerance,
perpendicularity_tolerance, symmetry_tolerance,
total_runout_tolerance))
SUBTYPE OF (geometric_tolerance);
datum_system : SET [1:?] OF datum_system_or_reference;
WHERE
WR1: (SIZEOF(QUERY (ds <* datum_system| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_SYSTEM' IN
TYPEOF(ds)))) = 0) OR (SIZEOF(datum_system) = 1);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_defined_area_unit
SUBTYPE OF (geometric_tolerance_with_defined_unit);
area_type : area_unit_type;
second_unit_size : OPTIONAL
length_or_plane_angle_measure_with_unit_select;
WHERE
WR1: NOT (EXISTS(second_unit_size) XOR (area_type IN [ area_unit_type.
rectangular, area_unit_type.cylindrical, area_unit_type.
spherical ]));
WR2: NOT (area_type = area_unit_type.cylindrical) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(unit_size)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(second_unit_size));
WR3: NOT (area_type = area_unit_type.rectangular) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(unit_size)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(second_unit_size));
WR4: NOT (area_type = area_unit_type.spherical) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(unit_size)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(second_unit_size));
WR5: NOT (area_type = area_unit_type.spherical) OR (SIZEOF(QUERY (tz <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOLERANCE_ZONE.DEFINING_TOLERANCE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_TOLERANCE_ZONE'
IN TYPEOF(tz)))) <> 0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_defined_unit
SUBTYPE OF (geometric_tolerance);
unit_size : length_or_plane_angle_measure_with_unit_select;
WHERE
WR1: ('NUMBER' IN TYPEOF(unit_size\measure_with_unit.value_component))
AND (unit_size\measure_with_unit.value_component > 0.0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_maximum_tolerance
SUBTYPE OF (geometric_tolerance_with_modifiers);
maximum_upper_tolerance : length_measure_with_unit;
WHERE
WR1: (geometric_tolerance_modifier.maximum_material_requirement IN SELF
\geometric_tolerance_with_modifiers.modifiers) OR (
geometric_tolerance_modifier.least_material_requirement IN
SELF\geometric_tolerance_with_modifiers.modifiers);
WR2: (maximum_upper_tolerance\measure_with_unit.unit_component = SELF\
geometric_tolerance.magnitude\measure_with_unit.
unit_component) AND (maximum_upper_tolerance\
measure_with_unit.value_component > SELF\geometric_tolerance.
magnitude\measure_with_unit.value_component);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_modifiers
SUBTYPE OF (geometric_tolerance);
modifiers : SET [1:?] OF geometric_tolerance_modifier;
WHERE
WR1: NOT (geometric_tolerance_modifier.circle_a IN modifiers) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect))
AND (SELF\geometric_tolerance.toleranced_shape_aspect\
shape_aspect.product_definitional = TRUE) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect))
);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometrical_tolerance_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY geometrically_bounded_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ] *
TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\
mapped_item.mapping_source.mapped_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET'
IN TYPEOF(mr_it)))) > 0)))) = 0;
WR4: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pnt <* QUERY (gsel <* gs\
geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT' IN TYPEOF
(gsel)))| NOT gbsf_check_point(pnt))) = 0))) = 0;
WR5: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cv <* QUERY (gsel <* gs\
geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF
(gsel)))| NOT gbsf_check_curve(cv))) = 0))) = 0;
WR6: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (sf <* QUERY (gsel <* gs\
geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE' IN
TYPEOF(gsel)))| NOT gbsf_check_surface(sf))) = 0))) = 0;
WR7: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_SET'
IN TYPEOF(it)))| (SIZEOF(QUERY (gsel <* gs\geometric_set.
elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE' IN
TYPEOF(gsel)))) > 0))) > 0;
END_ENTITY; -- 10303-507: aic_geometrically_bounded_surface
ENTITY geometrically_bounded_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF(TYPEOF(it) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF(TYPEOF(it) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
) = 1))) >= 1;
WR3: SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (crv <* QUERY (elem <*
gcs\geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF
(elem)))| NOT valid_geometrically_bounded_wf_curve(crv))) = 0
))) = 0;
WR4: SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pnts <* QUERY (elem <*
gcs\geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT' IN TYPEOF
(elem)))| NOT valid_geometrically_bounded_wf_point(pnts))) =
0))) = 0;
WR5: SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cnc <* QUERY (elem <*
gcs\geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC' IN TYPEOF
(elem)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(cnc\conic.position)))) = 0))) = 0;
WR6: SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_CURVE_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pline <* QUERY (elem <*
gcs\geometric_set.elements| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(elem)))| NOT (SIZEOF(pline\polyline.points) > 2))) = 0
))) = 0;
WR7: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
END_ENTITY; -- 10303-510: aic_geometrically_bounded_wireframe
ENTITY global_uncertainty_assigned_context
SUBTYPE OF (representation_context);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- 10303-43: representation_schema
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
units : SET [1:?] OF unit;
END_ENTITY; -- 10303-41: measure_schema
ENTITY gps_filter;
filter_type : gps_filtration_type;
filter_data : LIST [1:?] OF measure_with_unit;
INVERSE
owner : gps_filtration_specification FOR filter_data;
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_WITH_MODIFIERS'
IN TYPEOF(owner\gps_filtration_specification.base_target))
OR (SIZEOF([ geometric_tolerance_modifier.
reference_minimax_feature_without_constraint,
geometric_tolerance_modifier.
reference_minimax_feature_with_external_material_constraint,
geometric_tolerance_modifier.
reference_minimax_feature_with_internal_material_constraint,
geometric_tolerance_modifier.
reference_least_square_feature_without_constraint,
geometric_tolerance_modifier.
reference_least_square_feature_with_external_material_constraint
, geometric_tolerance_modifier.
reference_least_square_feature_with_internal_material_constraint
, geometric_tolerance_modifier.
reference_minimum_circumscribed_feature,
geometric_tolerance_modifier.
reference_maximum_inscribed_feature,
geometric_tolerance_modifier.total_range_deviations,
geometric_tolerance_modifier.peak_height,
geometric_tolerance_modifier.valley_depth,
geometric_tolerance_modifier.standard_deviation ] * owner\
gps_filtration_specification.base_target\
geometric_tolerance_with_modifiers.modifiers) <> 0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY gps_filtration_specification;
base_target : gps_filtration_specification_target;
filter_data : LIST [1:?] OF gps_filter;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY grooving_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing', 'cutting in' ];
WR2: verify_optional_action_property(SELF, 'dwell') AND
verify_rep_type_for_action_property(SELF, 'dwell', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'
]);
WR3: verify_optional_action_property(SELF, 'allowance') AND
verify_length_measure_action_property(SELF, 'allowance');
WR4: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance');
WR5: NOT (SELF.description = 'cutting in') OR (0 = SIZEOF(
get_action_property(SELF, 'allowance')));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY group;
name : label;
description : OPTIONAL text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: group_schema
ENTITY group_assignment
ABSTRACT SUPERTYPE;
assigned_group : group;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY group_relationship;
name : label;
description : OPTIONAL text;
relating_group : group;
related_group : group;
END_ENTITY; -- 10303-41: group_schema
ENTITY half_space_solid
SUBTYPE OF (geometric_representation_item);
base_surface : surface;
agreement_flag : BOOLEAN;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY hardness_representation
SUBTYPE OF (representation);
WHERE
WR1: ((2 <= SIZEOF(SELF.items)) AND (SIZEOF(SELF.items) <= 4)) AND (
SIZEOF(QUERY (i <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name IN [ 'measuring method',
'measuring position' ]))) + SIZEOF(QUERY (i <* items| (SIZEOF
([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ]
* TYPEOF(i)) = 1) AND (i.name IN [ 'depth', 'hardness' ])))
= SIZEOF(SELF.items));
WR2: SIZEOF(QUERY (i <* SELF.items| (i.name = 'measuring method'))) = 1
;
WR3: SIZEOF(QUERY (i <* SELF.items| (i.name = 'hardness'))) = 1;
WR4: SIZEOF(QUERY (i <* SELF.items| (i.name = 'measuring position')))
<= 1;
WR5: SIZEOF(QUERY (i <* SELF.items| (i.name = 'depth'))) <= 1;
WR6: (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY'
IN TYPEOF(gpa.base_definition)) AND (gpa\
general_property_association.base_definition\general_property
.name = 'surface_condition'))) = 1))) = 1);
END_ENTITY; -- 10303-1110: surface_conditions_mim
ENTITY hexahedron_volume
SUBTYPE OF (volume);
points : LIST [8:8] OF cartesian_point;
WHERE
WR1: above_plane(points[1], points[2], points[3], points[4]) = 0.0;
WR2: above_plane(points[5], points[8], points[7], points[6]) = 0.0;
WR3: above_plane(points[1], points[4], points[8], points[5]) = 0.0;
WR4: above_plane(points[4], points[3], points[7], points[8]) = 0.0;
WR5: above_plane(points[3], points[2], points[6], points[7]) = 0.0;
WR6: above_plane(points[1], points[5], points[6], points[2]) = 0.0;
WR7: same_side([ points[1], points[2], points[3] ], [ points[5], points
[6], points[7], points[8] ]);
WR8: same_side([ points[1], points[4], points[8] ], [ points[3], points
[7], points[6], points[2] ]);
WR9: same_side([ points[1], points[2], points[5] ], [ points[3], points
[7], points[8], points[4] ]);
WR10: same_side([ points[5], points[6], points[7] ], [ points[1],
points[2], points[3], points[4] ]);
WR11: same_side([ points[3], points[7], points[6] ], [ points[1],
points[4], points[8], points[5] ]);
WR12: same_side([ points[3], points[7], points[8] ], [ points[1],
points[5], points[6], points[2] ]);
WR13: points[1].dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY hidden_element_over_riding_styled_item
SUBTYPE OF (context_dependent_over_riding_styled_item);
SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:
1] OF presentation_view;
SELF\styled_item.item : camera_image;
INVERSE
container : SET [1:?] OF presentation_view FOR items;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_MODEL_D3_WITH_HLHSR'
IN TYPEOF(SELF.item\mapped_item.mapping_source.
mapping_origin);
END_ENTITY; -- 10303-1316: camera_view_3d_mim
ENTITY high_order_kinematic_pair
ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_and_planar_curve_pair,
point_on_surface_pair, point_on_planar_curve_pair, planar_curve_pair,
surface_pair))
SUBTYPE OF (kinematic_pair);
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_2| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY hole_bottom
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'through', 'flat', 'flat with radius',
'flat with taper', 'spherical', 'conical' ];
WR3: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)) = 0))) = 0);
WR4: NOT (SELF.description IN [ 'flat with radius', 'flat with taper',
'spherical', 'conical' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 0))) = 0))) = 0);
WR6: NOT (SELF.description IN [ 'flat with radius', 'spherical' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0);
WR7: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR8: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0);
WR9: (SELF.description = 'through') OR (SIZEOF(QUERY (fcr <* QUERY (sar
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'hole bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (fcr.name IN [ 'hole depth start',
'hole depth end' ]))) >= 1);
WR10: NOT (SELF.description = 'flat with radius') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) = 1))
) = 0))) = 0);
WR11: NOT (SELF.description = 'spherical') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR12: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tip radius'))) <= 1)))
= 0))) = 0);
WR13: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) =
0))) = 0);
WR14: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'hole bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.HOLE_BOTTOM' IN
TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR15: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'final diameter'))) = 1)
)) = 0))) = 0);
WR16: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'taper diameter'))) = 1)
)) = 0))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY homogeneous_linear_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
sum_index : one_or_two;
DERIVE
mat : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: function_is_2d_table(mat);
WR2: (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.
range), es_numbers);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY homokinetic_pair
SUBTYPE OF (universal_pair);
WHERE
WR1: NOT EXISTS(SELF.input_skew_angle);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY hyperbola
SUBTYPE OF (conic);
semi_axis : positive_length_measure;
semi_imag_axis : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY id_attribute;
attribute_value : identifier;
identified_item : id_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY identification_assignment
ABSTRACT SUPERTYPE;
assigned_id : identifier;
role : identification_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY identification_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY idrm_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET [1:?] OF idrm_marked_item;
END_ENTITY; -- 10303-1349: incomplete_data_reference_mechanism_mim
ENTITY illuminance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ILLUMINANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY illuminance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.lux);
END_ENTITY; -- 10303-41: measure_schema
ENTITY imported_curve_function
SUBTYPE OF (maths_function, generic_literal);
geometry : curve;
parametric_domain : tuple_space;
WHERE
WR1: expression_is_constant(parametric_domain);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY imported_point_function
SUBTYPE OF (maths_function, generic_literal);
geometry : point;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY imported_surface_function
SUBTYPE OF (maths_function, generic_literal);
geometry : surface;
parametric_domain : tuple_space;
WHERE
WR1: expression_is_constant(parametric_domain);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY imported_volume_function
SUBTYPE OF (maths_function, generic_literal);
geometry : volume;
parametric_domain : tuple_space;
WHERE
WR1: expression_is_constant(parametric_domain);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY included_text_block
SUBTYPE OF (mapped_item);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRUCTURED_TEXT_REPRESENTATION'
IN TYPEOF(SELF\mapped_item.mapping_source.
mapped_representation);
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY inclusion_product_concept_feature
SUBTYPE OF (conditional_concept_feature);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PACKAGE_PRODUCT_CONCEPT_FEATURE'
IN TYPEOF(SELF));
WR2: SIZEOF(QUERY (cfr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION'
IN TYPEOF(cfr)))) + SIZEOF(QUERY (cfr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION'
IN TYPEOF(cfr)))) = 0;
WR3: SELF.condition.conditional_operator.name = 'implication';
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY index_expression
SUBTYPE OF (string_expression, binary_generic_expression);
DERIVE
operand : generic_expression := SELF\binary_generic_expression.operands
[1];
index : generic_expression := SELF\binary_generic_expression.operands
[2];
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(operand)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(index));
WR2: is_int_expr(index);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY inductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INDUCTANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY inductance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.henry);
END_ENTITY; -- 10303-41: measure_schema
ENTITY information_right
SUBTYPE OF (action_method);
END_ENTITY; -- 10303-1241: information_rights_mim
ENTITY information_usage_right
SUBTYPE OF (action_method);
END_ENTITY; -- 10303-1241: information_rights_mim
ENTITY instance_usage_context_assignment
SUBTYPE OF (product_definition_context);
items : SET [1:?] OF instance_usage_context_select;
END_ENTITY; -- 10303-1112: specification_control_mim
ENTITY instanced_feature
SUBTYPE OF (feature_definition, shape_aspect);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.product_definitional;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY int_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value : INTEGER;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY int_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY int_value_function
SUBTYPE OF (value_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY integer_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY integer_interval_from_min
SUBTYPE OF (maths_space, generic_literal);
min : INTEGER;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY integer_interval_to_max
SUBTYPE OF (maths_space, generic_literal);
max : INTEGER;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY integer_representation_item
SUBTYPE OF (representation_item, int_literal);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY integer_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST [1:?] OF INTEGER;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY interpolated_configuration_representation
SUBTYPE OF (representation);
SELF\representation.context_of_items :
geometric_representation_context_with_parameter;
SELF\representation.items : SET [1:?] OF
interpolated_configuration_sequence;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY interpolated_configuration_segment
SUBTYPE OF (founded_item);
state : mechanism_state_representation;
t_parameter : parameter_value;
interpolation : interpolation_type;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY interpolated_configuration_sequence
SUBTYPE OF (geometric_representation_item);
segments : LIST [2:?] OF interpolated_configuration_segment;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_interpolation : LOGICAL := segments[n_segments].interpolation <>
discontinuous_interpolation_type;
configured_mechanism : mechanism_representation := segments[1].state.
represented_mechanism;
WHERE
WR1: SIZEOF(QUERY (ics <* segments| (ics.state.represented_mechanism
:<>: configured_mechanism))) = 0;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY intersection_curve
SUBTYPE OF (surface_curve);
WHERE
WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) <>
associated_surface(SELF\surface_curve.associated_geometry[2])
;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY interval_expression
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
DERIVE
interval_low : generic_expression := SELF\
multiple_arity_generic_expression.operands[1];
interval_item : generic_expression := SELF\
multiple_arity_generic_expression.operands[2];
interval_high : generic_expression := SELF\
multiple_arity_generic_expression.operands[3];
WHERE
WR1: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION' IN
TYPEOF(interval_low)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION' IN
TYPEOF(interval_item))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION' IN
TYPEOF(interval_high));
WR2: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF.interval_low)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF.interval_high))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF.interval_item)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF.interval_low)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF.interval_item))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF.interval_high));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY invisibility;
invisible_items : SET [1:?] OF invisible_item;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY item_defined_transformation;
name : label;
description : OPTIONAL text;
transform_item_1 : representation_item;
transform_item_2 : representation_item;
END_ENTITY; -- 10303-43: representation_schema
ENTITY item_identified_representation_usage;
name : label;
description : OPTIONAL text;
definition : item_identified_representation_usage_definition;
used_representation : representation;
identified_item : item_identified_representation_usage_select;
UNIQUE
UR1: used_representation, identified_item;
UR2: used_representation, definition;
WHERE
WR1: valid_identified_item_in_representation(identified_item,
used_representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY item_link_motion_relationship
SUBTYPE OF (link_motion_relationship);
SELF\representation_relationship.rep_1 : shape_representation;
item : geometric_representation_item;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY kinematic_analysis_consistency;
control : kinematic_control;
result : kinematic_analysis_result;
WHERE
WR1: control.controlled_mechanism :=: result.analysed_mechanism;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
ENTITY kinematic_analysis_result;
analysed_mechanism : mechanism_representation;
result : kinematic_result;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
ENTITY kinematic_control;
controlled_mechanism : mechanism_representation;
contained_kinematic_programs : kinematic_analysis_definition;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
ENTITY kinematic_joint
SUBTYPE OF (edge);
SELF\edge.edge_start : kinematic_link;
SELF\edge.edge_end : kinematic_link;
UNIQUE
UR1: edge_start, edge_end;
WHERE
WR1: edge_start :<>: edge_end;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_link
SUBTYPE OF (vertex);
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_link_representation
ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_link_representation,
rigid_link_representation))
SUBTYPE OF (representation);
SELF\representation.context_of_items : geometric_representation_context
;
SELF\representation.items : SET [1:?] OF
kinematic_link_representation_items;
represented_link : kinematic_link;
INVERSE
associated_shape_representation : SET [0:1] OF
kinematic_link_representation_association
FOR rep_1;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY kinematic_link_representation_association
SUBTYPE OF (representation_relationship);
SELF\representation_relationship.rep_1 : kinematic_link_representation;
SELF\representation_relationship.rep_2 : shape_representation;
WHERE
WR1: (SELF\representation_relationship.rep_2.context_of_items :=: SELF\
representation_relationship.rep_1.context_of_items) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY kinematic_loop
SUBTYPE OF (edge_loop);
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_joint;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_pair
ABSTRACT SUPERTYPE OF (ONEOF(high_order_kinematic_pair,
low_order_kinematic_pair_with_motion_coupling,
low_order_kinematic_pair) ANDOR actuated_kinematic_pair)
SUBTYPE OF (geometric_representation_item, item_defined_transformation);
joint : kinematic_joint;
SELF\item_defined_transformation.transform_item_1 : rigid_placement;
SELF\item_defined_transformation.transform_item_2 : rigid_placement;
DERIVE
associated_link_representations_1 : SET [1:?] OF
kinematic_link_representation :=
sort_link_associations(
link_representation_associations
, TRUE);
associated_link_representations_2 : SET [1:?] OF
kinematic_link_representation :=
sort_link_associations(
link_representation_associations
, FALSE);
SELF\item_defined_transformation.name : label := SELF\
representation_item.name;
INVERSE
link_representation_associations : SET [1:?] OF
pair_representation_relationship
FOR transformation_operator;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY kinematic_path
ABSTRACT SUPERTYPE OF (ONEOF(kinematic_path_defined_by_nodes,
kinematic_path_defined_by_curves))
SUBTYPE OF (geometric_representation_item);
segments : LIST [1:?] OF kinematic_path_segment;
t_start : parameter_value;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_path : LOGICAL := segments[n_segments].transition <>
discontinuous;
WHERE
WR1: SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER'
IN TYPEOF(using_rep.context_of_items)))) = 0;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY kinematic_path_defined_by_curves
SUBTYPE OF (kinematic_path);
SELF\kinematic_path.segments : LIST [1:?] OF
curve_based_path_with_orientation;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY kinematic_path_defined_by_nodes
SUBTYPE OF (kinematic_path);
SELF\kinematic_path.segments : LIST [1:?] OF path_node;
placement_start : placement;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY kinematic_path_segment
ABSTRACT SUPERTYPE OF (ONEOF(path_node, curve_based_path_with_orientation
))
SUBTYPE OF (founded_item);
t_end : parameter_value;
transition : transition_code;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY kinematic_property_definition_representation
ABSTRACT SUPERTYPE OF (ONEOF(kinematic_property_topology_representation,
kinematic_property_mechanism_representation))
SUBTYPE OF (property_definition_representation);
SELF\property_definition_representation.definition :
product_definition_kinematics;
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY kinematic_property_mechanism_representation
SUBTYPE OF (kinematic_property_definition_representation);
SELF\property_definition_representation.used_representation :
mechanism_representation;
base : kinematic_link_representation;
WHERE
WR1: SIZEOF(QUERY (i <* used_representation.items| (base :=: i\
representation_relationship.rep_1) OR (base :=: i\
representation_relationship.rep_2))) > 0;
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY kinematic_property_topology_representation
SUBTYPE OF (kinematic_property_definition_representation);
SELF\property_definition_representation.used_representation :
kinematic_topology_representation_select;
base : kinematic_link;
WHERE
WR1: used_representation IN using_representations(base);
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY kinematic_topology_directed_structure
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF oriented_joint;
parent : kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_oriented_joints(items) <= parent.items;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_topology_network_structure
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF kinematic_loop;
parent : kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_kinematic_loops(items) <= parent.items;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_topology_structure
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF kinematic_joint;
WHERE
WR1: SIZEOF(QUERY (item <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_EDGE'
IN TYPEOF(item)))) = 0;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_topology_substructure
SUBTYPE OF (kinematic_topology_structure);
parent : kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: SELF\kinematic_topology_structure.items <= parent\
kinematic_topology_structure.items;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY kinematic_topology_tree_structure
SUBTYPE OF (kinematic_topology_directed_structure);
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY known_source
SUBTYPE OF (external_source, pre_defined_item);
END_ENTITY; -- 10303-1291: plib_class_reference_mim
ENTITY knurling_turning_operation
SUBTYPE OF (turning_type_operation);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY language
SUBTYPE OF (group);
WHERE
WR1: SELF\group.name <> '';
END_ENTITY; -- 10303-41: language_schema
ENTITY leader_curve
SUBTYPE OF (annotation_curve_occurrence);
WHERE
WR1: SIZEOF(QUERY (ldc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT.CONTENTS'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
IN TYPEOF(ldc)))) >= 1;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY leader_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(l_1)))) >= 1;
WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY leader_directed_dimension
SUBTYPE OF (leader_directed_callout);
WHERE
WR1: SIZEOF(QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(con)))) = 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY leader_terminator
SUBTYPE OF (terminator_symbol);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_CURVE' IN
TYPEOF(SELF\terminator_symbol.annotated_curve);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY length_function
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand : string_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY length_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 1.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY light_source
SUPERTYPE OF (ONEOF(light_source_ambient, light_source_directional,
light_source_positional, light_source_spot))
SUBTYPE OF (geometric_representation_item);
light_colour : colour;
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM.ITEM'
)) = 0;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY light_source_ambient
SUBTYPE OF (light_source);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY light_source_directional
SUBTYPE OF (light_source);
orientation : direction;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY light_source_positional
SUBTYPE OF (light_source);
position : cartesian_point;
constant_attenuation : REAL;
distance_attenuation : REAL;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY light_source_spot
SUBTYPE OF (light_source);
position : cartesian_point;
orientation : direction;
concentration_exponent : REAL;
constant_attenuation : REAL;
distance_attenuation : REAL;
spread_angle : positive_plane_angle_measure;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY like_expression
SUBTYPE OF (comparison_expression);
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY limits_and_fits;
form_variance : label;
zone_variance : label;
grade : label;
source : text;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY line
SUBTYPE OF (curve);
pnt : cartesian_point;
dir : vector;
WHERE
WR1: dir.dim = pnt.dim;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY line_profile_tolerance
SUBTYPE OF (geometric_tolerance);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY linear_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY linear_flexible_and_pinion_pair
SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
pinion_radius : length_measure;
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_FLEXIBLE_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY linear_flexible_and_planar_curve_pair
SUBTYPE OF (high_order_kinematic_pair);
pair_curve : curve;
orientation : BOOLEAN;
WHERE
WR1: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (pair_curve IN r.items
))) = 0;
WR2: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_FLEXIBLE_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY linear_flexible_link_representation
SUBTYPE OF (kinematic_link_representation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY linear_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code := continuous;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY linear_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'profile length'))) = 1)
)) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY linearized_table_function
SUPERTYPE OF (ONEOF(standard_table_function, regular_table_function,
triangular_matrix, symmetric_matrix, banded_matrix))
SUBTYPE OF (explicit_table_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
first : INTEGER;
DERIVE
source : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: function_is_1d_array(source);
WR2: member_of(first, source\maths_function.domain);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY link_motion_relationship
SUBTYPE OF (definitional_representation_relationship,
representation_relationship_with_transformation);
SELF\representation_relationship.rep_1 : link_or_shape_representation;
SELF\representation_relationship.rep_2 :
link_motion_representation_along_path;
SELF\representation_relationship_with_transformation.
transformation_operator :
link_motion_transformation;
WHERE
WR1: transformation_operator\item_defined_transformation.
transform_item_1 IN rep_1.items;
WR2: transformation_operator\item_defined_transformation.
transform_item_2 IN rep_2.items;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY link_motion_representation_along_path
SUPERTYPE OF (ONEOF(prescribed_path, resulting_path))
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF kinematic_path;
SELF\representation.context_of_items :
geometric_representation_context_with_parameter;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY link_motion_transformation
SUBTYPE OF (item_defined_transformation);
SELF\item_defined_transformation.transform_item_1 : rigid_placement;
SELF\item_defined_transformation.transform_item_2 : kinematic_path;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY listed_complex_number_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [2:?] OF REAL;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) DIV 2 ];
WHERE
WR1: NOT ODD(SIZEOF(values));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [1:?] OF maths_value;
value_range : maths_space;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) ];
WHERE
WR1: expression_is_constant(value_range);
WR2: SIZEOF(QUERY (val <* values| NOT member_of(val, value_range))) = 0
;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_integer_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [1:?] OF INTEGER;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) ];
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_logical_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [1:?] OF LOGICAL;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) ];
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_product_space
SUBTYPE OF (maths_space, generic_literal);
factors : LIST OF maths_space;
WHERE
WR1: SIZEOF(QUERY (space <* factors| NOT expression_is_constant(space))
) = 0;
WR2: no_cyclic_space_reference(SELF, []);
WR3: NOT (the_empty_space IN factors);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_real_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [1:?] OF REAL;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) ];
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY listed_string_data
SUBTYPE OF (explicit_table_function, generic_literal);
values : LIST [1:?] OF STRING;
DERIVE
SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer :=
[ SIZEOF(values) ];
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY literal_number
ABSTRACT SUPERTYPE OF (ONEOF(int_literal, real_literal))
SUBTYPE OF (simple_numeric_expression, generic_literal);
the_value : NUMBER;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY local_b_spline
SUBTYPE OF (representation_item);
degree : INTEGER;
knots : LIST [2:?] OF INTEGER;
multiplicities : LIST [2:?] OF INTEGER;
WHERE
WR1: degree > 0;
WR2: SIZEOF(knots) = SIZEOF(multiplicities);
WR3: constraints_param_local_b_spline(degree, knots, multiplicities);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY local_time;
hour_component : hour_in_day;
minute_component : OPTIONAL minute_in_hour;
second_component : OPTIONAL second_in_minute;
zone : coordinated_universal_time_offset;
WHERE
WR1: valid_time(SELF);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY locally_refined_spline_curve
SUBTYPE OF (bounded_curve);
b_splines : LIST [2:?] OF local_b_spline;
knot_values : spline_knot_values;
control_points_list : LIST [2:?] OF cartesian_point;
scaling_factors : LIST [2:?] OF REAL;
closed_curve : LOGICAL;
locally_refined_spline_type : locally_refined_spline_type_enum;
self_intersect : LOGICAL;
domain : LIST [2:2] OF REAL;
WHERE
WR1: SIZEOF(b_splines) = SIZEOF(control_points_list);
WR2: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
WR3: constraints_scaling(scaling_factors);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY locally_refined_spline_surface
SUBTYPE OF (bounded_surface);
u_b_splines : LIST [4:?] OF local_b_spline;
v_b_splines : LIST [4:?] OF local_b_spline;
u_knots : spline_knot_values;
v_knots : spline_knot_values;
control_points_list : LIST [4:?] OF cartesian_point;
scaling_factors : LIST [4:?] OF REAL;
linearly_independent : linearly_independent_enum;
locally_refined_spline_type : locally_refined_spline_type_enum;
self_intersect : LOGICAL;
u_closed : LOGICAL;
v_closed : LOGICAL;
domain : LIST [2:2] OF LIST [2:2] OF REAL;
WHERE
WR1: SIZEOF(u_b_splines) = SIZEOF(control_points_list);
WR2: SIZEOF(v_b_splines) = SIZEOF(control_points_list);
WR3: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
WR4: constraints_scaling(scaling_factors);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY locally_refined_spline_volume
SUBTYPE OF (volume);
u_b_splines : LIST [8:?] OF local_b_spline;
v_b_splines : LIST [8:?] OF local_b_spline;
w_b_splines : LIST [8:?] OF local_b_spline;
u_knots : spline_knot_values;
v_knots : spline_knot_values;
w_knots : spline_knot_values;
control_points_list : LIST [8:?] OF cartesian_point;
scaling_factors : LIST [8:?] OF REAL;
linearly_independent : linearly_independent_enum;
locally_refined_spline_type : locally_refined_spline_type_enum;
domain : LIST [3:3] OF LIST [2:2] OF REAL;
WHERE
WR1: SIZEOF(u_b_splines) = SIZEOF(control_points_list);
WR2: SIZEOF(v_b_splines) = SIZEOF(control_points_list);
WR3: SIZEOF(w_b_splines) = SIZEOF(control_points_list);
WR4: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
WR5: constraints_scaling(scaling_factors);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY location_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT' IN TYPEOF
(it)))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY log10_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY log2_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY log_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY logical_literal
SUBTYPE OF (generic_literal);
lit_value : LOGICAL;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY logical_representation_item
SUBTYPE OF (representation_item, logical_literal);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY loop
SUPERTYPE OF (ONEOF(vertex_loop, edge_loop, poly_loop))
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
ENTITY loss_tangent_measure_with_unit
SUBTYPE OF (ratio_measure_with_unit);
END_ENTITY; -- 10303-1753: value_with_unit_extension_mim
ENTITY lot_effectivity
SUBTYPE OF (effectivity);
effectivity_lot_id : identifier;
effectivity_lot_size : measure_with_unit;
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY low_order_kinematic_pair
SUPERTYPE OF (ONEOF(revolute_pair, cylindrical_pair, spherical_pair,
spherical_pair_with_pin, planar_pair, unconstrained_pair,
fully_constrained_pair, prismatic_pair, universal_pair,
low_order_kinematic_pair_with_range))
SUBTYPE OF (kinematic_pair);
t_x : BOOLEAN;
t_y : BOOLEAN;
t_z : BOOLEAN;
r_x : BOOLEAN;
r_y : BOOLEAN;
r_z : BOOLEAN;
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
WR2: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_2| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY low_order_kinematic_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : low_order_kinematic_pair;
actual_translation_x : length_measure;
actual_translation_y : length_measure;
actual_translation_z : length_measure;
actual_rotation_x : plane_angle_measure;
actual_rotation_y : plane_angle_measure;
actual_rotation_z : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY low_order_kinematic_pair_with_motion_coupling
ABSTRACT SUPERTYPE OF (ONEOF(gear_pair, linear_flexible_and_pinion_pair,
rack_and_pinion_pair, screw_pair))
SUBTYPE OF (kinematic_pair);
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_2| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY low_order_kinematic_pair_with_range
SUBTYPE OF (low_order_kinematic_pair);
lower_limit_actual_rotation_x : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation_x : OPTIONAL plane_angle_measure;
lower_limit_actual_rotation_y : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation_y : OPTIONAL plane_angle_measure;
lower_limit_actual_rotation_z : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation_z : OPTIONAL plane_angle_measure;
lower_limit_actual_translation_x : OPTIONAL length_measure;
upper_limit_actual_translation_x : OPTIONAL length_measure;
lower_limit_actual_translation_y : OPTIONAL length_measure;
upper_limit_actual_translation_y : OPTIONAL length_measure;
lower_limit_actual_translation_z : OPTIONAL length_measure;
upper_limit_actual_translation_z : OPTIONAL length_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY luminous_flux_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LUMINOUS_FLUX_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY luminous_flux_unit
SUBTYPE OF (named_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.lumen);
END_ENTITY; -- 10303-41: measure_schema
ENTITY luminous_intensity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LUMINOUS_INTENSITY_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY luminous_intensity_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 1.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY machining_adaptive_control_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_approach_retract_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: SELF.description IN [ 'along path', 'approach retract angle',
'approach retract tangent', 'plunge helix', 'plunge ramp',
'plunge toolaxis', 'plunge zigzag' ];
WR2: verify_optional_action_property(SELF, 'tool orientation') AND
verify_rep_item_for_action_property(SELF, 'tool orientation',
[ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ])
;
WR3: NOT (SELF.description = 'along path') OR (1 <=
get_count_of_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH'
]);
WR4: NOT (SELF.description = 'approach retract angle') OR ((
verify_required_action_property(SELF, 'travel angle') AND
verify_angle_measure_action_property(SELF, 'travel angle'))
AND verify_required_action_property(SELF, 'travel length'))
AND verify_length_measure_action_property(SELF,
'travel length');
WR5: NOT (SELF.description = 'approach retract tangent') OR
verify_required_action_property(SELF, 'travel radius') AND
verify_length_measure_action_property(SELF, 'travel radius');
WR6: NOT (SELF.description IN [ 'plunge helix', 'plunge ramp',
'plunge zigzag' ]) OR verify_required_action_property(SELF,
'plunge angle') AND verify_angle_measure_action_property(SELF
, 'plunge angle');
WR7: NOT (SELF.description = 'plunge helix') OR
verify_required_action_property(SELF, 'plunge radius') AND
verify_length_measure_action_property(SELF, 'plunge radius');
WR8: NOT (SELF.description = 'plunge zigzag') OR
verify_required_action_property(SELF, 'plunge width') AND
verify_length_measure_action_property(SELF, 'plunge width');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_cutting_component
SUBTYPE OF (action_resource, characterized_object);
WHERE
WR1: 1 >= SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATERIAL_DESIGNATION.DEFINITIONS'
));
WR2: 1 >= SIZEOF(QUERY (arr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES'
)| (arr.kind.name = 'cutting component') AND (0 < SIZEOF(
QUERY (mt <* arr.operations| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'
IN TYPEOF(mt)))))));
WR3: verify_optional_resource_property(SELF, 'expected life') AND
verify_time_measure_resource_property(SELF, 'expected life');
WR4: NOT (SELF.kind.name = 'milling cutting edge') OR
verify_required_resource_property(SELF, 'functional length')
AND verify_length_measure_resource_property(SELF,
'functional length');
WR5: NOT (SELF.kind.name = 'turning cutting edge') OR (((((((((((
verify_optional_resource_property(SELF, 'cutting edge length'
) AND verify_length_measure_resource_property(SELF,
'cutting edge length')) AND verify_optional_resource_property
(SELF, 'cutting edge angle')) AND
verify_angle_measure_resource_property(SELF,
'cutting edge angle')) AND verify_optional_resource_property(
SELF, 'cutting edge angle type')) AND
verify_rep_item_for_resource_property(SELF,
'cutting edge angle type', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
])) AND verify_optional_resource_property(SELF,
'tool included angle')) AND
verify_angle_measure_resource_property(SELF,
'tool included angle')) AND
verify_rep_type_for_resource_property(SELF,
'corner transitions', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_CUTTING_CORNER_REPRESENTATION'
])) AND verify_optional_resource_property(SELF,
'maximum side cutting depth')) AND
verify_length_measure_resource_property(SELF,
'maximum side cutting depth')) AND
verify_optional_resource_property(SELF,
'maximum end cutting depth')) AND
verify_length_measure_resource_property(SELF,
'maximum end cutting depth');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_cutting_corner_representation
SUBTYPE OF (representation);
WHERE
WR1: verify_required_rep_item(SELF, 'corner identity') AND
verify_count_measure_rep_item(SELF, 'corner identity');
WR2: NOT (SELF.name = 'chamfered corner') OR ((((
verify_required_rep_item(SELF, 'chamfer angle') AND
verify_angle_measure_rep_item(SELF, 'chamfer angle')) AND
verify_optional_rep_item(SELF, 'chamfer length')) AND
verify_length_measure_rep_item(SELF, 'chamfer length')) AND
verify_optional_rep_item(SELF, 'chamfer width')) AND
verify_length_measure_rep_item(SELF, 'chamfer width');
WR3: NOT (SELF.name = 'rounded corner') OR verify_required_rep_item(
SELF, 'radius') AND verify_length_measure_rep_item(SELF,
'radius');
WR4: NOT (SELF.name = 'profiled corner') OR (1 = SIZEOF(QUERY (prep <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| ((((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE'
IN TYPEOF(prep.definition)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
IN TYPEOF(prep.definition))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
IN TYPEOF(prep.definition))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
IN TYPEOF(prep.definition))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
IN TYPEOF(prep.definition))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE' IN
TYPEOF(prep.definition))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE' IN
TYPEOF(prep.definition)))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_dwell_time_representation
SUBTYPE OF (representation);
WHERE
WR1: SELF.name IN [ 'dwell time', 'dwell revolution' ];
WR2: NOT (SELF.name = 'dwell time') OR verify_required_rep_item(SELF,
'dwell time') AND verify_time_measure_rep_item(SELF,
'dwell time');
WR3: NOT (SELF.name = 'dwell revolution') OR verify_required_rep_item(
SELF, 'dwell revolution') AND verify_count_measure_rep_item(
SELF, 'dwell revolution');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_execution_resource
SUBTYPE OF (action_resource);
WHERE
WR1: verify_optional_resource_property(SELF, 'feedrate') AND
verify_rep_type_for_resource_property(SELF, 'feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
]);
WR2: verify_optional_resource_property(SELF, 'spindle') AND
verify_rep_type_for_resource_property(SELF, 'spindle', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'
]);
WR3: verify_optional_resource_property(SELF, 'spindle power') AND
verify_rep_item_for_resource_property(SELF, 'spindle power',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
]);
WR4: verify_optional_resource_property(SELF, 'spindle torque') AND
verify_rep_item_for_resource_property(SELF, 'spindle torque',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
]);
WR5: verify_optional_resource_property(SELF, 'number of control axis')
AND verify_count_measure_resource_property(SELF,
'number of control axis');
WR6: verify_optional_resource_property(SELF,
'number of simultaneous axis') AND
verify_count_measure_resource_property(SELF,
'number of simultaneous axis');
WR7: verify_optional_resource_property(SELF, 'positioning accuracy')
AND verify_length_measure_resource_property(SELF,
'positioning accuracy');
WR8: verify_optional_resource_property(SELF, 'table indexing') AND
verify_enumeration_resource_property(SELF, 'table indexing',
[ 'required', 'not required' ]);
WR9: ((verify_optional_resource_property(SELF, 'table length') AND
verify_length_measure_resource_property(SELF, 'table length')
) AND verify_optional_resource_property(SELF, 'table width'))
AND verify_length_measure_resource_property(SELF,
'table width');
WR10: verify_optional_resource_property(SELF, 'axis travel') AND (0 =
SIZEOF(QUERY (prop <* get_resource_property(SELF,
'axis travel')| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
)| (1 <= SIZEOF(QUERY (it <* prep.representation.items| (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2))))))))));
WR11: ((((verify_optional_resource_property(SELF, 'work volume length')
AND verify_length_measure_resource_property(SELF,
'work volume length')) AND verify_optional_resource_property(
SELF, 'work volume width')) AND
verify_length_measure_resource_property(SELF,
'work volume width')) AND verify_optional_resource_property(
SELF, 'work volume height')) AND
verify_length_measure_resource_property(SELF,
'work volume height');
WR12: (0 = SIZEOF(get_resource_property(SELF, 'axis travel'))) OR ((0 =
SIZEOF(get_resource_property(SELF, 'work volume length')))
AND (0 = SIZEOF(get_resource_property(SELF,
'work volume width')))) AND (0 = SIZEOF(get_resource_property
(SELF, 'work volume height')));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_feature_process
SUBTYPE OF (machining_process_executable);
WHERE
WR1: (1 = SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'machining')))) AND (0 = SIZEOF(QUERY (act <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'machining') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_PROCESS'
IN TYPEOF(act)))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_feature_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_feature_sequence_relationship
SUBTYPE OF (machining_feature_relationship, sequential_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_feed_speed_representation
SUBTYPE OF (representation);
WHERE
WR1: SELF.name IN [ 'feed speed', 'feed per revolution',
'feed per tooth', 'relative speed' ];
WR2: NOT (SELF.name = 'feed speed') OR verify_required_rep_item(SELF,
'feed speed') AND verify_linear_speed_measure_rep_item(SELF,
'feed speed');
WR3: NOT (SELF.name = 'feed per revolution') OR
verify_required_rep_item(SELF, 'feed per revolution') AND (0
= SIZEOF(QUERY (it <* SELF.items| (it.name =
'feed per revolution') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)))));
WR4: NOT (SELF.name = 'feed per tooth') OR verify_required_rep_item(
SELF, 'feed per tooth') AND (0 = SIZEOF(QUERY (it <* SELF.
items| (it.name = 'feed per tooth') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)))));
WR5: NOT (SELF.name = 'relative speed') OR verify_required_rep_item(
SELF, 'relative speed') AND verify_ratio_measure_rep_item(
SELF, 'relative speed');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_final_feature_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_fixture_usage
SUBTYPE OF (action_method);
WHERE
WR1: (1 >= SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'fixture workpiece')))) AND (0 = SIZEOF(QUERY
(act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'fixture workpiece') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))));
WR2: verify_optional_action_property(SELF, 'mount reference') AND
verify_rep_item_for_action_property(SELF, 'mount reference',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
]);
WR3: verify_optional_action_property(SELF, 'workpiece reference') AND
verify_rep_item_for_action_property(SELF,
'workpiece reference', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_functions
SUBTYPE OF (action_method);
WHERE
WR1: NOT (SELF.description = 'milling') OR (((((((((
verify_required_action_property(SELF, 'coolant') AND
verify_enumeration_action_property(SELF, 'coolant', [
'coolant on', 'coolant off' ])) AND
verify_optional_action_property(SELF, 'coolant pressure'))
AND verify_pressure_measure_action_property(SELF,
'coolant pressure')) AND verify_optional_action_property(SELF
, 'mist')) AND verify_enumeration_action_property(SELF,
'mist', [ 'mist on', 'mist off' ])) AND
verify_optional_action_property(SELF,
'through spindle coolant')) AND
verify_enumeration_action_property(SELF,
'through spindle coolant', [ 'through spindle coolant on',
'through spindle coolant off' ])) AND
verify_optional_action_property(SELF,
'through spindle pressure')) AND
verify_pressure_measure_action_property(SELF,
'through spindle pressure')) AND (0 = SIZEOF(QUERY (prop <*
get_action_property(SELF, 'axis constraints')| NOT (0 <
SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 <= SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' IN
TYPEOF(it)))))))))));
WR2: NOT (SELF.description = 'turning') OR ((((((((((
verify_required_action_property(SELF, 'coolant') AND
verify_enumeration_action_property(SELF, 'coolant', [
'coolant on', 'coolant off' ])) AND
verify_optional_action_property(SELF, 'coolant type')) AND
verify_enumeration_action_property(SELF, 'coolant type', [
'flood', 'mist', 'through tool' ])) AND
verify_optional_action_property(SELF, 'coolant pressure'))
AND verify_pressure_measure_action_property(SELF,
'coolant pressure')) AND verify_optional_action_property(SELF
, 'tail stock')) AND verify_enumeration_action_property(SELF,
'tail stock', [ 'tail stock used', 'tail stock not used' ]))
AND verify_optional_action_property(SELF, 'steady rest'))
AND verify_enumeration_action_property(SELF, 'steady rest', [
'steady rest used', 'steady rest not used' ])) AND
verify_optional_action_property(SELF, 'follow rest')) AND
verify_enumeration_action_property(SELF, 'follow rest', [
'follow rest used', 'follow rest not used' ]);
WR3: NOT (SELF.description IN [ 'milling', 'turning' ]) OR (((((
verify_optional_action_property(SELF, 'axis clamping') AND (0
= SIZEOF(QUERY (prop <* get_action_property(SELF,
'axis clamping')| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (1 = SIZEOF(QUERY (it <* prep.representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element))) AND (0 = SIZEOF(QUERY (ie <* it
.item_element| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(ie))))))))))))))) AND
verify_optional_action_property(SELF, 'chip removal')) AND
verify_enumeration_action_property(SELF, 'chip removal', [
'chip removal on', 'chip removal off' ])) AND
verify_optional_action_property(SELF, 'oriented spindle stop'
)) AND verify_rep_item_for_action_property(SELF,
'oriented spindle stop', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_MODEL_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_MODEL'
]);
WR4: verify_optional_action_property(SELF, 'other functions');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_functions_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_machine_usage
SUBTYPE OF (action_method);
WHERE
WR1: (1 >= SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'machine usage')))) AND (0 = SIZEOF(QUERY (act
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'machine usage') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_nc_function
SUBTYPE OF (machining_process_executable);
WHERE
WR1: SELF.description IN [ 'display message', 'optional stop',
'program stop', 'set mark', 'wait for mark',
'exchange pallet', 'index pallet', 'index table', 'load tool'
, 'unload tool', 'legacy function' ];
WR2: NOT (SELF.description = 'display message') OR
verify_required_action_property(SELF, 'message text') AND
verify_descriptive_action_property(SELF, 'message text');
WR3: NOT (SELF.description = 'wait for mark') OR
verify_required_action_property(SELF, 'channel');
WR4: NOT (SELF.description = 'index pallet') OR
verify_required_action_property(SELF, 'pallet index') AND
verify_count_measure_action_property(SELF, 'pallet index');
WR5: NOT (SELF.description = 'index table') OR
verify_required_action_property(SELF, 'table index') AND
verify_count_measure_action_property(SELF, 'table index');
WR6: NOT (SELF.description = 'load tool') OR (1 = SIZEOF(QUERY (mt <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL'
IN TYPEOF(mt)))));
WR7: NOT (SELF.description = 'unload tool') OR (1 >= SIZEOF(QUERY (mt
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL'
IN TYPEOF(mt)))));
WR8: NOT (SELF.description = 'legacy function') OR
verify_required_action_property(SELF, 'function text') AND
verify_descriptive_action_property(SELF, 'function text');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_offset_vector_representation
SUBTYPE OF (representation);
WHERE
WR1: (1 = SIZEOF(QUERY (it <* SELF.items| (it.name = 'translate'))))
AND (0 = SIZEOF(QUERY (it <* SELF.items| (it.name =
'translate') AND NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element))) AND (SIZEOF(it.item_element) =
3)) AND (0 = SIZEOF(QUERY (ie <* it.item_element| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
IN TYPEOF(ie)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(ie))))))))));
WR2: (1 >= SIZEOF(QUERY (it <* SELF.items| (it.name = 'rotate')))) AND
(0 = SIZEOF(QUERY (it <* SELF.items| (it.name = 'rotate') AND
NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element))) AND (SIZEOF(it.item_element) =
3)) AND (0 = SIZEOF(QUERY (ie <* it.item_element| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
IN TYPEOF(ie)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(ie))))))))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_operation
SUBTYPE OF (action_method);
WHERE
WR1: verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH'
]);
WR2: verify_optional_action_property(SELF, 'tool direction') AND
verify_rep_type_for_action_property(SELF, 'tool direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_DIRECTION_REPRESENTATION'
]);
WR3: ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_RAPID_MOVEMENT'
IN TYPEOF(SELF)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOUCH_PROBING'
IN TYPEOF(SELF))) OR (((((((verify_optional_action_property(
SELF, 'retract plane') AND
verify_length_measure_action_property(SELF, 'retract plane'))
AND verify_optional_action_property(SELF, 'cut start point')
) AND verify_rep_item_for_action_property(SELF,
'cut start point', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
])) AND (1 = SIZEOF(QUERY (mt <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL'
IN TYPEOF(mt)))))) AND verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'
])) AND verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_operation_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_operator_instruction
SUBTYPE OF (action_method_with_associated_documents);
WHERE
WR1: EXISTS(SELF.description) OR (0 < SIZEOF(SELF.documents));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_operator_instruction_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_body_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_branch_relationship
SUBTYPE OF (machining_process_body_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_concurrent_relationship
SUBTYPE OF (machining_process_body_relationship, concurrent_action_method
);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_executable
SUBTYPE OF (process_operation);
WHERE
WR1: NOT (0 = SIZEOF (TYPEOF (SELF) *
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_NC_FUNCTION',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKINGSTEP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKPLAN']
)) OR
(SELF.description IN ['assignment', 'if statement',
'non-sequential', 'parallel', 'selective',
'while statement', 'setup instructions']);
WR2: NOT (SELF.description = 'assignment') OR
((verify_required_action_property (SELF, 'lvalue')) AND
(verify_rep_item_for_action_property (SELF, 'lvalue',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'])) AND
(verify_required_action_property (SELF, 'rvalue')) AND
(verify_rep_item_for_action_property (SELF, 'rvalue',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'])));
WR3: NOT (SELF.description = 'if statement') OR
((verify_required_action_property (SELF, 'condition')) AND
(verify_rep_item_for_action_property (SELF, 'condition',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'])) AND
(verify_required_relating_amr_with_name (SELF, 'true branch',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'true branch',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE'])) AND
(verify_optional_relating_amr_with_name (SELF, 'false branch',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'false branch',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR4: NOT (SELF.description = 'while statement') OR
((verify_required_action_property (SELF, 'condition')) AND
(verify_rep_item_for_action_property (SELF, 'condition',
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'])) AND
(verify_required_relating_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR5: NOT (SELF.description = 'parallel') OR
((2 <= get_count_of_relating_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP']))
AND
(verify_related_type_for_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR6: NOT (SELF.description = 'non-sequential') OR
((2 <= get_count_of_relating_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR7: NOT (SELF.description = 'selective') OR
((2 <= get_count_of_relating_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR8: NOT (SELF.description = 'setup instructions') OR
((verify_related_type_for_amr (SELF,
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATOR_INSTRUCTION_RELATIONSHIP'],
['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATOR_INSTRUCTION']))
);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_model
SUBTYPE OF (action_method);
WHERE
WR1: verify_required_action_property(SELF, 'initialization data') AND
verify_descriptive_action_property(SELF,
'initialization data');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_model_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_property
SUBTYPE OF (action_property);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_process_sequence_relationship
SUBTYPE OF (machining_process_body_relationship, sequential_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_project
SUBTYPE OF (product);
WHERE
WR1: 0 = SIZEOF(QUERY (pdf <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'
)| NOT (1 >= SIZEOF(QUERY (poa <* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS'
)| (poa.role.name = 'owner'))))));
WR2: 0 = SIZEOF(QUERY (pdf <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'
)| NOT (1 >= SIZEOF(QUERY (dta <* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS'
)| (dta.role.name = 'release date'))))));
WR3: 0 = SIZEOF(QUERY (pdf <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'
)| NOT (0 = SIZEOF(QUERY (pd <* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| NOT (1 = SIZEOF(QUERY (ppa <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PRODUCT_ASSOCIATION.DEFINED_PRODUCT'
)| (ppa.process.name = 'machining') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKPLAN'
IN TYPEOF(ppa.process.chosen_method))))))))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_project_workpiece_relationship
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_rapid_movement
SUBTYPE OF (machining_operation);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_setup
SUBTYPE OF (product);
WHERE
WR1: 0 = SIZEOF(QUERY (pdf <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'
)| NOT (0 = SIZEOF(QUERY (pd <* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| NOT (1 = SIZEOF(QUERY (prop <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (prop.name = 'security plane')))))))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_setup_workpiece_relationship
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_spindle_speed_representation
SUBTYPE OF (representation);
WHERE
WR1: SELF.name IN [ 'spindle speed', 'cutting speed', 'relative speed'
];
WR2: NOT (SELF.name = 'spindle speed') OR verify_required_rep_item(SELF
, 'rotational speed') AND
verify_rotary_speed_measure_rep_item(SELF, 'rotational speed'
);
WR3: NOT (SELF.name = 'cutting speed') OR ((verify_required_rep_item(
SELF, 'surface speed') AND
verify_linear_speed_measure_rep_item(SELF, 'surface speed'))
AND verify_optional_rep_item(SELF, 'maximum rotational speed'
)) AND verify_rotary_speed_measure_rep_item(SELF,
'maximum rotational speed');
WR4: NOT (SELF.name = 'relative speed') OR verify_required_rep_item(
SELF, 'relative speed') AND verify_ratio_measure_rep_item(
SELF, 'relative speed');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_strategy
SUBTYPE OF (action_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_strategy_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_technology
SUBTYPE OF (action_method);
WHERE
WR1: verify_optional_action_property(SELF, 'feedrate') AND
verify_rep_type_for_action_property(SELF, 'feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
]);
WR2: verify_optional_action_property(SELF, 'feedrate reference') AND
verify_enumeration_action_property(SELF, 'feedrate reference'
, [ 'tool center point', 'cutter contact point' ]);
WR3: NOT (SELF.description = 'milling') OR ((((((((
verify_optional_action_property(SELF, 'spindle') AND
verify_rep_type_for_action_property(SELF, 'spindle', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'
])) AND verify_optional_action_property(SELF,
'synchronize spindle with feed')) AND
verify_enumeration_action_property(SELF,
'synchronize spindle with feed', [ 'synchronized',
'not synchronized' ])) AND verify_optional_action_property(
SELF, 'inhibit feedrate override')) AND
verify_enumeration_action_property(SELF,
'inhibit feedrate override', [ 'override allowed',
'override not allowed' ])) AND
verify_optional_action_property(SELF,
'inhibit spindle override')) AND
verify_enumeration_action_property(SELF,
'inhibit spindle override', [ 'override allowed',
'override not allowed' ])) AND verify_optional_relating_amr(
SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'
]);
WR4: NOT (SELF.description = 'milling') OR (
verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
]) OR verify_required_action_property(SELF, 'spindle') AND
verify_rep_name_for_action_property(SELF, 'spindle', [
'spindle speed', 'cutting speed' ]));
WR5: NOT (SELF.description = 'milling') OR (
verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
]) OR verify_required_action_property(SELF, 'feedrate') AND
verify_rep_name_for_action_property(SELF, 'feedrate', [
'feed speed', 'feed per tooth' ]));
WR6: NOT (SELF.description = 'turning') OR ((((((((((
verify_optional_action_property(SELF, 'spindle') AND
verify_rep_type_for_action_property(SELF, 'spindle', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF, 'spindle',
[ 'spindle speed', 'cutting speed' ])) AND
verify_rep_name_for_action_property(SELF, 'feedrate', [
'feed speed', 'feed per revolution' ])) AND
verify_optional_action_property(SELF,
'synchronize spindle with z feed')) AND
verify_enumeration_action_property(SELF,
'synchronize spindle with z feed', [ 'synchronized',
'not synchronized' ])) AND verify_optional_action_property(
SELF, 'inhibit feedrate override')) AND
verify_enumeration_action_property(SELF,
'inhibit feedrate override', [ 'override allowed',
'override not allowed' ])) AND
verify_optional_action_property(SELF,
'inhibit spindle override')) AND
verify_enumeration_action_property(SELF,
'inhibit spindle override', [ 'override allowed',
'override not allowed' ])) AND verify_optional_relating_amr(
SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_technology_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_tool
SUBTYPE OF (action_resource);
WHERE
WR1: NOT (SELF.kind.name = 'milling cutting tool') OR ((((((((((0 <=
SIZEOF(QUERY (arr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_CUTTING_COMPONENT'
IN TYPEOF(arr.related_resource)) AND (arr.related_resource.
kind.name = 'milling cutting edge')))) AND
verify_optional_tool_body_item(SELF,
'overall assembly length')) AND
verify_length_measure_tool_body_item(SELF,
'overall assembly length')) AND
verify_optional_tool_body_item(SELF,
'effective cutting diameter')) AND
verify_length_measure_tool_body_item(SELF,
'effective cutting diameter')) AND
verify_optional_tool_body_item(SELF, 'maximum depth of cut'))
AND verify_length_measure_tool_body_item(SELF,
'maximum depth of cut')) AND verify_optional_tool_body_item(
SELF, 'hand of cut')) AND verify_enumeration_tool_body_item(
SELF, 'hand of cut', [ 'left', 'right', 'neutral' ])) AND
verify_optional_tool_body_item(SELF, 'coolant through tool'))
AND verify_enumeration_tool_body_item(SELF,
'coolant through tool', [ 'supported', 'not supported' ]);
WR2: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'counterbore', 'countersink', 'spade drill',
'spot drill', 'step drill', 'tapered drill', 'twist drill',
'drill' ])) OR verify_optional_tool_body_item(SELF,
'point angle') AND verify_angle_measure_tool_body_item(SELF,
'point angle');
WR3: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'countersink')) OR ((
verify_optional_tool_body_item(SELF,
'minimum cutting diameter') AND
verify_length_measure_tool_body_item(SELF,
'minimum cutting diameter')) AND
verify_required_tool_body_item(SELF, 'maximum usable length')
) AND verify_length_measure_tool_body_item(SELF,
'maximum usable length');
WR4: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'tapered drill')) OR
verify_required_tool_body_item(SELF, 'taper angle') AND
verify_angle_measure_tool_body_item(SELF, 'taper angle');
WR5: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'step drill')) OR ((
verify_required_tool_body_item(SELF, 'step diameters') AND
verify_rep_item_for_tool_body(SELF, 'step diameters', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
])) AND verify_required_tool_body_item(SELF, 'step lengths')
) AND verify_rep_item_for_tool_body(SELF, 'step lengths', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
]);
WR6: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'ballnose endmill', 'bullnose endmill',
'dovetail mill', 'endmill', 'facemill', 'profiled endmill',
'shoulder mill', 'tee slot mill', 'thread mill', 'side mill'
])) OR ((verify_optional_tool_body_item(SELF,
'number of effective teeth') AND
verify_count_measure_tool_body_item(SELF,
'number of effective teeth')) AND
verify_optional_tool_body_item(SELF, 'edge radius')) AND
verify_length_measure_tool_body_item(SELF, 'edge radius');
WR7: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'ballnose endmill', 'bullnose endmill',
'endmill', 'facemill', 'profiled endmill' ])) OR
verify_optional_tool_body_item(SELF,
'tool cutting edge angle') AND
verify_angle_measure_tool_body_item(SELF,
'tool cutting edge angle');
WR8: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'ballnose endmill')) OR
verify_ballnose_endmill_dimensions(SELF);
WR9: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'bullnose endmill')) OR
verify_bullnose_endmill_dimensions(SELF);
WR10: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'tee slot mill')) OR
verify_optional_tool_body_item(SELF, 'cutting width') AND
verify_length_measure_tool_body_item(SELF, 'cutting width');
WR11: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'dovetail mill')) OR
verify_optional_tool_body_item(SELF, 'included angle') AND
verify_angle_measure_tool_body_item(SELF, 'included angle');
WR12: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'side mill')) OR verify_optional_tool_body_item
(SELF, 'cutter width') AND
verify_length_measure_tool_body_item(SELF, 'cutter width');
WR13: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'thread mill', 'tapping tool',
'combined drill and tap' ])) OR ((((
verify_required_tool_body_item(SELF, 'thread form type') AND
verify_rep_item_for_tool_body(SELF, 'thread form type', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
])) AND verify_required_tool_body_item(SELF, 'thread size'))
AND verify_length_measure_tool_body_item(SELF, 'thread size'
)) AND verify_required_tool_body_item(SELF, 'thread pitch'))
AND verify_length_measure_tool_body_item(SELF, 'thread pitch'
);
WR14: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'tapping tool', 'combined drill and tap' ]))
OR verify_required_tool_body_item(SELF, 'taper thread count'
) AND verify_count_measure_tool_body_item(SELF,
'taper thread count');
WR15: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'reamer', 'combined drill and reamer',
'tapered reamer' ])) OR verify_required_tool_body_item(SELF,
'taper length') AND verify_length_measure_tool_body_item(SELF
, 'taper length');
WR16: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'tapered reamer')) OR
verify_required_tool_body_item(SELF, 'taper angle') AND
verify_angle_measure_tool_body_item(SELF, 'taper angle');
WR17: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description IN [ 'combined drill and reamer',
'combined drill and tap' ])) OR
verify_required_tool_body_item(SELF, 'drill length') AND
verify_length_measure_tool_body_item(SELF, 'drill length');
WR18: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'boring tool')) OR
verify_required_tool_body_item(SELF, 'retract movement') AND
verify_enumeration_tool_body_item(SELF, 'retract movement', [
'permitted', 'forbidden' ]);
WR19: NOT ((SELF.kind.name = 'milling cutting tool') AND (SELF.
description = 'user defined milling tool')) OR ((((((((((
verify_optional_tool_body_item(SELF, 'tool description') AND
verify_rep_item_for_tool_body(SELF, 'tool description', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
])) AND verify_optional_tool_body_item(SELF, 'corner radius'
)) AND verify_length_measure_tool_body_item(SELF,
'corner radius')) AND verify_optional_tool_body_item(SELF,
'corner radius center horizontal')) AND
verify_length_measure_tool_body_item(SELF,
'corner radius center horizontal')) AND
verify_optional_tool_body_item(SELF,
'corner radius center vertical')) AND
verify_length_measure_tool_body_item(SELF,
'corner radius center vertical')) AND
verify_optional_tool_body_item(SELF, 'taper angle')) AND
verify_angle_measure_tool_body_item(SELF, 'taper angle')) AND
verify_optional_tool_body_item(SELF, 'tip outer angle')) AND
verify_angle_measure_tool_body_item(SELF, 'tip outer angle')
;
WR20: NOT (SELF.kind.name = 'turning cutting tool') OR (((((((((((
verify_required_tool_body_item(SELF, 'functional length') AND
verify_length_measure_tool_body_item(SELF,
'functional length')) AND verify_required_tool_body_item(SELF
, 'f dimension')) AND verify_length_measure_tool_body_item(
SELF, 'f dimension')) AND verify_optional_tool_body_item(SELF
, 'minimum cutting diameter')) AND
verify_length_measure_tool_body_item(SELF,
'minimum cutting diameter')) AND
verify_optional_tool_body_item(SELF, 'a dimension on f')) AND
verify_length_measure_tool_body_item(SELF,
'a dimension on f')) AND verify_optional_tool_body_item(SELF,
'a dimension on lf')) AND
verify_length_measure_tool_body_item(SELF,
'a dimension on lf')) AND verify_optional_tool_body_item(SELF
, 'hand of cut')) AND verify_enumeration_tool_body_item(SELF,
'hand of cut', [ 'left', 'right', 'neutral' ])) AND (0 <=
SIZEOF(QUERY (arr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_CUTTING_COMPONENT'
IN TYPEOF(arr.related_resource)) AND (arr.related_resource.
kind.name = 'turning cutting edge'))));
WR21: NOT ((SELF.kind.name = 'turning cutting tool') AND (SELF.
description = 'turning threading tool')) OR ((((((((
verify_required_tool_body_item(SELF, 'thread pitch') AND
verify_length_measure_tool_body_item(SELF, 'thread pitch'))
AND verify_required_tool_body_item(SELF, 'thread hand')) AND
verify_enumeration_tool_body_item(SELF, 'thread hand', [
'left', 'right' ])) AND verify_required_tool_body_item(SELF,
'thread type')) AND verify_enumeration_tool_body_item(SELF,
'thread type', [ 'internal', 'external' ])) AND
verify_required_tool_body_item(SELF, 'thread profile')) AND
verify_enumeration_tool_body_item(SELF, 'thread profile', [
'full', 'partial' ])) AND verify_required_tool_body_item(SELF
, 'thread form type')) AND verify_rep_item_for_tool_body(SELF
, 'thread form type', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
]);
WR22: NOT ((SELF.kind.name = 'turning cutting tool') AND (SELF.
description = 'grooving tool')) OR ((((((((
verify_required_tool_body_item(SELF, 'cutting width') AND
verify_length_measure_tool_body_item(SELF, 'cutting width'))
AND verify_required_tool_body_item(SELF,
'maximum grooving depth')) AND
verify_length_measure_tool_body_item(SELF,
'maximum grooving depth')) AND verify_optional_tool_body_item
(SELF, 'corner radius')) AND
verify_length_measure_tool_body_item(SELF, 'corner radius'))
AND verify_optional_tool_body_item(SELF,
'maximum axial grooving diameter')) AND
verify_length_measure_tool_body_item(SELF,
'maximum axial grooving diameter')) AND
verify_optional_tool_body_item(SELF,
'minimum axial grooving diameter')) AND
verify_length_measure_tool_body_item(SELF,
'minimum axial grooving diameter');
WR23: NOT ((SELF.kind.name = 'turning cutting tool') AND (SELF.
description = 'knurling tool')) OR ((((((
verify_required_tool_body_item(SELF, 'knurl pattern') AND
verify_enumeration_tool_body_item(SELF, 'knurl pattern', [
'straight', 'diagonal', 'diamond' ])) AND
verify_optional_tool_body_item(SELF, 'cutting length')) AND
verify_length_measure_tool_body_item(SELF, 'cutting length'))
AND verify_optional_tool_body_item(SELF, 'cutting angle'))
AND verify_angle_measure_tool_body_item(SELF, 'cutting angle'
)) AND verify_optional_tool_body_item(SELF, 'cutting pitch'))
AND verify_length_measure_tool_body_item(SELF,
'cutting pitch');
WR24: NOT ((SELF.kind.name = 'turning cutting tool') AND (SELF.
description = 'user defined turning tool')) OR
verify_required_tool_body_item(SELF, 'tool identifier') AND
verify_rep_item_for_tool_body(SELF, 'tool identifier', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
]);
WR25: 1 >= SIZEOF(QUERY (rar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES'
)| (1 = SIZEOF(rar.operations)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_USAGE'
IN TYPEOF(rar\action_resource_requirement.operations[1]))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_tool_body_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_tool_direction_representation
SUBTYPE OF (representation);
WHERE
WR1: SELF.name IN [ 'two axes', 'three axes', 'three axes tilted tool',
'five axes const tilt yaw', 'five axes var tilt yaw' ];
WR2: NOT (SELF.name = 'three axes tilted tool') OR
verify_required_rep_item(SELF, 'tool direction orientation')
AND (0 = SIZEOF(QUERY (it <* SELF.items| (it.name =
'tool direction orientation') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' IN
TYPEOF(it)))));
WR3: NOT (SELF.name = 'five axes const tilt yaw') OR ((
verify_required_rep_item(SELF, 'tool direction tilt angle')
AND verify_angle_measure_rep_item(SELF,
'tool direction tilt angle')) AND verify_required_rep_item(
SELF, 'tool direction yaw angle')) AND
verify_angle_measure_rep_item(SELF,
'tool direction yaw angle');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_tool_usage
SUBTYPE OF (action_method);
WHERE
WR1: verify_optional_action_property(SELF, 'tool position') AND
verify_descriptive_action_property(SELF, 'tool position');
WR2: verify_optional_action_property(SELF, 'tool carousel') AND
verify_descriptive_action_property(SELF, 'tool carousel');
WR3: (1 >= SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'tool usage')))) AND (0 = SIZEOF(QUERY (act <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'tool usage') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))));
WR4: verify_optional_action_property(SELF, 'gage placement') AND
verify_rep_item_for_action_property(SELF, 'gage placement', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
]);
WR5: verify_optional_action_property(SELF, 'tool end placement') AND
verify_rep_item_for_action_property(SELF,
'tool end placement', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_toolpath
SUBTYPE OF (action_method);
WHERE
WR1: SELF.description IN [ 'feedstop', 'axis trajectory',
'cutter location trajectory', 'cutter contact trajectory',
'approach lift path angle', 'approach lift path tangent',
'connect security plane', 'connect direct' ];
WR2: verify_optional_action_property(SELF, 'priority') AND
verify_enumeration_action_property(SELF, 'priority', [
'required', 'suggested' ]);
WR3: verify_optional_action_property(SELF, 'trajectory type') AND
verify_enumeration_action_property(SELF, 'trajectory type', [
'approach', 'lift', 'connect', 'non-contact', 'contact',
'trajectory path' ]);
WR4: verify_optional_action_property(SELF, 'speed profile') AND (0 =
SIZEOF(QUERY (prop <* get_action_property(SELF,
'speed profile')| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SPEED_PROFILE_REPRESENTATION'
IN TYPEOF(prep.representation))))))));
WR5: verify_optional_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'
]) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'
]);
WR6: verify_optional_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
]) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS'
]);
WR7: NOT (SELF.description IN [ 'axis trajectory',
'cutter location trajectory', 'cutter contact trajectory' ])
OR verify_optional_action_property(SELF, 'direction') AND
verify_enumeration_action_property(SELF, 'direction', [
'beginning to end', 'end to beginning' ]);
WR8: NOT (SELF.description = 'connect security plane') OR ((
verify_optional_action_property(SELF, 'up direction') AND
verify_rep_item_for_action_property(SELF, 'up direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'down direction'))
AND verify_rep_item_for_action_property(SELF,
'down direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]);
WR9: NOT (SELF.description = 'feedstop') OR
verify_required_action_property(SELF, 'dwell') AND
verify_time_measure_action_property(SELF, 'dwell');
WR10: NOT (SELF.description = 'axis trajectory') OR
verify_required_action_property(SELF, 'axis commands') AND (0
= SIZEOF(QUERY (prop <* get_action_property(SELF,
'axis commands')| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (1 <= SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
IN TYPEOF(it)))))))))));
WR11: NOT (SELF.description IN [ 'approach lift path angle',
'approach lift path tangent' ]) OR ((
verify_required_action_property(SELF, 'fix point') AND
verify_rep_item_for_action_property(SELF, 'fix point', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
])) AND verify_optional_action_property(SELF,
'fix point direction')) AND
verify_rep_item_for_action_property(SELF,
'fix point direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]);
WR12: NOT (SELF.description = 'approach lift path angle') OR ((
verify_required_action_property(SELF, 'angle') AND
verify_angle_measure_action_property(SELF, 'angle')) AND
verify_required_action_property(SELF, 'bend distance')) AND
verify_length_measure_action_property(SELF, 'bend distance');
WR13: NOT (SELF.description = 'approach lift path tangent') OR
verify_required_action_property(SELF, 'radius') AND
verify_length_measure_action_property(SELF, 'radius');
WR14: NOT (SELF.description = 'cutter location trajectory') OR ((((((((
verify_required_action_property(SELF, 'basic curve') AND
verify_rep_item_for_action_property(SELF, 'basic curve', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
)) AND verify_optional_action_property(SELF, 'surface normal'
)) AND verify_rep_item_for_action_property(SELF,
'surface normal', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
)) AND verify_optional_action_property(SELF, 'tool axis'))
AND verify_rep_item_for_action_property(SELF, 'tool axis', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
)) AND verify_optional_action_property(SELF,
'path maximum deviation')) AND
verify_length_measure_action_property(SELF,
'path maximum deviation')) AND
verify_optional_action_property(SELF,
'tool axis maximum deviation')) AND
verify_angle_measure_action_property(SELF,
'tool axis maximum deviation');
WR15: NOT (SELF.description = 'cutter contact trajectory') OR ((((((((
verify_required_action_property(SELF, 'basic curve') AND
verify_rep_item_for_action_property(SELF, 'basic curve', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_PCURVE'
]) OR ((verify_required_action_property(SELF, 'basic curve')
AND verify_rep_item_for_action_property(SELF, 'basic curve',
[ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
])) AND verify_required_action_property(SELF,
'surface normal')) AND verify_rep_item_for_action_property(
SELF, 'surface normal', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
)) AND verify_optional_action_property(SELF, 'tool axis'))
AND verify_rep_item_for_action_property(SELF, 'tool axis', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
)) AND verify_optional_action_property(SELF, 'contact type'))
AND verify_enumeration_action_property(SELF, 'contact type',
[ 'side', 'front' ])) AND verify_optional_action_property(
SELF, 'path maximum deviation')) AND
verify_length_measure_action_property(SELF,
'path maximum deviation')) AND
verify_optional_action_property(SELF,
'tool axis maximum deviation')) AND
verify_angle_measure_action_property(SELF,
'tool axis maximum deviation');
WR16: NOT (SELF.description IN [ 'axis trajectory',
'cutter location trajectory', 'cutter contact trajectory' ])
OR ((((verify_optional_action_property(SELF,
'material removal depth') AND (
verify_length_measure_action_property(SELF,
'material removal depth') OR
verify_rep_item_for_action_property(SELF,
'material removal depth', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
))) AND verify_optional_action_property(SELF,
'material removal overcut')) AND (
verify_length_measure_action_property(SELF,
'material removal overcut') OR
verify_rep_item_for_action_property(SELF,
'material removal overcut', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' ]
))) AND verify_optional_action_property(SELF,
'material removal total volume')) AND
verify_rep_item_for_action_property(SELF,
'material removal total volume', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_toolpath_sequence_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_toolpath_speed_profile_representation
SUBTYPE OF (representation);
WHERE
WR1: 1 = SIZEOF(QUERY (it <* SELF.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
IN TYPEOF(it)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.description IN [ 'rapid' ])) OR (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2)));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_touch_probing
SUBTYPE OF (machining_operation);
WHERE
WR1: SELF.description IN [ 'feature complete probing',
'tool length probing', 'tool radius probing',
'workpiece probing', 'workpiece complete probing' ];
WR2: verify_required_action_property(SELF, 'security plane') AND
verify_rep_item_for_action_property(SELF, 'security plane', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'
]);
WR3: verify_required_action_property(SELF, 'measured offset') AND
verify_rep_item_for_action_property(SELF, 'measured offset',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
]);
WR4: NOT (SELF.description = 'workpiece probing') OR (((((((
verify_required_action_property(SELF, 'start position') AND
verify_rep_item_for_action_property(SELF, 'start position', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
])) AND (1 = SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'workpiece probing'))))) AND (0 = SIZEOF(QUERY
(act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'workpiece probing') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))))) AND verify_required_action_property(SELF
, 'direction')) AND verify_rep_item_for_action_property(SELF,
'direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_required_action_property(SELF, 'expected value'))
AND verify_rep_item_for_action_property(SELF,
'expected value', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'
])) AND verify_required_action_property(SELF, 'probe');
WR5: NOT (SELF.description = 'workpiece complete probing') OR ((((((1 =
SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'workpiece complete probing')))) AND (0 =
SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'workpiece complete probing') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))))) AND verify_required_action_property(SELF
, 'probing distance')) AND
verify_rep_item_for_action_property(SELF, 'probing distance',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'
])) AND verify_required_action_property(SELF, 'probe')) AND
verify_required_action_property(SELF, 'computed offset')) AND
verify_rep_type_for_action_property(SELF, 'computed offset',
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OFFSET_VECTOR_REPRESENTATION'
]);
WR6: NOT (SELF.description IN [ 'tool length probing',
'tool radius probing' ]) OR (((
verify_required_action_property(SELF, 'offset') AND
verify_rep_item_for_action_property(SELF, 'offset', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
])) AND verify_required_action_property(SELF, 'maximum wear'
)) AND verify_length_measure_action_property(SELF,
'maximum wear')) AND (1 = SIZEOF(QUERY (mt <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL'
IN TYPEOF(mt)))));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_twin_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_usage_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_workingstep
SUBTYPE OF (machining_process_executable);
WHERE
WR1: verify_optional_action_property(SELF, 'security plane') AND
verify_rep_item_for_action_property(SELF, 'security plane', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'
]);
WR2: NOT (SELF.description = 'machining') OR (((
verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'
]) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FINAL_FEATURE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'
])) AND verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION'
]);
WR3: NOT (SELF.description = 'turning') OR (((2 <=
get_count_of_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'
])) AND verify_required_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TURNING_TYPE_OPERATION'
]);
WR4: NOT (SELF.description IN [ 'machining', 'turning' ]) OR
verify_optional_in_process_geometry(SELF);
WR5: verify_optional_action_property(SELF, 'toolpath orientation') AND
verify_rep_item_for_action_property(SELF,
'toolpath orientation', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY machining_workplan
SUBTYPE OF (machining_process_executable);
WHERE
WR1: (1 <= get_count_of_relating_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'
])) AND verify_related_type_for_amr(SELF, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE'
]);
WR2: verify_optional_action_property(SELF, 'channel');
WR3: (1 >= SIZEOF(QUERY (act <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'setup')))) AND (0 = SIZEOF(QUERY (act <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD'
)| (act.name = 'setup') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF(act)))));
WR4: verify_optional_in_process_geometry(SELF);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY magnetic_flux_density_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAGNETIC_FLUX_DENSITY_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY magnetic_flux_density_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.tesla);
END_ENTITY; -- 10303-41: measure_schema
ENTITY magnetic_flux_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAGNETIC_FLUX_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY magnetic_flux_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.weber);
END_ENTITY; -- 10303-41: measure_schema
ENTITY make_from_usage_option
SUBTYPE OF (product_definition_usage);
ranking : INTEGER;
ranking_rationale : text;
quantity : measure_with_unit;
WHERE
WR1: NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
outer : closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY manifold_subsurface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR4: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_SHELL' IN
TYPEOF(cfss)))) = 0;
WR5: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(cfss\connected_face_sub_set.parent_face_set)) AND
(SIZEOF(QUERY (fac <* cfss\connected_face_sub_set.
parent_face_set\connected_face_set.cfs_faces| NOT
advanced_face_properties(fac))) = 0) OR (SIZEOF(QUERY (fac <*
cfss\connected_face_sub_set.parent_face_set\
connected_face_set.cfs_faces| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fac)))) = 0)))) = 0;
WR6: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| (SIZEOF(QUERY (fac <* cfss\
connected_face_set.cfs_faces| NOT advanced_face_properties(
fac))) = 0))) = 0;
WR7: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds
<* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBEDGE' IN
TYPEOF(oe.edge_element))))) = 0))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds
<* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_end))))) = 0))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (bnds <* fcs.bounds| NOT (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' ] *
TYPEOF(bnds.bound)) = 1))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds
<* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1)))
= 0))) = 0))) = 0))) = 0;
WR11: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds
<* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT
(SIZEOF(QUERY (sc_ag <* oe.edge_element\edge_curve.
edge_geometry\surface_curve.associated_geometry| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(sc_ag)))) = 0))) = 0))) = 0))) = 0))) = 0;
WR12: SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONNECTED_FACE_SUB_SET'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\
connected_face_set.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN
TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds
<* fcs.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.
bound\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT (
SIZEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry
\polyline.points) >= 3))) = 0))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-521: aic_manifold_subsurface
ENTITY manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\
mapped_item.mapping_source.mapped_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(mr_it)))) > 0)))) = 0;
WR4: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (sh <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_SHELL',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_SHELL'
] * TYPEOF(sh)) = 1))) = 0))) = 0;
WR5: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE' IN
TYPEOF(fa)))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR msf_surface_check(fa\face_surface.
face_geometry)))) = 0))) = 0))) = 0;
WR7: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (bnds <* fa.bounds| NOT (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' ] *
TYPEOF(bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe_cv <* QUERY (oe
<* elp_fbnds\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE' ]
* TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1))
) = 0))) = 0)))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT msf_curve_check(oe.edge_element\edge_curve.
edge_geometry))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_end))))) = 0))) = 0)))) = 0))) =
0))) = 0;
WR12: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT ((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(oe.edge_element.edge_start\vertex_point.
vertex_geometry)) = 1) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(oe.edge_element.edge_end\vertex_point.
vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
= 0))) = 0;
WR14: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.
vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-509: aic_manifold_surface
ENTITY mapped_item
SUBTYPE OF (representation_item);
mapping_source : representation_map;
mapping_target : representation_item;
WHERE
WR1: acyclic_mapped_representation(SELF);
END_ENTITY; -- 10303-43: representation_schema
ENTITY marking
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((2 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 6)))) = 1))) = 1;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))
) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'special instructions'))) <= 1
))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'font name'))) <= 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'character height'))) <=
1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'character spacing')))
<= 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY mass_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MASS_UNIT' IN TYPEOF(
SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY mass_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 1.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY material_designation;
name : label;
definitions : SET [1:?] OF characterized_definition;
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_designation_characterization;
name : label;
description : text;
designation : material_designation;
property : characterized_material_property;
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_property
SUBTYPE OF (property_definition);
UNIQUE
UR1: SELF\property_definition.name, SELF\property_definition.definition;
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHARACTERIZED_OBJECT'
IN TYPEOF(SELF\property_definition.definition)) OR (SIZEOF(
bag_to_set(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)) - QUERY (temp <* bag_to_set(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATERIAL_PROPERTY_REPRESENTATION'
IN TYPEOF(temp)))) = 0);
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_property_representation
SUBTYPE OF (property_definition_representation);
dependent_environment : data_environment;
END_ENTITY; -- 10303-45: material_property_representation_schema
ENTITY mathematical_description;
described : maths_expression;
describing : STRING;
encoding : label;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_boolean_variable
SUBTYPE OF (maths_variable, boolean_variable);
WHERE
WR1: subspace_of_es(SELF\maths_variable.values_space, es_booleans);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_enum_literal
SUBTYPE OF (generic_literal);
lit_value : maths_enum_atom;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_function
ABSTRACT SUPERTYPE OF (ONEOF(finite_function, constant_function,
selector_function, elementary_function, restriction_function,
repackaging_function, reindexed_array_function,
series_composed_function, parallel_composed_function,
explicit_table_function, homogeneous_linear_function,
general_linear_function, b_spline_basis, b_spline_function,
rationalize_function, partial_derivative_function,
definite_integral_function, abstracted_expression_function,
expression_denoted_function, imported_point_function,
imported_curve_function, imported_surface_function,
imported_volume_function, application_defined_function))
SUBTYPE OF (generic_expression);
DERIVE
domain : tuple_space := derive_function_domain(SELF);
range : tuple_space := derive_function_range(SELF);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_integer_variable
SUBTYPE OF (maths_variable, int_numeric_variable);
WHERE
WR1: subspace_of_es(SELF\maths_variable.values_space, es_integers);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_real_variable
SUBTYPE OF (maths_variable, real_numeric_variable);
WHERE
WR1: subspace_of_es(SELF\maths_variable.values_space, es_reals);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_space
ABSTRACT SUPERTYPE OF (ONEOF(elementary_space, finite_integer_interval,
integer_interval_from_min, integer_interval_to_max,
finite_real_interval, real_interval_from_min, real_interval_to_max,
cartesian_complex_number_region, polar_complex_number_region,
finite_space, uniform_product_space, listed_product_space,
extended_tuple_space, function_space))
SUBTYPE OF (generic_expression);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_string_variable
SUBTYPE OF (maths_variable, string_variable);
WHERE
WR1: subspace_of_es(SELF\maths_variable.values_space, es_strings);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST OF maths_value;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maths_value_precision_qualifier;
precision_value : maths_value;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY maths_variable
SUBTYPE OF (generic_variable);
values_space : maths_space;
name : label;
WHERE
WR1: expression_is_constant(values_space);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY maximum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY measure_qualification;
name : label;
description : text;
qualified_measure : measure_with_unit;
qualifiers : SET [1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY (temp <* qualifiers| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRECISION_QUALIFIER'
IN TYPEOF(temp)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATHS_VALUE_PRECISION_QUALIFIER'
IN TYPEOF(temp)))) < 2;
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM'
IN TYPEOF(SELF\measure_qualification.qualified_measure));
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY measure_representation_item
SUBTYPE OF (representation_item, measure_with_unit);
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY measure_with_unit
SUPERTYPE OF (ONEOF(length_measure_with_unit, mass_measure_with_unit,
time_measure_with_unit, electric_current_measure_with_unit,
thermodynamic_temperature_measure_with_unit,
celsius_temperature_measure_with_unit,
amount_of_substance_measure_with_unit,
luminous_intensity_measure_with_unit, plane_angle_measure_with_unit,
solid_angle_measure_with_unit, area_measure_with_unit,
volume_measure_with_unit, ratio_measure_with_unit,
acceleration_measure_with_unit, capacitance_measure_with_unit,
electric_charge_measure_with_unit, conductance_measure_with_unit,
electric_potential_measure_with_unit, energy_measure_with_unit,
magnetic_flux_density_measure_with_unit, force_measure_with_unit,
frequency_measure_with_unit, illuminance_measure_with_unit,
inductance_measure_with_unit, luminous_flux_measure_with_unit,
magnetic_flux_measure_with_unit, power_measure_with_unit,
pressure_measure_with_unit, resistance_measure_with_unit,
velocity_measure_with_unit, absorbed_dose_measure_with_unit,
radioactivity_measure_with_unit, dose_equivalent_measure_with_unit));
value_component : measure_value;
unit_component : unit;
WHERE
WR1: valid_units(SELF);
END_ENTITY; -- 10303-41: measure_schema
ENTITY mechanical_design_and_draughting_relationship
SUBTYPE OF (definitional_representation_relationship_with_same_context);
SELF\representation_relationship.rep_1 :
mechanical_design_and_draughting_relationship_select;
SELF\representation_relationship.rep_2 :
mechanical_design_and_draughting_relationship_select;
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_MODEL'
IN TYPEOF(rep_2)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_MODEL'
IN TYPEOF(rep_1)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(rep_1)));
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
IN TYPEOF(rep_2)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
IN TYPEOF(rep_1)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(rep_1)));
WR3: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'
IN TYPEOF(rep_2)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'
IN TYPEOF(rep_1)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(rep_1)));
END_ENTITY; -- 10303-1315: mechanical_design_presentation_representation_with_draughting_mim
ENTITY mechanical_design_geometric_presentation_area
SUBTYPE OF (presentation_area);
SELF\representation.items : SET [1:?] OF
mechanical_design_geometric_presentation_area_items;
WHERE
WR1: SIZEOF(QUERY (it1 <* SELF.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it1)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(it1\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR2: SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it1)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(mi1\mapped_item.mapping_source.
mapped_representation)))| NOT (SIZEOF(QUERY (it2 <* pv\
mapped_item.mapping_source.mapped_representation\
representation.items| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT'
IN TYPEOF(it2)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it2)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_IMAGE_3D_WITH_SCALE'
IN TYPEOF(it2))) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(it2\mapped_item.mapping_source.
mapped_representation))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_IMAGE_3D_WITH_SCALE'
IN TYPEOF(it2)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
IN TYPEOF(it2\mapped_item.mapping_source.
mapped_representation)))) = 0))) = 0;
WR3: (SIZEOF(QUERY (ps <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (ps\presentation_size.size.size_in_x <= 0) OR (ps\
presentation_size.size.size_in_y <= 0))) = 0) AND (SIZEOF(
QUERY (ais <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (SIZEOF(QUERY (ps <* USEDIN(ais,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (ps\presentation_size.size.size_in_x <= 0) OR (ps\
presentation_size.size.size_in_y <= 0))) > 0))) = 0);
WR4: (SIZEOF(QUERY (ps <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(ps.size.placement)))) = 1) AND (SIZEOF(QUERY (ps
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(ps.size.placement)))) = 0) OR (SIZEOF(QUERY (ais
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (SIZEOF(QUERY (ps <* USEDIN(ais,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(ps.size.placement)))) = 1))) = 1) AND (SIZEOF(
QUERY (ais <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (SIZEOF(QUERY (ps <* USEDIN(ais,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
IN TYPEOF(ps.size.placement)))) = 0))) = 1);
END_ENTITY; -- 10303-517: aic_mechanical_design_geometric_presentation
ENTITY mechanical_design_geometric_presentation_representation
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF
mechanical_design_geometric_presentation_representation_items
;
WHERE
WR1: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
] * TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) = 1))) = 0;
WR2: SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(si\styled_item.item)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR3: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (pss <* psa.styles| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_STYLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
] * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psbc <* QUERY (psa <* si\
styled_item.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_STYLE_BY_CONTEXT'
IN TYPEOF(psa)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION'
] * TYPEOF(psbc\presentation_style_by_context.style_context))
= 1))) = 0))) = 0;
WR5: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ps <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_STYLE' IN
TYPEOF(pss)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(ps\point_style.marker_size)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ps\point_style.marker_colour)) = 1)))) = 0))) = 0
))) = 0;
WR6: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (cs <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(pss)))| NOT (((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(cs\curve_style.curve_colour)) = 1) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(cs\curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0)))
= 0;
WR7: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_SIDE_STYLE'
IN TYPEOF(ssu\surface_style_usage.style)))) = 0))) = 0))) =
0;
WR8: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sses <* ssu\
surface_style_usage.style\surface_side_style.styles| NOT (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_PARAMETER_LINE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_CONTROL_GRID'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SILHOUETTE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SEGMENTATION_CURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_FILL_AREA'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_BOUNDARY'
] * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sspl <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_PARAMETER_LINE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_colour)) = 1)) AND
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_width))) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_font)) = 1)))) = 0
))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sscg <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_CONTROL_GRID'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)
) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_width))) AND (SIZEOF(
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_font)) = 1)))) = 0)))
= 0))) = 0))) = 0;
WR11: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssh <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SILHOUETTE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sssh\surface_style_silhouette.style_of_silhouette))
AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette
\curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\
curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette
\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
WR12: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssc <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SEGMENTATION_CURVE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_colour)) = 1))
AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_width))) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_font)) = 1))))
= 0))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssbd <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_BOUNDARY'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-517: aic_mechanical_design_geometric_presentation
ENTITY mechanical_design_presentation_representation_with_draughting
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF camera_model_d3;
END_ENTITY; -- 10303-1315: mechanical_design_presentation_representation_with_draughting_mim
ENTITY mechanical_design_requirement_item_association
SUBTYPE OF (pmi_requirement_item_association);
SELF\pmi_requirement_item_association.requirement :
requirement_assignment;
END_ENTITY; -- 10303-1846: mechanical_design_features_and_requirements_mim
ENTITY mechanical_design_shaded_presentation_area
SUBTYPE OF (presentation_area);
SELF\representation.items : SET [1:?] OF
mechanical_design_shaded_presentation_area_items;
WHERE
WR1: SIZEOF(QUERY (it1 <* SELF.items| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT'
IN TYPEOF(it1)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(it1\mapped_item.mapping_source.
mapped_representation))))) = 0;
WR2: SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it1)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(mi1\mapped_item.mapping_source.
mapped_representation)))| NOT (SIZEOF(QUERY (it2 <* pv\
mapped_item.mapping_source.mapped_representation\
representation.items| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT'
IN TYPEOF(it2)) OR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it2)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_IMAGE_3D_WITH_SCALE'
IN TYPEOF(it2))) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(it2\mapped_item.mapping_source.
mapped_representation))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_IMAGE_3D_WITH_SCALE'
IN TYPEOF(it2)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'
IN TYPEOF(it2\mapped_item.mapping_source.
mapped_representation)))) = 0))) = 0;
WR3: (SIZEOF(QUERY (ps <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| NOT ((ps\presentation_size.size.size_in_x > 0) AND (ps\
presentation_size.size.size_in_y > 0)))) = 0) AND (SIZEOF(
QUERY (pset <* QUERY (ais <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SET'
IN TYPEOF(ais.in_set)))| (SIZEOF(QUERY (ps <* USEDIN(pset,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| NOT ((ps\presentation_size.size.size_in_x > 0) AND (ps\
presentation_size.size.size_in_y > 0)))) = 0))) = 0);
WR4: (SIZEOF(QUERY (psize <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(psize.size.placement)))) = 1) AND (SIZEOF(QUERY (
pset <* QUERY (ais <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SET'
IN TYPEOF(ais.in_set)))| (SIZEOF(QUERY (psize <* USEDIN(pset
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(psize.size.placement)))) = 0))) = 0);
WR5: SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it1)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_VIEW'
IN TYPEOF(mi1\mapped_item.mapping_source.
mapped_representation)))| NOT (SIZEOF(QUERY (ci <* pv\
mapped_item.mapping_source.mapped_representation\
representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_IMAGE_3D_WITH_SCALE'
IN TYPEOF(ci)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_MODEL_D3'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_MODEL_D3_WITH_HLHSR'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAMERA_MODEL_WITH_LIGHT_SOURCES'
] * TYPEOF(ci\mapped_item.mapping_source.mapping_origin)) =
1))) = 0))) = 0;
END_ENTITY; -- 10303-518: aic_mechanical_design_shaded_presentation
ENTITY mechanical_design_shaded_presentation_representation
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF
mechanical_design_shaded_presentation_representation_items;
WHERE
WR1: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'
] * TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) = 1))) = 0;
WR2: SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(si\styled_item.item)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR3: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (pss <* psa.styles| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_STYLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
] * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psbc <* QUERY (psa <* si\
styled_item.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_STYLE_BY_CONTEXT'
IN TYPEOF(psa)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION'
] * TYPEOF(psbc\presentation_style_by_context.style_context))
= 1))) = 0))) = 0;
WR5: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ps <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_STYLE' IN
TYPEOF(pss)))| NOT (((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MARKER_TYPE' IN
TYPEOF(ps\point_style.marker)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(ps\point_style.marker_size))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ps\point_style.marker_colour)) = 1)))) = 0))) = 0
))) = 0;
WR6: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (cs <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(pss)))| NOT (((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(cs\curve_style.curve_colour)) = 1) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(cs\curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0)))
= 0;
WR7: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_SIDE_STYLE'
IN TYPEOF(ssu\surface_style_usage.style)))) = 0))) = 0))) =
0;
WR8: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sses <* ssu\
surface_style_usage.style\surface_side_style.styles| NOT (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_PARAMETER_LINE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_CONTROL_GRID'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SILHOUETTE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SEGMENTATION_CURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_BOUNDARY'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_FILL_AREA'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_RENDERING'
] * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssfa <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_FILL_AREA'
IN TYPEOF(sses)))| NOT (SIZEOF(QUERY (fss <* ssfa\
surface_style_fill_area.fill_area.fill_styles| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILL_AREA_STYLE_COLOUR'
IN TYPEOF(fss)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(fss\fill_area_style_colour.fill_colour)) = 1))))
= 0))) = 0))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sspl <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_PARAMETER_LINE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_colour)) = 1)) AND
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_width))) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_font)) = 1) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_RENDERING'
IN TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style_rendering.
rendering_properties.rendered_colour)) = 1)))) = 0))) = 0)))
= 0))) = 0;
WR11: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sscg <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_CONTROL_GRID'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)
) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_width))) AND (SIZEOF(
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_font)) = 1) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_RENDERING'
IN TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style_rendering.
rendering_properties.rendered_colour)) = 1)))) = 0))) = 0)))
= 0))) = 0;
WR12: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssh <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SILHOUETTE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sssh\surface_style_silhouette.style_of_silhouette))
AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette
\curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\
curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette
\curve_style.curve_font)) = 1) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_RENDERING'
IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)
) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette
\curve_style_rendering.rendering_properties.rendered_colour))
= 1)))) = 0))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssc <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_SEGMENTATION_CURVE'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_colour)) = 1))
AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_width))) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_font)) = 1) OR
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_RENDERING'
IN TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style_rendering.
rendering_properties.rendered_colour)) = 1)))) = 0))) = 0)))
= 0))) = 0;
WR14: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssbd <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_BOUNDARY'
IN TYPEOF(sses)))| NOT ((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_colour)) = 1)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_width))) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_FONT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_CURVE_FONT'
] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style.curve_font)) = 1) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE_RENDERING'
IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary))
AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\
curve_style_rendering.rendering_properties.rendered_colour))
= 1)))) = 0))) = 0))) = 0))) = 0;
WR15: SIZEOF(QUERY (si <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles
| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssre <* QUERY (sses <*
ssu\surface_style_usage.style\surface_side_style.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_RENDERING'
IN TYPEOF(sses)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COLOUR_RGB',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_PRE_DEFINED_COLOUR'
] * TYPEOF(ssre\surface_style_rendering.surface_colour)) = 1
))) = 0))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-518: aic_mechanical_design_shaded_presentation
ENTITY mechanism_representation
SUBTYPE OF (representation);
SELF\representation.context_of_items : geometric_representation_context
;
SELF\representation.items : SET [1:?] OF
pair_representation_relationship;
represented_topology : kinematic_topology_representation_select;
DERIVE
represented_joints : SET [1:?] OF kinematic_joint := collect_joints(
items);
WHERE
WR1: ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KINEMATIC_TOPOLOGY_STRUCTURE'
IN TYPEOF(represented_topology)) AND (represented_joints :=:
represented_topology.items) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE'
IN TYPEOF(represented_topology)) AND (represented_joints :=:
get_kinematic_joints_from_oriented_joints(
represented_topology.items))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE'
IN TYPEOF(represented_topology)) AND (represented_joints :=:
get_kinematic_joints_from_kinematic_loops(
represented_topology.items));
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY mechanism_state_representation
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF pair_value;
represented_mechanism : mechanism_representation;
DERIVE
SELF\representation.context_of_items : geometric_representation_context
:= represented_mechanism.context_of_items;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY milling_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: verify_optional_action_property(SELF, 'overcut length') AND
verify_length_measure_action_property(SELF, 'overcut length')
;
WR2: verify_optional_relating_amr_with_name(SELF, 'approach', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'approach', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY'
]);
WR3: verify_optional_relating_amr_with_name(SELF, 'retract', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF, 'retract'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY'
]);
WR4: verify_optional_relating_amr_with_name(SELF, 'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MILLING_TYPE_STRATEGY'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY milling_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: NOT (SELF.description IN [ 'bidirectional',
'bidirectional contour', 'center milling',
'contour bidirectional', 'contour parallel', 'contour spiral'
, 'explicit', 'unidirectional' ]) OR ((
verify_optional_action_property(SELF, 'overlap ratio') AND
verify_ratio_measure_action_property(SELF, 'overlap ratio'))
AND verify_optional_action_property(SELF, 'multiple passes'))
AND verify_enumeration_action_property(SELF,
'multiple passes', [ 'multiple passes allowed',
'multiple passes not allowed' ]);
WR2: NOT (SELF.description = 'bidirectional') OR ((((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'stepover direction')) AND verify_enumeration_action_property
(SELF, 'stepover direction', [ 'left', 'right' ])) AND
verify_optional_action_property(SELF, 'connection strategy'))
AND verify_enumeration_action_property(SELF,
'connection strategy', [ 'straight line', 'lift shift plunge'
, 'degouge', 'loop back' ]);
WR3: NOT (SELF.description IN [ 'bidirectional contour',
'contour bidirectional' ]) OR ((((((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'stepover direction')) AND verify_enumeration_action_property
(SELF, 'stepover direction', [ 'left', 'right' ])) AND
verify_optional_action_property(SELF, 'rotation direction'))
AND verify_enumeration_action_property(SELF,
'rotation direction', [ 'clockwise', 'counterclockwise' ]))
AND verify_optional_action_property(SELF, 'spiral cutmode'))
AND verify_enumeration_action_property(SELF, 'spiral cutmode'
, [ 'climb', 'conventional' ]);
WR4: NOT (SELF.description IN [ 'contour parallel', 'contour spiral' ])
OR ((verify_optional_action_property(SELF,
'rotation direction') AND verify_enumeration_action_property(
SELF, 'rotation direction', [ 'clockwise', 'counterclockwise'
])) AND verify_optional_action_property(SELF, 'cutmode'))
AND verify_enumeration_action_property(SELF, 'cutmode', [
'climb', 'conventional' ]);
WR5: NOT (SELF.description = 'unidirectional') OR ((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'cutmode')) AND
verify_enumeration_action_property(SELF, 'cutmode', [ 'climb'
, 'conventional' ]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY minimum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY minus_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY minus_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY mod_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY model_geometric_view
SUBTYPE OF (characterized_item_within_representation);
SELF\characterized_item_within_representation.rep : draughting_model;
SELF\characterized_item_within_representation.item : camera_model;
END_ENTITY; -- 10303-1315: mechanical_design_presentation_representation_with_draughting_mim
ENTITY modified_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY modified_pattern
SUBTYPE OF (shape_aspect);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPLICATE_FEATURE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INSTANCED_FEATURE'
] * TYPEOF(fcr.related_shape_aspect.of_shape.definition)) >=
1) AND (fcr.description = 'base shape'))) = 1;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
] * TYPEOF(fcr.related_shape_aspect.of_shape.definition)) =
1) AND (fcr.description = 'base pattern'))) = 1;
WR3: SIZEOF(QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (SIZEOF(QUERY (msar <* USEDIN(sar.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| ((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATTERN_OFFSET_MEMBERSHIP'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATTERN_OMIT_MEMBERSHIP'
] * TYPEOF(sar)) = 1) AND (sar.description =
'modified pattern')) AND (sar :<>: msar))) >= 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY mult_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY multi_language_attribute_assignment
SUBTYPE OF (attribute_value_assignment);
items : SET [1:?] OF multi_language_attribute_item;
DERIVE
translation_language : language := language_indication[1]\
attribute_classification_assignment.
assigned_class;
INVERSE
language_indication : SET [1:1] OF attribute_language_assignment FOR
items;
WHERE
WR1: SELF\attribute_value_assignment.role.name = 'alternate language';
WR2: SIZEOF(QUERY (ala <* language_indication| (ala\
attribute_classification_assignment.attribute_name =
'attribute_value') AND (ala\
attribute_classification_assignment.role.name = 'translated')
)) = 1;
WR3: SELF\attribute_value_assignment.attribute_name <> '';
WR4: SIZEOF(QUERY (ci <* items| (SIZEOF(QUERY (ata <* USEDIN(ci,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS'
)| (ata\attribute_value_assignment.attribute_name = SELF\
attribute_value_assignment.attribute_name) AND (ata.
translation_language :=: translation_language))) > 1))) = 0;
WR5: SIZEOF(QUERY (ci <* items| (SIZEOF(QUERY (ata <* USEDIN(ci,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS'
)| ((ata\attribute_classification_assignment.role.name =
'primary') AND (ata\attribute_classification_assignment.
attribute_name = SELF\attribute_value_assignment.
attribute_name)) AND (ata\attribute_classification_assignment
.assigned_class :=: translation_language))) > 0))) = 0;
END_ENTITY; -- 10303-1105: multi_linguism_mim
ENTITY multi_level_reference_designator
SUBTYPE OF (assembly_component_usage);
location : LIST [1:?] OF UNIQUE next_assembly_usage_occurrence;
DERIVE
SELF\product_definition_relationship.relating_product_definition :
product_definition := location[1]\
product_definition_relationship.
relating_product_definition;
root : product_definition :=
relating_product_definition;
SELF\product_definition_relationship.related_product_definition :
product_definition_or_reference :=
location[HIINDEX(location)]\
product_definition_relationship.
related_product_definition;
leaf : product_definition_or_reference :=
related_product_definition;
UNIQUE
UR1: location;
WHERE
WR1: unambiguously_specified_multi_level_reference_designator(location)
;
WR2: SIZEOF(QUERY (cp <* location| NOT EXISTS(cp\
assembly_component_usage.reference_designator))) = 0;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY multiple_arity_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF(and_expression, or_expression))
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY multiple_arity_function_call
ABSTRACT SUPERTYPE OF (ONEOF(maximum_function, minimum_function))
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY multiple_arity_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST [2:?] OF generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY multiple_arity_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(plus_expression, mult_expression,
multiple_arity_function_call))
SUBTYPE OF (numeric_expression, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
numeric_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY name_assignment
ABSTRACT SUPERTYPE;
assigned_name : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY name_attribute;
attribute_value : label;
named_item : name_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY named_unit
SUPERTYPE OF (ONEOF(si_unit, conversion_based_unit,
context_dependent_unit) ANDOR ONEOF(length_unit, mass_unit, time_unit
, electric_current_unit, thermodynamic_temperature_unit,
amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit
, plane_angle_unit, solid_angle_unit, ratio_unit));
dimensions : dimensional_exponents;
END_ENTITY; -- 10303-41: measure_schema
ENTITY next_assembly_usage_occurrence
SUBTYPE OF (assembly_component_usage);
DERIVE
product_definition_occurrence_id : identifier := SELF\
product_definition_relationship.
related_product_definition\
product_definition_occurrence.id;
UNIQUE
UR1: SELF\assembly_component_usage.reference_designator,
SELF\product_definition_relationship.relating_product_definition;
UR2: product_definition_occurrence_id,
SELF\product_definition_relationship.relating_product_definition;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY ngon_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 4)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| ((((srwp_i.name =
'orientation') OR (srwp_i.name = 'number of sides')) OR (
srwp_i.name = 'circumscribed diameter')) OR (srwp_i.name =
'corner radius')) OR (srwp_i.name = 'diameter across flats'))
) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of sides'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name IN [
'circumscribed diameter', 'diameter across flats' ]))) = 1)))
= 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) <= 1)
)) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY ngon_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 5;
WR2: SIZEOF(QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) = 1;
WR5: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name IN [
'circumscribed diameter', 'diameter across flats' ]))) = 1;
WR6: SIZEOF(QUERY (it <* SELF.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of sides'))) = 1;
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY non_manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) > 0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\
mapped_item.mapping_source.mapped_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(mr_it)))) > 0)))) = 0;
WR4: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_FACE' ]
* TYPEOF(fa)) = 1))) = 0))) = 0))) = 0;
WR5: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (f_sf
<* QUERY (fa <* cfs.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SURFACE' IN
TYPEOF(fa)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(f_sf)) OR nmsf_surface_check(f_sf\face_surface.
face_geometry)))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (o_fa
<* QUERY (fa <* cfs.cfs_faces| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_FACE'
IN TYPEOF(fa)))| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(o_fa\oriented_face.face_element)) OR
nmsf_surface_check(o_fa\oriented_face.face_element\
face_surface.face_geometry)))) = 0))) = 0))) = 0;
WR7: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (bnds <* fa.bounds| NOT (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' ] *
TYPEOF(bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe_cv <* QUERY (oe
<* elp_fbnds\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE' ]
* TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1))
) = 0))) = 0)))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT nmsf_curve_check(oe.edge_element\edge_curve.
edge_geometry))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_end))))) = 0))) = 0)))) = 0))) =
0))) = 0;
WR12: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path
.edge_list| NOT ((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(oe.edge_element.edge_start\vertex_point.
vertex_geometry)) = 1) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(oe.edge_element.edge_end\vertex_point.
vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
= 0))) = 0;
WR14: SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\
face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <*
cfs.cfs_faces| NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE'
IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <*
fa.bounds| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(bnds.bound)))| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
] * TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.
vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-508: aic_non_manifold_surface
ENTITY non_uniform_zone_definition
SUBTYPE OF (tolerance_zone_definition);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY not_expression
SUBTYPE OF (unary_boolean_expression);
SELF\unary_generic_expression.operand : boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY null_representation_item
SUBTYPE OF (representation_item);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY numeric_defined_function
ABSTRACT SUPERTYPE OF (ONEOF(integer_defined_function,
real_defined_function))
SUBTYPE OF (numeric_expression, defined_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_numeric_expression,
unary_numeric_expression, binary_numeric_expression,
multiple_arity_numeric_expression, length_function, value_function,
numeric_defined_function))
SUBTYPE OF (expression);
DERIVE
is_int : BOOLEAN := is_int_expr(SELF);
sql_mappable : BOOLEAN := is_sql_mappable(SELF);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY numeric_variable
SUPERTYPE OF (ONEOF(int_numeric_variable, real_numeric_variable))
SUBTYPE OF (simple_numeric_expression, variable);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_NUMERIC_VARIABLE'
IN TYPEOF(SELF)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_NUMERIC_VARIABLE'
IN TYPEOF(SELF));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY object_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY odd_function
SUBTYPE OF (unary_boolean_expression);
SELF\unary_generic_expression.operand : numeric_expression;
WHERE
WR1: is_int_expr(operand);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY offset_curve_2d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
WHERE
WR1: basis_curve.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY offset_curve_3d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
ref_direction : direction;
WHERE
WR1: (basis_curve.dim = 3) AND (ref_direction.dim = 3);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY offset_surface
SUBTYPE OF (surface);
basis_surface : surface;
distance : length_measure;
self_intersect : LOGICAL;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY one_direction_repeat_factor
SUBTYPE OF (geometric_representation_item);
repeat_factor : vector;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY open_path
SUBTYPE OF (path);
DERIVE
ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
WR1: SELF\path.edge_list[1].edge_element.edge_start :<>: SELF\path.
edge_list[ne].edge_element.edge_end;
END_ENTITY; -- 10303-42: topology_schema
ENTITY open_path_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
ENTITY or_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY ordinal_date
SUBTYPE OF (date);
day_component : day_in_year_number;
WHERE
WR1: NOT leap_year(SELF.year_component) AND ((1 <= day_component) AND (
day_component <= 365)) OR leap_year(SELF.year_component) AND
((1 <= day_component) AND (day_component <= 366));
END_ENTITY; -- 10303-41: date_time_schema
ENTITY ordinate_dimension
SUBTYPE OF (projection_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY organization;
id : OPTIONAL identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organization_assignment
ABSTRACT SUPERTYPE;
assigned_organization : organization;
role : organization_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY organization_relationship;
name : label;
description : OPTIONAL text;
relating_organization : organization;
related_organization : organization;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET [1:?] OF organization;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organizational_project;
name : label;
description : OPTIONAL text;
responsible_organizations : SET [1:?] OF organization;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organizational_project_assignment
ABSTRACT SUPERTYPE;
assigned_organizational_project : organizational_project;
role : organizational_project_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY organizational_project_relationship;
name : label;
description : OPTIONAL text;
relating_organizational_project : organizational_project;
related_organizational_project : organizational_project;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organizational_project_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY oriented_closed_shell
SUBTYPE OF (closed_shell);
closed_shell_element : closed_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation, SELF.
closed_shell_element.cfs_faces);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
IN TYPEOF(SELF.closed_shell_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_edge
SUBTYPE OF (edge);
edge_element : edge;
orientation : BOOLEAN;
DERIVE
SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation, SELF.
edge_element.edge_start, SELF.edge_element.edge_end);
SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation, SELF.
edge_element.edge_end, SELF.edge_element.edge_start);
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_EDGE'
IN TYPEOF(SELF.edge_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_face
SUBTYPE OF (face);
face_element : face;
orientation : BOOLEAN;
DERIVE
SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.
orientation, SELF.face_element.bounds);
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_FACE'
IN TYPEOF(SELF.face_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_joint
SUBTYPE OF (oriented_edge);
SELF\oriented_edge.edge_element : kinematic_joint;
END_ENTITY; -- 10303-105: kinematic_topology_schema
ENTITY oriented_open_shell
SUBTYPE OF (open_shell);
open_shell_element : open_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation, SELF.
open_shell_element.cfs_faces);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_OPEN_SHELL'
IN TYPEOF(SELF.open_shell_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_path
SUBTYPE OF (path);
path_element : path;
orientation : BOOLEAN;
DERIVE
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge :=
conditional_reverse(SELF.orientation, SELF.path_element.
edge_list);
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_PATH'
IN TYPEOF(SELF.path_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_surface
SUBTYPE OF (surface);
orientation : BOOLEAN;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY oriented_tolerance_zone
SUBTYPE OF (tolerance_zone_with_datum);
orientation : oriented_tolerance_zone_type;
angle : OPTIONAL plane_angle_measure_with_unit;
WHERE
WR1: (orientation <> oriented_tolerance_zone_type.angular) XOR EXISTS(
angle);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY outer_boundary_curve
SUBTYPE OF (boundary_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY outer_round
SUBTYPE OF (feature_definition);
WHERE
WR1: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 3))) = 1))) = 1);
WR2: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((2 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 3)))) = 1))) = 1);
WR3: SELF\characterized_object.description IN [ 'outer diameter',
'outer diameter to shoulder' ];
WR4: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1))) = 0))
) = 0);
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0
))) = 0;
WR6: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pds <* QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'v-shape boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'v-shape'))) = 1))) = 1))
) = 0);
WR7: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'reduced size occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTER_ROUND' IN
TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (
sdr.name = 'reduced size'))) = 1))) <= 1))) = 0);
WR8: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) <= 1))) = 0)
)) = 0);
WR9: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'feature length'))) <= 1
))) = 0))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY outside_profile
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 1))) = 1))) = 1;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description IN [ 'boundary occurrence',
'non-planar boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0;
WR3: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'boundary occurrence'))) = 1))) = 0)
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.
relating_shape_aspect.description = 'outside boundary'))) = 1
))) = 1))) = 0);
WR4: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description IN [ 'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| NOT (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile floor usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROFILE_FLOOR'
IN TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTSIDE_PROFILE'
IN TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) =
1))) = 0))) = 0);
WR5: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description IN [ 'outside boundary',
'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| ((SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.name =
'profile swept shape')) AND (sdr.relating_shape_aspect.
description = 'linear'))) = 1))) = 1))) = 0);
WR6: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'complex boundary occurrence'))) = 1
))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1)))
= 0);
WR7: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description =
'partial circular boundary occurrence'))) = 1))) = 0) OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR8: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description =
'closed circular boundary occurrence'))) = 1))) = 0) OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR9: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description =
'open rectangular boundary occurrence'))) = 1))) = 0) OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR10: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description =
'closed rectangular boundary occurrence'))) = 1))) = 0) OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR11: (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description IN [ 'boundary occurrence',
'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'removal direction'))) = 1))) = 0)
;
WR12: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY over_riding_styled_item
SUBTYPE OF (styled_item);
over_ridden_style : styled_item;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY package_product_concept_feature
SUBTYPE OF (product_concept_feature);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDITIONAL_CONCEPT_FEATURE'
IN TYPEOF(SELF));
WR2: SIZEOF(QUERY (cfr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION'
IN TYPEOF(cfr)) AND (SIZEOF(QUERY (ipcf <* USEDIN(cfr,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDITIONAL_CONCEPT_FEATURE.CONDITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INCLUSION_PRODUCT_CONCEPT_FEATURE'
IN TYPEOF(ipcf)))) = 1))) > 0;
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY pair_representation_relationship
SUBTYPE OF (geometric_representation_item,
representation_relationship_with_transformation);
SELF\representation_relationship.rep_1 : kinematic_link_representation;
SELF\representation_relationship.rep_2 : kinematic_link_representation;
SELF\representation_relationship_with_transformation.
transformation_operator : kinematic_pair;
WHERE
WR1: transformation_operator\item_defined_transformation.
transform_item_1 IN rep_1.items;
WR2: transformation_operator\item_defined_transformation.
transform_item_2 IN rep_2.items;
WR3: rep_1\kinematic_link_representation.represented_link =
transformation_operator\kinematic_pair.joint.edge_start;
WR4: rep_2\kinematic_link_representation.represented_link =
transformation_operator\kinematic_pair.joint.edge_end;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY pair_value
ABSTRACT SUPERTYPE OF (ONEOF(sliding_surface_pair_value,
rolling_surface_pair_value, revolute_pair_value, prismatic_pair_value
, screw_pair_value, cylindrical_pair_value, spherical_pair_value,
sliding_curve_pair_value, rolling_curve_pair_value, gear_pair_value,
rack_and_pinion_pair_value, universal_pair_value, planar_pair_value,
unconstrained_pair_value, point_on_surface_pair_value,
point_on_planar_curve_pair_value, low_order_kinematic_pair_value))
SUBTYPE OF (geometric_representation_item);
applies_to_pair : kinematic_pair;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY parabola
SUBTYPE OF (conic);
focal_dist : length_measure;
WHERE
WR1: focal_dist <> 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY parallel_composed_function
SUBTYPE OF (maths_function, multiple_arity_generic_expression);
source_of_domain : maths_space_or_function;
prep_functions : LIST [1:?] OF maths_function;
final_function : maths_function_select;
DERIVE
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
generic_expression := convert_to_operands_prcmfn(
source_of_domain, prep_functions, final_function);
WHERE
WR1: no_cyclic_domain_reference(source_of_domain, [ SELF ]);
WR2: expression_is_constant(domain_from(source_of_domain));
WR3: parallel_composed_function_domain_check(domain_from(
source_of_domain), prep_functions);
WR4: parallel_composed_function_composability_check(prep_functions,
final_function);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY parallel_offset
SUBTYPE OF (derived_shape_aspect);
offset : measure_with_unit;
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY parallelism_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY parametric_representation_context
SUBTYPE OF (representation_context);
END_ENTITY; -- 10303-43: representation_schema
ENTITY partial_circular_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 3))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1)))
= 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY partial_derivative_expression
SUBTYPE OF (unary_generic_expression);
d_variables : LIST [1:?] OF maths_variable;
extension : extension_options;
DERIVE
derivand : generic_expression := SELF\unary_generic_expression.operand;
WHERE
WR1: has_values_space(derivand);
WR2: space_is_continuum(values_space_of(derivand));
WR3: SIZEOF(QUERY (vbl <* d_variables| NOT subspace_of(values_space_of(
vbl), the_reals) AND NOT subspace_of(values_space_of(vbl),
the_complex_numbers))) = 0;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY partial_derivative_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
d_variables : LIST [1:?] OF input_selector;
extension : extension_options;
DERIVE
derivand : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: space_is_continuum(derivand.range);
WR2: partial_derivative_check(derivand.domain, d_variables);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY partial_document_with_structured_text_representation_assignment
SUBTYPE OF (applied_document_usage_constraint_assignment,
characterized_object);
END_ENTITY; -- 10303-1747: specification_document_mim
ENTITY path
SUPERTYPE OF (ONEOF(open_path, edge_loop, oriented_path))
SUBTYPE OF (topological_representation_item);
edge_list : LIST [1:?] OF UNIQUE oriented_edge;
WHERE
WR1: path_head_to_tail(SELF);
END_ENTITY; -- 10303-42: topology_schema
ENTITY path_feature_component
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'partial circular', 'complete circular',
'linear', 'complex' ];
WR3: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR5: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0);
WR6: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR7: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1)))
= 0))) = 0);
WR8: NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR9: NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR10: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR11: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'distance'))) = 1))) = 0
))) = 0);
WR12: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR13: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'sweep path')) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (srwp_i.name =
'profile shape'))) = 1))) = 1))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY path_node
ABSTRACT SUPERTYPE OF (ONEOF(point_to_point_path, circular_path,
linear_path, curve_based_path))
SUBTYPE OF (kinematic_path_segment);
placement_end : placement;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY path_parameter_representation
SUBTYPE OF (definitional_representation);
SELF\representation.context_of_items :
path_parameter_representation_context;
SELF\representation.items : SET [1:?] OF bounded_curve;
WHERE
WR1: SELF\representation.context_of_items\
geometric_representation_context.coordinate_space_dimension =
2;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY path_parameter_representation_context
SUBTYPE OF (geometric_representation_context,
parametric_representation_context);
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY path_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) >= 1;
WR2: SIZEOF(QUERY (i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH' ] * TYPEOF
(i)) = 1))) >= 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY pattern_offset_membership
SUBTYPE OF (feature_component_relationship);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
relating_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <*
QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
] * TYPEOF(pdr.definition)) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description =
'modified pattern') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MODIFIED_PATTERN'
IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MODIFIED_PATTERN'
IN TYPEOF(fcr.relating_shape_aspect)) AND NOT (SIZEOF(QUERY
(modfcr <* QUERY (modsar <* USEDIN(fcr.relating_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
] * TYPEOF(modsar.related_shape_aspect.of_shape.definition))
= 1) AND (modsar :<>: fcr))| NOT (modfcr.
related_shape_aspect.of_shape.definition :=: SELF.
relating_shape_aspect.of_shape.definition))) = 0))) = 0;
WR4: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)) = 2))) = 0);
WR5: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)) = 1))) = 0);
WR6: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| NOT (SIZEOF(pdr.used_representation.items) = 2))) = 0))) =
0);
WR7: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'index number'))) = 1))) = 0))) = 0);
WR8: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
IN TYPEOF(it)) AND (it.name = 'offset'))) = 1))) = 0))) = 0)
;
WR9: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0);
WR10: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'row index'))) = 1))) = 0))) = 0);
WR11: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'column index'))) = 1))) = 0))) = 0);
WR12: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it)) AND (it.name = 'offset distance'))) = 1))) =
0))) = 0);
WR13: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'offset direction'))) = 1))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY pattern_omit_membership
SUBTYPE OF (feature_component_relationship);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
relating_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <*
QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
] * TYPEOF(pdr.definition)) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description =
'modified pattern') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MODIFIED_PATTERN'
IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (sar :<>: SELF))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MODIFIED_PATTERN'
IN TYPEOF(fcr.relating_shape_aspect)) AND NOT (SIZEOF(QUERY
(modfcr <* QUERY (modsar <* USEDIN(fcr.relating_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
] * TYPEOF(modsar.related_shape_aspect.of_shape.definition))
= 1) AND (modsar :<>: fcr))| NOT (modfcr.
related_shape_aspect.of_shape.definition :=: SELF.
relating_shape_aspect.of_shape.definition))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)) = 1))) = 0;
WR5: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| NOT (SIZEOF(pdr.used_representation.items) = 1))) = 0))) =
0);
WR6: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'index number'))) = 1))) = 0))) = 0);
WR7: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| NOT (SIZEOF(pdr.used_representation.items) = 2))) = 0))) =
0);
WR8: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'row index'))) = 1))) = 0))) = 0);
WR9: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_PATTERN'
IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))
OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'column index'))) = 1))) = 0))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY pcurve
SUBTYPE OF (curve);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
WR1: SIZEOF(reference_to_curve\representation.items) = 1;
WR2: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF(
reference_to_curve\representation.items[1]);
WR3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY perpendicular_to
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY perpendicularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY person;
id : identifier;
last_name : OPTIONAL label;
first_name : OPTIONAL label;
middle_names : OPTIONAL LIST [1:?] OF label;
prefix_titles : OPTIONAL LIST [1:?] OF label;
suffix_titles : OPTIONAL LIST [1:?] OF label;
WHERE
WR1: EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY person_and_organization;
the_person : person;
the_organization : organization;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY person_and_organization_address
SUBTYPE OF (organizational_address, personal_address);
SELF\organizational_address.organizations : SET [1:1] OF organization;
SELF\personal_address.people : SET [1:1] OF person;
WHERE
WR1: SIZEOF(QUERY (pao <* USEDIN(SELF\personal_address.people[1],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PERSON_AND_ORGANIZATION.THE_PERSON'
)| (pao.the_organization :=: SELF\organizational_address.
organizations[1]))) = 1;
END_ENTITY; -- 10303-1011: person_organization_mim
ENTITY person_and_organization_assignment
ABSTRACT SUPERTYPE;
assigned_person_and_organization : person_and_organization;
role : person_and_organization_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY person_and_organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY personal_address
SUBTYPE OF (address);
people : SET [1:?] OF person;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY physical_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY; -- 10303-1215: physical_breakdown_mim
ENTITY physical_element_usage
SUBTYPE OF (breakdown_element_usage);
END_ENTITY; -- 10303-1215: physical_breakdown_mim
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| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1;
WR3: valid_datum_target_parameters(SELF);
END_ENTITY; -- 10303-1051: geometric_tolerance_mim
ENTITY placed_feature
SUBTYPE OF (shape_aspect);
END_ENTITY; -- 10303-1764: shape_feature_mim
ENTITY placement
SUPERTYPE OF (ONEOF(axis1_placement, axis2_placement_2d,
axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY planar_box
SUBTYPE OF (planar_extent);
placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY planar_curve_pair
SUPERTYPE OF (ONEOF(sliding_curve_pair, rolling_curve_pair) ANDOR
planar_curve_pair_range)
SUBTYPE OF (high_order_kinematic_pair);
curve_1 : curve;
curve_2 : curve;
orientation : BOOLEAN;
WHERE
WR1: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (curve_1 IN r.items)))
= 0;
WR2: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_2| NOT (curve_2 IN r.items)))
= 0;
WR3: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY planar_curve_pair_range
SUBTYPE OF (planar_curve_pair);
range_on_curve_1 : trimmed_curve;
range_on_curve_2 : trimmed_curve;
WHERE
WR1: SELF\planar_curve_pair.curve_1 :=: range_on_curve_1.basis_curve;
WR2: SELF\planar_curve_pair.curve_2 :=: range_on_curve_2.basis_curve;
WR3: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (range_on_curve_1 IN r
.items))) = 0;
WR4: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_2| NOT (range_on_curve_2 IN r
.items))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY planar_extent
SUBTYPE OF (geometric_representation_item);
size_in_x : length_measure;
size_in_y : length_measure;
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY planar_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY planar_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : planar_pair;
actual_rotation : plane_angle_measure;
actual_translation_x : length_measure;
actual_translation_y : length_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY planar_pair_with_range
SUBTYPE OF (planar_pair);
lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
lower_limit_actual_translation_x : OPTIONAL length_measure;
upper_limit_actual_translation_x : OPTIONAL length_measure;
lower_limit_actual_translation_y : OPTIONAL length_measure;
upper_limit_actual_translation_y : OPTIONAL length_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(
upper_limit_actual_rotation)) XOR (
lower_limit_actual_rotation < upper_limit_actual_rotation);
WR2: (NOT EXISTS(lower_limit_actual_translation_x) OR NOT EXISTS(
upper_limit_actual_translation_x)) XOR (
lower_limit_actual_translation_x <
upper_limit_actual_translation_x);
WR3: (NOT EXISTS(lower_limit_actual_translation_y) OR NOT EXISTS(
upper_limit_actual_translation_y)) XOR (
lower_limit_actual_translation_y <
upper_limit_actual_translation_y);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY planar_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF
(it)))) = 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY plane_angle_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY plane_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'axial cutting depth') AND
verify_length_measure_action_property(SELF,
'axial cutting depth');
WR3: verify_optional_action_property(SELF, 'allowance bottom') AND
verify_length_measure_action_property(SELF,
'allowance bottom');
WR4: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance bottom');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY plus_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY plus_minus_tolerance;
range : tolerance_method_definition;
toleranced_dimension : dimensional_characteristic;
UNIQUE
UR1: toleranced_dimension;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY pmi_requirement_item_association
SUBTYPE OF (item_identified_representation_usage);
requirement : characterized_object;
END_ENTITY; -- 10303-113: mechanical_design_schema
ENTITY pocket
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'closed rectangular',
'open rectangular', 'complex', 'circular cutout',
'complex cutout', 'recess' ];
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'pocket depth occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| ((sar.description = 'path feature component usage') AND (
sar.name = 'pocket depth')) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((1 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 2)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (srwp_i.name =
'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(
pdr.used_representation.items)))) = 1))) = 1;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'fillet radius'))) <= 1)
)) = 0))) = 0;
WR7: NOT (SELF\characterized_object.description IN [ 'complex',
'non-circular cutout', 'recess' ]) OR (SIZEOF(QUERY (pds <*
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1)))
= 0);
WR8: NOT (SELF\characterized_object.description = 'closed rectangular')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'closed boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR9: NOT (SELF\characterized_object.description = 'open rectangular')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'open boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR10: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'bottom condition occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'pocket bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET_BOTTOM'
IN TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) = 1))
) = 1))) = 0;
WR11: NOT (SELF\characterized_object.description IN [ 'complex',
'non-circular cutout', 'recess' ]) OR (SIZEOF(QUERY (pds <*
QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in boundary occurrence') AND
(SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (
fcr.related_shape_aspect.description IN [ 'angle taper',
'directed taper' ]))) = 1))) <= 1))) = 0);
WR12: NOT (SELF\characterized_object.description = 'circular cutout')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'enclosed boundary occurrence') AND
(SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR13: NOT (SELF\characterized_object.description IN [ 'circular cutout'
, 'complex cutout' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'bottom condition occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'pocket bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET_BOTTOM'
IN TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (
sdr.relating_shape_aspect.description = 'through'))) = 1))) =
1))) = 0);
WR14: NOT (SELF\characterized_object.description = 'recess') OR (SIZEOF
(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'bottom condition occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'pocket bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET_BOTTOM'
IN TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (
sdr.relating_shape_aspect.description IN [ 'planar',
'complex' ]))) = 1))) = 1))) = 0);
WR15: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
WR16: NOT (SELF\characterized_object.description IN [
'closed rectangular', 'open rectangular', 'complex', 'recess'
]) OR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF
(QUERY (sar <* csa.component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROTRUSION' ] *
TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1);
WR17: NOT (SELF\characterized_object.description IN [
'closed rectangular', 'open rectangular' ]) OR (SIZEOF(QUERY
(pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in boundary occurrence') AND
(SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (
fcr.related_shape_aspect.description IN [ 'angle taper',
'directed taper' ]))) >= 1))) <= 1))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY pocket_bottom
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex', 'through' ];
WR3: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'floor normal'))) = 1))) = 0);
WR4: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOCATION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'floor location'))) = 1))) = 0);
WR5: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'floor face'))) = 1))) = 0);
WR6: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR7: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) <= 1))) = 0))) = 0);
WR8: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
WR9: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0)
)) = 0);
WR10: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'pocket bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET_BOTTOM'
IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR11: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'pocket bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (fcr.related_shape_aspect.
name IN [ 'pocket depth start', 'pocket depth end' ]))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY point
SUPERTYPE OF (ONEOF(cartesian_point, point_on_curve, point_on_surface,
point_in_volume, point_replica, degenerate_pcurve))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_cloud_dataset
SUBTYPE OF (scanned_data_item);
point_coordinates : LIST [1:?] OF LIST [3:3] OF REAL;
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY point_cloud_dataset_with_colours
SUBTYPE OF (point_cloud_dataset);
colour_indices : LIST [1:?] OF LIST [3:3] OF INTEGER;
WHERE
WR1: SIZEOF(colour_indices) = SIZEOF(SELF\point_cloud_dataset.
point_coordinates);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY point_cloud_dataset_with_intensities
SUBTYPE OF (point_cloud_dataset);
intensities : LIST [1:?] OF REAL;
WHERE
WR1: SIZEOF(intensities) = SIZEOF(SELF\point_cloud_dataset.
point_coordinates);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY point_cloud_dataset_with_normals
SUBTYPE OF (point_cloud_dataset);
normals : LIST [1:?] OF LIST [3:3] OF REAL;
WHERE
WR1: SIZEOF(normals) = SIZEOF(SELF\point_cloud_dataset.
point_coordinates);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY point_cloud_superdataset
SUBTYPE OF (scanned_data_item);
pts_per_sublist : INTEGER;
sublists : LIST [2:?] OF point_cloud_dataset;
WHERE
WR1: consistent_sizes(SELF.pts_per_sublist, SELF.sublists);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY point_in_volume
SUBTYPE OF (point);
basis_volume : volume;
point_parameter_u : parameter_value;
point_parameter_v : parameter_value;
point_parameter_w : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_on_curve
SUBTYPE OF (point);
basis_curve : curve;
point_parameter : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_on_planar_curve_pair
SUBTYPE OF (high_order_kinematic_pair);
pair_curve : curve;
orientation : BOOLEAN;
WHERE
WR1: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (pair_curve IN r.items
))) = 0;
WR2: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY point_on_planar_curve_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : point_on_planar_curve_pair;
actual_point_on_curve : point_on_curve;
input_orientation : spatial_rotation;
DERIVE
actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(
SELF\pair_value.applies_to_pair,
input_orientation);
WHERE
WR1: SELF\pair_value.applies_to_pair\point_on_planar_curve_pair.
pair_curve :=: actual_point_on_curve.basis_curve;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY point_on_planar_curve_pair_with_range
SUBTYPE OF (point_on_planar_curve_pair);
range_on_pair_curve : trimmed_curve;
lower_limit_yaw : OPTIONAL plane_angle_measure;
upper_limit_yaw : OPTIONAL plane_angle_measure;
lower_limit_pitch : OPTIONAL plane_angle_measure;
upper_limit_pitch : OPTIONAL plane_angle_measure;
lower_limit_roll : OPTIONAL plane_angle_measure;
upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch))
XOR (lower_limit_pitch < upper_limit_pitch);
WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (
lower_limit_yaw < upper_limit_yaw);
WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR
(lower_limit_roll < upper_limit_roll);
WR4: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (range_on_pair_curve
IN r.items))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY point_on_surface
SUBTYPE OF (point);
basis_surface : surface;
point_parameter_u : parameter_value;
point_parameter_v : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_on_surface_pair
SUBTYPE OF (high_order_kinematic_pair);
pair_surface : surface;
WHERE
WR1: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (pair_surface IN r.
items))) = 0;
WR2: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY point_on_surface_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : point_on_surface_pair;
actual_point_on_surface : point_on_surface;
input_orientation : spatial_rotation;
DERIVE
actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(
SELF\pair_value.applies_to_pair,
input_orientation);
WHERE
WR1: SELF\pair_value.applies_to_pair\point_on_surface_pair.pair_surface
:=: actual_point_on_surface.basis_surface;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY point_on_surface_pair_with_range
SUBTYPE OF (point_on_surface_pair);
range_on_pair_surface : rectangular_trimmed_surface;
lower_limit_yaw : OPTIONAL plane_angle_measure;
upper_limit_yaw : OPTIONAL plane_angle_measure;
lower_limit_pitch : OPTIONAL plane_angle_measure;
upper_limit_pitch : OPTIONAL plane_angle_measure;
lower_limit_roll : OPTIONAL plane_angle_measure;
upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch))
XOR (lower_limit_pitch < upper_limit_pitch);
WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (
lower_limit_yaw < upper_limit_yaw);
WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR
(lower_limit_roll < upper_limit_roll);
WR4: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (range_on_pair_surface
IN r.items))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY point_replica
SUBTYPE OF (point);
parent_pt : point;
transformation : cartesian_transformation_operator;
WHERE
WR1: transformation.dim = parent_pt.dim;
WR2: acyclic_point_replica(SELF, parent_pt);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_style
SUBTYPE OF (founded_item);
name : label;
marker : OPTIONAL marker_select;
marker_size : OPTIONAL size_select;
marker_colour : OPTIONAL colour;
WHERE
WR1: (EXISTS(marker) OR EXISTS(marker_size)) OR EXISTS(marker_colour);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY point_to_point_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code :=
discontinuous;
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
ENTITY polar_complex_number_region
SUBTYPE OF (maths_space, generic_literal);
centre : complex_number_literal;
distance_constraint : real_interval;
direction_constraint : finite_real_interval;
WHERE
WR1: min_exists(distance_constraint) AND (real_min(distance_constraint)
>= 0.0);
WR2: (-PI <= direction_constraint.min) AND (direction_constraint.min <
PI);
WR3: direction_constraint.max - direction_constraint.min <= 2.0 * PI;
WR4: (direction_constraint.max - direction_constraint.min < 2.0 * PI)
OR (direction_constraint.min_closure = open);
WR5: ((direction_constraint.max - direction_constraint.min < 2.0 * PI)
OR (direction_constraint.max_closure = open)) OR (
direction_constraint.min = -PI);
WR6: (((real_min(distance_constraint) > 0.0) OR max_exists(
distance_constraint)) OR (direction_constraint.max -
direction_constraint.min < 2.0 * PI)) OR (
direction_constraint.max_closure = open);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY polar_point
SUBTYPE OF (cartesian_point);
r : length_measure;
theta : plane_angle_measure;
DERIVE
SELF\cartesian_point.coordinates : LIST [2:2] OF length_measure := [ r
* COS(theta), r * SIN(theta) ];
WHERE
WR1: r >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY poly_loop
SUBTYPE OF (loop, geometric_representation_item);
polygon : LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY; -- 10303-42: topology_schema
ENTITY polyline
SUBTYPE OF (bounded_curve);
points : LIST [2:?] OF cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY position_tolerance
SUBTYPE OF (geometric_tolerance);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY positive_length_measure_with_unit
SUBTYPE OF (length_measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(SELF\measure_with_unit.value_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY positive_plane_angle_measure_with_unit
SUBTYPE OF (plane_angle_measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_PLANE_ANGLE_MEASURE'
IN TYPEOF(SELF\measure_with_unit.value_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY power_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY power_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POWER_UNIT' IN TYPEOF
(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY power_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.watt);
END_ENTITY; -- 10303-41: measure_schema
ENTITY pre_defined_character_glyph
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY pre_defined_colour
SUBTYPE OF (pre_defined_item, colour);
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY pre_defined_curve_font
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY pre_defined_dimension_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
WR1: SELF.name IN [ 'arc length', 'conical taper', 'counterbore',
'countersink', 'depth', 'diameter', 'plus minus', 'radius',
'slope', 'spherical diameter', 'spherical radius', 'square' ]
;
END_ENTITY; -- 10303-1206: draughting_annotation_mim
ENTITY pre_defined_geometrical_tolerance_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
WR1: SELF.name IN [ 'angularity', 'basic dimension',
'blanked datum reference', 'circular runout', 'circularity',
'concentricity', 'cylindricity',
'datum target identification', 'diameter',
'filled datum reference', 'flatness',
'least material condition', 'maximum material condition',
'parallelism', 'perpendicularity', 'position',
'profile of a line', 'profile of a surface',
'projected tolerance zone', 'regardless of feature size',
'straightness', 'symmetry', 'total runout' ];
END_ENTITY; -- 10303-1206: draughting_annotation_mim
ENTITY pre_defined_item;
name : label;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY pre_defined_marker
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY pre_defined_point_marker_symbol
SUBTYPE OF (pre_defined_marker, pre_defined_symbol);
WHERE
WR1: SELF.name IN [ 'asterisk', 'circle', 'dot', 'plus', 'square',
'triangle', 'x' ];
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY pre_defined_surface_condition_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
WR1: SELF.name IN [ '000', '010', '020', '030', '040', '050', '060',
'070', '001', '011', '021', '031', '041', '051', '061', '071'
, '100', '110', '120', '130', '140', '150', '160', '170',
'101', '111', '121', '131', '141', '151', '161', '171', '200'
, '210', '220', '230', '240', '250', '260', '270', '201',
'211', '221', '231', '241', '251', '261', '271' ];
END_ENTITY; -- 10303-1206: draughting_annotation_mim
ENTITY pre_defined_surface_side_style
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY pre_defined_symbol
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY pre_defined_terminator_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
WR1: SELF.name IN [ 'blanked arrow', 'blanked box', 'blanked dot',
'blanked triangle', 'dimension origin', 'filled arrow',
'filled box', 'filled dot', 'integral symbol', 'open arrow',
'slash', 'unfilled arrow', 'unfilled triangle',
'filled triangle' ];
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY pre_defined_text_font
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_resource_schema
ENTITY pre_defined_tile
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY precision_qualifier;
precision_value : INTEGER;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY prescribed_path
SUBTYPE OF (link_motion_representation_along_path);
controlling_joints : OPTIONAL SET [1:6] OF kinematic_joint;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
ENTITY presentation_area
SUBTYPE OF (presentation_representation);
WHERE
WR1: (SIZEOF(QUERY (ais <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET.AREA'
)| (SIZEOF(USEDIN(ais,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)) = 1))) > 0) OR (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_SIZE.UNIT'
)) = 1);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presentation_layer_assignment;
name : label;
description : text;
assigned_items : SET [1:?] OF layered_item;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presentation_representation
SUPERTYPE OF (ONEOF(presentation_area, presentation_view))
SUBTYPE OF (representation);
SELF\representation.context_of_items : geometric_representation_context
;
WHERE
WR1: SELF\representation.context_of_items\
geometric_representation_context.coordinate_space_dimension =
2;
WR2: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_AREA'
IN TYPEOF(SELF)) OR (SIZEOF(QUERY (prr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_REPRESENTATION'
IN TYPEOF(prr\representation_relationship.rep_1)))) > 0)) OR
(SIZEOF(QUERY (rm <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'
)| (SIZEOF(QUERY (mi <* USEDIN(rm,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'
)| (SIZEOF(QUERY (rep <* using_representations(mi)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_REPRESENTATION'
IN TYPEOF(rep)))) > 0))) > 0))) > 0);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presentation_set;
INVERSE
areas : SET [1:?] OF area_in_set FOR in_set;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presentation_size;
unit : presentation_size_assignment_select;
size : planar_box;
UNIQUE
UR1: unit;
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_REPRESENTATION'
IN TYPEOF(unit)) AND item_in_context(size, unit\
representation.context_of_items) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_IN_SET' IN
TYPEOF(unit)) AND (SIZEOF(QUERY (ais <* unit\area_in_set.
in_set.areas| NOT item_in_context(size, ais.area\
representation.context_of_items))) = 0);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presentation_style_assignment
SUBTYPE OF (founded_item);
styles : SET [1:?] OF presentation_style_select;
WHERE
WR1: SIZEOF(QUERY (style1 <* styles| NOT (SIZEOF(QUERY (style2 <*
styles - style1| NOT ((TYPEOF(style1) <> TYPEOF(style2)) OR (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNALLY_DEFINED_STYLE'
] * TYPEOF(style1)) = 1)))) = 0))) = 0;
WR2: SIZEOF(QUERY (style1 <* styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(style1)))) <= 2;
WR3: SIZEOF(QUERY (style1 <* styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(style1)) AND (SIZEOF(QUERY (style2 <* styles -
style1| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_STYLE_USAGE'
IN TYPEOF(style2)) AND (((style1\surface_style_usage.side =
both) OR (style2\surface_style_usage.side = both)) OR (style1
\surface_style_usage.side = style2\surface_style_usage.side))
)) > 0))) = 0;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY presentation_style_by_context
SUBTYPE OF (presentation_style_assignment);
style_context : style_context_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY presentation_view
SUBTYPE OF (presentation_representation);
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presented_item
ABSTRACT SUPERTYPE;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY presented_item_representation;
presentation : presentation_representation_select;
item : presented_item;
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY pressure_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESSURE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY pressure_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.pascal);
END_ENTITY; -- 10303-41: measure_schema
ENTITY prismatic_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY prismatic_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : prismatic_pair;
actual_translation : length_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY prismatic_pair_with_range
SUBTYPE OF (prismatic_pair);
lower_limit_actual_translation : OPTIONAL length_measure;
upper_limit_actual_translation : OPTIONAL length_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(
upper_limit_actual_translation)) XOR (
lower_limit_actual_translation <
upper_limit_actual_translation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY process_operation
SUBTYPE OF (action_method);
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY process_plan
SUBTYPE OF (action);
WHERE
WR1: SIZEOF(QUERY (ar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATED_ACTION'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PLAN',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_PROCESS_PLAN'
] * TYPEOF(ar.relating_action)) <> 1))) = 0;
WR2: SIZEOF(QUERY (ar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PLAN',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_PROCESS_PLAN'
] * TYPEOF(ar.related_action)) = 1) OR (ar.name =
'process operation occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_OPERATION'
IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION'
));
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY process_product_association;
name : label;
description : text;
defined_product : characterized_product_definition;
process : product_definition_process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY process_property_association;
name : label;
description : text;
process : property_process;
property_or_shape : property_or_shape_select;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY product;
id : identifier;
name : label;
description : OPTIONAL text;
frame_of_reference : SET [1:?] OF product_context;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_as_planned
SUBTYPE OF (product_definition_formation);
END_ENTITY; -- 10303-1164: product_as_individual_mim
ENTITY product_category;
name : label;
description : OPTIONAL text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_category_relationship;
name : label;
description : OPTIONAL text;
category : product_category;
sub_category : product_category;
WHERE
WR1: acyclic_product_category_relationship(SELF, [ SELF.sub_category ])
;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_class
SUBTYPE OF (product_concept, characterized_object);
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY product_concept;
id : identifier;
name : label;
description : OPTIONAL text;
market_context : product_concept_context;
UNIQUE
UR1: id;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY product_concept_context
SUBTYPE OF (application_context_element);
market_segment_type : label;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY product_concept_feature;
id : identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY product_concept_feature_association;
name : label;
description : OPTIONAL text;
concept : product_concept;
feature : product_concept_feature;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY product_concept_feature_category
SUBTYPE OF (group);
WHERE
WR1: SIZEOF(QUERY (aga <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GROUP_ASSIGNMENT.ASSIGNED_GROUP'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_GROUP_ASSIGNMENT'
IN TYPEOF(aga)) AND ((aga\group_assignment.role\object_role.
name <> 'specification category member') OR (SIZEOF(QUERY (i
<* aga\applied_group_assignment.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CONCEPT_FEATURE'
IN TYPEOF(i)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDITIONAL_CONCEPT_FEATURE'
IN TYPEOF(i)))) <> SIZEOF(aga\applied_group_assignment.items
))))) = 0;
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY product_concept_feature_category_usage
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_concept_feature_category
;
items : SET [1:?] OF category_usage_item;
WHERE
WR1: SELF.role.name IN [ 'mandatory category usage',
'optional category usage' ];
END_ENTITY; -- 10303-1103: product_class_mim
ENTITY product_concept_relationship;
name : label;
description : OPTIONAL text;
relating_product_concept : product_concept;
related_product_concept : product_concept;
END_ENTITY; -- 10303-44: product_concept_schema
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY product_definition;
id : identifier;
description : OPTIONAL text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY product_definition_context_association;
definition : product_definition;
frame_of_reference : product_definition_context;
role : product_definition_context_role;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_context_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_effectivity
SUBTYPE OF (effectivity);
usage : product_definition_relationship;
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY'
)) = 0;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_element_relationship
SUBTYPE OF (group);
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY product_definition_formation;
id : identifier;
description : OPTIONAL text;
of_product : product;
UNIQUE
UR1: id, of_product;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_formation_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product_definition_formation : product_definition_formation;
related_product_definition_formation : product_definition_formation;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_formation_resource
SUBTYPE OF (action_resource, product_definition_formation);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES'
)) > 0;
WR2: SIZEOF(QUERY (prpc <* USEDIN(SELF\product_definition_formation.
of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'part'))) <> 0;
WR3: SELF\action_resource.name = SELF\product_definition_formation.id;
WR4: SELF\action_resource.description = SELF\
product_definition_formation.description;
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY product_definition_formation_with_specified_source
SUBTYPE OF (product_definition_formation);
make_or_buy : source;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_group_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group :
product_definition_element_relationship;
items : SET [1:1] OF
product_definition_or_product_definition_relationship
;
END_ENTITY; -- 10303-1248: product_breakdown_mim
ENTITY product_definition_kinematics
SUBTYPE OF (property_definition);
SELF\property_definition.definition : product_definition;
INVERSE
representation_relation : kinematic_property_definition_representation
FOR definition;
UNIQUE
UR1: definition;
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY product_definition_occurrence
SUPERTYPE OF (product_definition_specified_occurrence ANDOR
product_definition_occurrence_reference_with_local_representation);
id : identifier;
name : OPTIONAL label;
description : OPTIONAL text;
definition : OPTIONAL product_definition_or_reference_or_occurrence;
quantity : OPTIONAL measure_with_unit;
DERIVE
descendant_occurrences : SET [0:?] OF
product_definition_specified_occurrence :=
get_descendant_occurrences(SELF);
INVERSE
assembly_usages : SET [0:?] OF assembly_component_usage FOR
related_product_definition;
child_occurrences : SET [0:?] OF
product_definition_specified_occurrence FOR
occurrence_usage;
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE'
IN TYPEOF(SELF)) XOR ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE'
IN TYPEOF(definition)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE_REFERENCE'
IN TYPEOF(definition)));
WR2: EXISTS(definition) OR (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONFIGURATION_DESIGN.DESIGN'
)) > 0);
WR3: NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_occurrence_reference
SUBTYPE OF (product_definition_reference);
product_occurrence_id : identifier;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_occurrence_reference_with_local_representation
SUBTYPE OF (product_definition_occurrence,
generic_product_definition_reference);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_occurrence_relationship;
name : label;
description : OPTIONAL text;
occurrence : product_definition;
occurrence_usage : assembly_component_usage;
WHERE
WR1: occurrence_usage.relating_product_definition :<>: occurrence;
WR2: occurrence_usage.related_product_definition :<>: occurrence;
WR3: occurrence.formation :=: occurrence_usage.
related_product_definition.formation;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
product_definitions : SET [1:?] OF process_product_association FOR
process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY product_definition_reference
SUBTYPE OF (generic_product_definition_reference);
product_id : identifier;
product_definition_formation_id : identifier;
product_definition_id : identifier;
id_owning_organization_name : OPTIONAL label;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_reference_with_local_representation
SUBTYPE OF (generic_product_definition_reference, product_definition);
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product_definition : product_definition_or_reference;
related_product_definition : product_definition_or_reference;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_relationship_kinematics
SUBTYPE OF (property_definition);
SELF\property_definition.definition : product_definition_relationship;
UNIQUE
UR1: definition;
END_ENTITY; -- 10303-105: kinematic_property_schema
ENTITY product_definition_resource
SUBTYPE OF (action_resource, product_definition);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES'
)) > 0;
WR2: SELF\product_definition.frame_of_reference\
application_context_element.name IN [ 'part definition',
'part occurrence', 'physical occurrence' ];
WR3: SELF\action_resource.name = SELF\product_definition.name;
WR4: SELF\action_resource.description = SELF\product_definition.
description;
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
UR1: SELF\property_definition.definition;
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHARACTERIZED_PRODUCT_DEFINITION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHARACTERIZED_OBJECT'
] * TYPEOF(SELF\property_definition.definition)) > 0;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY product_definition_specified_occurrence
SUBTYPE OF (product_definition_occurrence);
SELF\product_definition_occurrence.definition :
product_definition_occurrence_or_reference;
occurrence_usage : product_definition_occurrence_or_reference;
UNIQUE
UR1: occurrence_usage, id;
WHERE
WR1: SIZEOF(assembly_usages) = 0;
WR2: acyclic_product_definition_specified_occurrence(SELF, SELF\
product_definition_occurrence.definition);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_substitute;
description : OPTIONAL text;
context_relationship : product_definition_relationship;
substitute_definition : product_definition;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: context_relationship.related_product_definition :<>:
substitute_definition;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_usage
SUPERTYPE OF (ONEOF(make_from_usage_option, assembly_component_usage))
SUBTYPE OF (product_definition_relationship);
UNIQUE
UR1: SELF\product_definition_relationship.id,
SELF\product_definition_relationship.relating_product_definition,
SELF\product_definition_relationship.related_product_definition;
WHERE
WR1: acyclic_product_definition_relationship(SELF, [ SELF\
product_definition_relationship.related_product_definition ],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_USAGE'
);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET [1:?] OF document;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_design_to_individual
SUBTYPE OF (product_relationship);
DERIVE
product_design : product := SELF\product_relationship.
relating_product;
individual_product : product := SELF\product_relationship.
related_product;
END_ENTITY; -- 10303-1164: product_as_individual_mim
ENTITY product_design_version_to_individual
SUBTYPE OF (product_definition_formation_relationship);
DERIVE
product_design_version : product_definition_formation := SELF\
product_definition_formation_relationship.
relating_product_definition_formation;
individual_product : product_definition_formation := SELF\
product_definition_formation_relationship.
related_product_definition_formation;
END_ENTITY; -- 10303-1164: product_as_individual_mim
ENTITY product_identification
SUBTYPE OF (configuration_item, characterized_object);
SELF\configuration_item.item_concept : product_class;
WHERE
WR1: SIZEOF(QUERY (cd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONFIGURATION_DESIGN.CONFIGURATION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION'
IN TYPEOF(cd.design)) AND (SIZEOF(QUERY (prpc <* USEDIN(cd.
design\product_definition_formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name IN [ 'part', 'raw material', 'tool' ]))) > 0)))
<= 1;
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONFIGURABLE_ITEM'
IN TYPEOF(SELF)) XOR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_SPECIFICATION'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-1104: specified_product_mim
ENTITY product_planned_to_realized
SUBTYPE OF (product_definition_formation_relationship);
DERIVE
realized_product : product_definition_formation := SELF\
product_definition_formation_relationship.
related_product_definition_formation;
planned_product : product_definition_formation := SELF\
product_definition_formation_relationship.
relating_product_definition_formation;
END_ENTITY; -- 10303-1164: product_as_individual_mim
ENTITY product_process_plan
SUBTYPE OF (product_definition_process);
WHERE
WR1: SIZEOF(QUERY (ar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATED_ACTION'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PLAN',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_PROCESS_PLAN'
] * TYPEOF(ar.relating_action)) <> 1))) = 0;
WR2: SIZEOF(QUERY (ar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION'
)| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PLAN',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_PROCESS_PLAN'
] * TYPEOF(ar.related_action)) = 1) OR (ar.name =
'process operation occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_OPERATION'
IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION'
));
WR3: SIZEOF(QUERY (ppa <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROCESS_PRODUCT_ASSOCIATION.PROCESS'
)| (ppa.name <> 'produced output') OR NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(ppa.defined_product)))) = 0;
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET [1:?] OF product;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product : product;
related_product : product;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_resource
SUBTYPE OF (action_resource, product);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES'
)) > 0;
WR2: SIZEOF(QUERY (prpc <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'part'))) <> 0;
WR3: SELF\action_resource.name = SELF\product.name;
WR4: SELF\action_resource.description = SELF\product.description;
END_ENTITY; -- 10303-1803: process_plan_mim
ENTITY product_specification
SUBTYPE OF (product_identification, configurable_item);
END_ENTITY; -- 10303-1104: specified_product_mim
ENTITY profile_floor
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex', 'through' ];
WR3: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR4: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0);
WR5: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
WR6: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0);
WR7: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'profile floor usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTSIDE_PROFILE'
IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROFILE_FLOOR'
IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR8: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name =
'shape profile floor orientation')) AND (it.description IN [
'shape profile start', 'shape profile end' ]))) = 1))) = 0)))
= 0);
WR9: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'floor'))) = 1))) = 1);
WR10: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'floor'))) = 1))) = 1);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY projected_zone_definition
SUBTYPE OF (tolerance_zone_definition);
projection_end : shape_aspect;
projected_length : length_measure_with_unit;
WHERE
WR1: ('NUMBER' IN TYPEOF(projected_length\measure_with_unit.
value_component)) AND (projected_length\measure_with_unit.
value_component > 0.0);
WR2: derive_dimensional_exponents(projected_length\measure_with_unit.
unit_component) = dimensional_exponents(1, 0, 0, 0, 0, 0, 0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY projected_zone_definition_with_offset
SUBTYPE OF (projected_zone_definition);
offset : length_measure_with_unit;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY projection_curve
SUBTYPE OF (annotation_curve_occurrence);
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY projection_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(QUERY (p_1 <* SELF\draughting_callout.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
IN TYPEOF(p_1)))) <= 2;
WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY promissory_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY property_definition
SUPERTYPE OF (ONEOF(product_definition_kinematics,
product_definition_relationship_kinematics, product_definition_shape)
);
name : label;
description : OPTIONAL text;
definition : characterized_definition;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY property_definition_relationship;
name : label;
description : text;
relating_property_definition : property_definition;
related_property_definition : property_definition;
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY property_definition_representation;
definition : represented_definition;
used_representation : representation;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY property_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
properties : SET [1:?] OF process_property_association FOR process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY protrusion
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'shape volume occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'volume shape usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (sdr.relating_shape_aspect.description =
'volume shape'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY pyramid_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
xlength : positive_length_measure;
ylength : positive_length_measure;
height : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
qualifiers : SET [1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY (temp <* qualifiers| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRECISION_QUALIFIER'
IN TYPEOF(temp)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATHS_VALUE_PRECISION_QUALIFIER'
IN TYPEOF(temp)))) < 2;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY qualitative_uncertainty
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY quantified_assembly_component_usage
SUBTYPE OF (assembly_component_usage);
quantity : measure_with_unit;
WHERE
WR1: NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY quantifier_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (multiple_arity_generic_expression);
variables : LIST [1:?] OF UNIQUE generic_variable;
WHERE
WR1: SIZEOF(QUERY (vrbl <* variables| NOT (vrbl IN SELF\
multiple_arity_generic_expression.operands))) = 0;
WR2: SIZEOF(QUERY (vrbl <* variables| NOT (schema_prefix +
'BOUND_VARIABLE_SEMANTICS' IN TYPEOF(vrbl.interpretation.
semantics)))) = 0;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY quasi_uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY quasi_uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY quasi_uniform_volume
SUBTYPE OF (b_spline_volume);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rack_and_pinion_pair
SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
pinion_radius : length_measure;
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY rack_and_pinion_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : rack_and_pinion_pair;
actual_displacement : length_measure;
DERIVE
actual_rotation : plane_angle_measure := 0.0;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY rack_and_pinion_pair_with_range
SUBTYPE OF (rack_and_pinion_pair);
lower_limit_rack_displacement : OPTIONAL length_measure;
upper_limit_rack_displacement : OPTIONAL length_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_rack_displacement) OR NOT EXISTS(
upper_limit_rack_displacement)) XOR (
lower_limit_rack_displacement < upper_limit_rack_displacement
);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY radioactivity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RADIOACTIVITY_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY radioactivity_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.becquerel);
END_ENTITY; -- 10303-41: measure_schema
ENTITY radius_dimension
SUBTYPE OF (dimension_curve_directed_callout);
WHERE
WR1: SIZEOF(QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_CURVE'
IN TYPEOF(con)))) <= 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY range_characteristic
SUBTYPE OF (representation, descriptive_representation_item);
WHERE
WR1: NOT (SELF\representation.name IN [ 'tolerance',
'minimum tolerance', 'maximum tolerance', 'nominal tolerance'
, 'plus minus tolerance', 'symmetrical tolerance',
'statistical tolerance' ]);
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY ratio_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_UNIT' IN TYPEOF
(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY ratio_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY rational_b_spline_curve
SUBTYPE OF (b_spline_curve);
weights_data : LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:upper_index_on_control_points] OF REAL :=
list_to_array(weights_data, 0,
upper_index_on_control_points);
WHERE
WR1: SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.
control_points_list);
WR2: curve_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_b_spline_surface
SUBTYPE OF (b_spline_surface);
weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL :=
make_array_of_array(weights_data, 0, u_upper, 0, v_upper);
WHERE
WR1: (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.
control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(
SELF\b_spline_surface.control_points_list[1]));
WR2: surface_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_b_spline_volume
SUBTYPE OF (b_spline_volume);
weights_data : LIST [2:?] OF LIST [2:?] OF LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF ARRAY [0:w_upper]
OF REAL := make_array_of_array_of_array(weights_data, 0,
u_upper, 0, v_upper, 0, w_upper);
WHERE
WR1: ((SIZEOF(weights_data) = SIZEOF(SELF\b_spline_volume.
control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(
SELF\b_spline_volume.control_points_list[1]))) AND (SIZEOF(
weights_data[1][1]) = SIZEOF(SELF\b_spline_volume.
control_points_list[1][1]));
WR2: volume_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_locally_refined_spline_curve
SUBTYPE OF (locally_refined_spline_curve);
weights_data : LIST [2:?] OF REAL;
WHERE
WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_curve.
control_points_list);
WR2: weights_positive(weights_data);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_locally_refined_spline_surface
SUBTYPE OF (locally_refined_spline_surface);
weights_data : LIST [4:?] OF REAL;
WHERE
WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_surface.
control_points_list);
WR2: weights_positive(weights_data);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_locally_refined_spline_volume
SUBTYPE OF (locally_refined_spline_volume);
weights_data : LIST [8:?] OF REAL;
WHERE
WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_volume.
control_points_list);
WR2: weights_positive(weights_data);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_representation_item
SUBTYPE OF (representation_item, slash_expression);
WHERE
WR1: SIZEOF(QUERY (operand <* SELF\binary_generic_expression.operands|
NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_LITERAL' IN
TYPEOF(operand)))) = 0;
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY rationalize_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
DERIVE
fun : maths_function := SELF\unary_generic_expression.operand;
WHERE
WR1: (space_dimension(fun.domain) = 1) AND (space_dimension(fun.range)
= 1);
WR2: number_tuple_subspace_check(factor1(fun.range));
WR3: space_dimension(factor1(fun.range)) > 1;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY real_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY real_interval_from_min
SUBTYPE OF (maths_space, generic_literal);
min : REAL;
min_closure : open_closed;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY real_interval_to_max
SUBTYPE OF (maths_space, generic_literal);
max : REAL;
max_closure : open_closed;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY real_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value : REAL;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY real_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY real_representation_item
SUBTYPE OF (representation_item, real_literal);
END_ENTITY; -- 10303-1773: basic_data_representation_mim
ENTITY real_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST [1:?] OF REAL;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY rectangular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 4)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (((srwp_i.name =
'orientation') OR (srwp_i.name = 'length')) OR (srwp_i.name =
'width')) OR (srwp_i.name = 'corner radius'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0)))
= 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1))) = 0))
) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) <= 1)
)) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rectangular_composite_surface
SUBTYPE OF (bounded_surface);
segments : LIST [1:?] OF LIST [1:?] OF surface_patch;
DERIVE
n_u : INTEGER := SIZEOF(segments);
n_v : INTEGER := SIZEOF(segments[1]);
WHERE
WR1: SIZEOF(QUERY (s <* segments| (n_v <> SIZEOF(s)))) = 0;
WR2: constraints_rectangular_composite_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rectangular_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 5))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'row layout direction'))) = 1))) =
0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'column layout direction'))) = 1))
) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 5))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of rows'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of columns'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'row spacing'))) = 1)))
= 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'column spacing'))) = 1)
)) = 0))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rectangular_pyramid
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
xlength : positive_length_measure;
ylength : positive_length_measure;
height : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY rectangular_trimmed_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
u1 : parameter_value;
u2 : parameter_value;
v1 : parameter_value;
v2 : parameter_value;
usense : BOOLEAN;
vsense : BOOLEAN;
WHERE
WR1: u1 <> u2;
WR2: v1 <> v2;
WR3: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'
IN TYPEOF(basis_surface)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF
(basis_surface)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_OF_REVOLUTION'
IN TYPEOF(basis_surface))) OR (usense = (u2 > u1));
WR4: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SPHERICAL_SURFACE'
IN TYPEOF(basis_surface)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOROIDAL_SURFACE'
IN TYPEOF(basis_surface))) OR (vsense = (v2 > v1));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY referenced_modified_datum
SUBTYPE OF (datum_reference);
modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY regular_table_function
SUBTYPE OF (linearized_table_function);
increments : LIST [1:?] OF INTEGER;
WHERE
WR1: SIZEOF(increments) = SIZEOF(SELF\explicit_table_function.shape);
WR2: extremal_position_check(SELF);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY reindexed_array_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
starting_indices : LIST [1:?] OF INTEGER;
WHERE
WR1: function_is_array(SELF\unary_generic_expression.operand);
WR2: SIZEOF(starting_indices) = SIZEOF(shape_of_array(SELF\
unary_generic_expression.operand));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY relative_event_occurrence
SUBTYPE OF (event_occurrence);
base_event : event_occurrence;
offset : time_measure_with_unit;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY removal_volume
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'shape volume occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'volume shape usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (sdr.relating_shape_aspect.description =
'volume shape'))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rep_item_group
SUBTYPE OF (group, representation_item);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS'
)) > 0;
WR2: SIZEOF(QUERY (r <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION.ITEMS'
)| (r.name = 'group representation'))) > 0;
WR3: SIZEOF(QUERY (ga <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GROUP_ASSIGNMENT.ASSIGNED_GROUP'
)| (ga.role.name <> 'group membership'))) = 0;
WR4: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOPOLOGICAL_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' ] *
TYPEOF(SELF)) = 1;
END_ENTITY; -- 10303-1008: layer_assignment_mim
ENTITY repackaging_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_function;
input_repack : repackage_options;
output_repack : repackage_options;
selected_output : nonnegative_integer;
WHERE
WR1: (input_repack <> ro_wrap_as_tuple) OR (space_dimension(operand.
domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(
factor1(operand.domain)));
WR2: (output_repack <> ro_unwrap_tuple) OR (space_dimension(operand.
range) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(
factor1(operand.range)));
WR3: selected_output <= space_dimension(repackage(operand.range,
output_repack));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY reparametrised_composite_curve_segment
SUBTYPE OF (composite_curve_segment);
param_length : parameter_value;
WHERE
WR1: param_length > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY replicate_feature
SUPERTYPE OF (ONEOF(circular_pattern, rectangular_pattern,
feature_pattern))
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPLICATE_FEATURE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INSTANCED_FEATURE'
] * TYPEOF(fcr.related_shape_aspect)) >= 1) AND (fcr.name =
'pattern basis'))) = 1;
WR3: SIZEOF(QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))) + SIZEOF(QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY repositioned_tessellated_item
SUBTYPE OF (tessellated_item);
location : axis2_placement_3d;
WHERE
WR1: NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_CURVE_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_GEOMETRIC_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_POINT_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SURFACE_SET'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SHELL'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SOLID'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_WIRE'
] * TYPEOF(SELF)) = 0);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY representation
SUPERTYPE OF ((ONEOF(interpolated_configuration_representation,
link_motion_representation_along_path) ANDOR ONEOF(
kinematic_topology_structure, kinematic_topology_directed_structure,
kinematic_topology_network_structure)) ANDOR ONEOF(
kinematic_link_representation, kinematic_topology_structure,
kinematic_topology_directed_structure,
kinematic_topology_network_structure, mechanism_representation,
shape_representation));
name : label;
items : SET [1:?] OF representation_item;
context_of_items : representation_context;
DERIVE
id : identifier := get_id_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_context;
context_identifier : identifier;
context_type : text;
INVERSE
representations_in_context : SET [1:?] OF representation FOR
context_of_items;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_context_reference;
context_identifier : identifier;
INVERSE
representations_in_context : SET [1:?] OF representation_reference FOR
context_of_items;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_item
SUPERTYPE OF ((ONEOF(mapped_item, styled_item) ANDOR ONEOF(
compound_representation_item, mapped_item, value_representation_item)
) ANDOR ONEOF(boolean_representation_item, date_representation_item,
date_time_representation_item, integer_representation_item,
logical_representation_item, rational_representation_item,
real_representation_item));
name : label;
WHERE
WR1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_item_relationship;
name : label;
description : OPTIONAL text;
relating_representation_item : representation_item;
related_representation_item : representation_item;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_map;
mapping_origin : representation_item;
mapped_representation : representation;
INVERSE
map_usage : SET [1:?] OF mapped_item FOR mapping_source;
WHERE
WR1: item_in_context(mapping_origin, mapped_representation\
representation.context_of_items);
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_reference;
id : identifier;
context_of_items : representation_context_reference;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_relationship;
name : label;
description : OPTIONAL text;
rep_1 : representation_or_representation_reference;
rep_2 : representation_or_representation_reference;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_relationship_with_transformation
SUBTYPE OF (representation_relationship);
transformation_operator : transformation;
WHERE
WR1: SELF\representation_relationship.rep_1.context_of_items :<>: SELF\
representation_relationship.rep_2.context_of_items;
WR2: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ITEM_DEFINED_TRANSFORMATION'
IN TYPEOF(transformation_operator)) OR (SELF\
representation_relationship.rep_1 IN using_representations(
transformation_operator\item_defined_transformation.
transform_item_1)) AND (SELF\representation_relationship.
rep_2 IN using_representations(transformation_operator\
item_defined_transformation.transform_item_2));
END_ENTITY; -- 10303-43: representation_schema
ENTITY requirement_assigned_object
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : requirement_assignment;
items : SET [1:1] OF requirement_assigned_item;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY requirement_assignment
SUBTYPE OF (characterized_object, group);
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY requirement_for_action_resource
SUBTYPE OF (action_resource_requirement);
resources : SET [1:?] OF action_resource;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY requirement_source
SUBTYPE OF (group);
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY requirement_view_definition_relationship
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-1142: requirement_view_definition_relationship_mim
ENTITY resistance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESISTANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY resistance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(
si_unit_name.ohm);
END_ENTITY; -- 10303-41: measure_schema
ENTITY resource_property;
name : label;
description : text;
resource : characterized_resource_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY resource_property_representation;
name : label;
description : text;
property : resource_property;
representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
ENTITY resource_requirement_type;
name : label;
description : text;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY restriction_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_space;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY resulting_path
SUBTYPE OF (link_motion_representation_along_path);
controlling_joints : SET [1:?] OF kinematic_joint;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
ENTITY retention
SUBTYPE OF (action);
WHERE
WR1: SIZEOF(QUERY (aa <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_ASSIGNMENT.ASSIGNED_ACTION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_ACTION_ASSIGNMENT'
IN TYPEOF(aa)) AND (aa.role.name = 'retention'))) >= 1;
WR2: ((SIZEOF(QUERY (atia <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'
)| (atia.role.name = 'minimum retention period'))) = 1) AND (
SIZEOF(QUERY (atia <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'
)| (atia.role.name = 'maximum retention period'))) = 1)) AND
(SIZEOF(QUERY (atia1 <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'
)| (((atia1.role.name = 'minimum retention period') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_INTERVAL_WITH_BOUNDS'
IN TYPEOF(atia1.assigned_time_interval))) AND (EXISTS(atia1.
assigned_time_interval\time_interval_with_bounds.
secondary_bound) OR EXISTS(atia1.assigned_time_interval\
time_interval_with_bounds.duration))) AND (SIZEOF(QUERY (
atia2 <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'
)| (((atia2.role.name = 'maximum retention period') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_INTERVAL_WITH_BOUNDS'
IN TYPEOF(atia2.assigned_time_interval))) AND (EXISTS(atia2.
assigned_time_interval\time_interval_with_bounds.
secondary_bound) OR EXISTS(atia2.assigned_time_interval\
time_interval_with_bounds.duration))) AND (atia1.
assigned_time_interval\time_interval_with_bounds.
primary_bound :=: atia2.assigned_time_interval\
time_interval_with_bounds.primary_bound))) = 1))) = 1);
WR3: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION'
)) + SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RELATIONSHIP.RELATED_ACTION'
)) = 0;
END_ENTITY; -- 10303-1628: design_product_data_management_mim
ENTITY revolute_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY revolute_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : revolute_pair;
actual_rotation : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY revolute_pair_with_range
SUBTYPE OF (revolute_pair);
lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(
upper_limit_actual_rotation)) XOR (
lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY revolved_area_solid
SUBTYPE OF (swept_area_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := representation_item('') ||
geometric_representation_item() || curve() || line(axis.
location, representation_item('') ||
geometric_representation_item() || vector(axis.z, 1.0));
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY revolved_face_solid
SUBTYPE OF (swept_face_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := representation_item('') ||
geometric_representation_item() || curve() || line(axis.
location, representation_item('') ||
geometric_representation_item() || vector(axis.z, 1.0));
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY revolved_profile
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'groove', 'flat',
'round', 'open profile' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'removal direction'))) = 1;
WR5: NOT (SELF\characterized_object.description = 'open profile') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'outer edge shape occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'outer edge shape'))) = 1
))) = 1))) = 0);
WR6: NOT (SELF\characterized_object.description = 'flat') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'flat edge shape occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'flat edge shape'))) = 1)
)) = 1))) = 0);
WR7: NOT (SELF\characterized_object.description = 'round') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'rounded edge shape occurrence') AND
(SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'rounded edge shape'))) =
1))) = 1))) = 0);
WR8: NOT (SELF\characterized_object.description = 'groove') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'sweep occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.
relating_shape_aspect.description = 'sweep'))) = 1))) = 1)))
= 0);
WR9: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rib_top
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'rib top condition occurrence') AND
(SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'rib top usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIB_TOP_FLOOR'
IN TYPEOF(sdr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIB_TOP' IN
TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) = 1))
) = 1))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'removal direction'))) = 1))) = 1;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rib_top_floor
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex' ];
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar.description = 'rib top usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'rib top condition occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIB_TOP' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIB_TOP_FLOOR'
IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
WR4: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'rib top face'))) = 1))) = 0);
WR5: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'rib top face'))) = 1))) = 0);
WR6: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pds <* QUERY (
pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NGON_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_CLOSED_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.
relating_shape_aspect.description = 'rib top floor boundary')
)) = 1))) = 1))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY right_angular_wedge
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
ltx : length_measure;
WHERE
WR1: (0.0 <= ltx) AND (ltx < x);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY right_circular_cone
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
height : positive_length_measure;
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
WR1: radius >= 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY right_circular_cylinder
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
height : positive_length_measure;
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY right_to_usage_association
SUBTYPE OF (action_method_relationship);
SELF\action_method_relationship.relating_method :
information_usage_right;
SELF\action_method_relationship.related_method : information_right;
DERIVE
right_applied : information_right := SELF\action_method_relationship.
related_method;
right_usage : information_usage_right := SELF\
action_method_relationship.relating_method;
END_ENTITY; -- 10303-1241: information_rights_mim
ENTITY rigid_link_representation
SUBTYPE OF (kinematic_link_representation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY role_association;
role : object_role;
item_with_role : role_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY rolling_curve_pair
SUBTYPE OF (planar_curve_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY rolling_curve_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : rolling_curve_pair;
actual_point_on_curve_1 : point_on_curve;
WHERE
WR1: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=:
actual_point_on_curve_1.basis_curve;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY rolling_surface_pair
SUBTYPE OF (surface_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY rolling_surface_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : rolling_surface_pair;
actual_point_on_surface : point_on_surface;
actual_rotation : plane_angle_measure;
WHERE
WR1: SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=:
actual_point_on_surface.basis_surface;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY rotation_about_direction
SUBTYPE OF (geometric_representation_item);
direction_of_axis : direction;
rotation_angle : plane_angle_measure;
WHERE
WR1: SIZEOF(direction_of_axis.direction_ratios) = 3;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY round_hole
SUPERTYPE OF (ONEOF(basic_round_hole, explicit_round_hole))
SUBTYPE OF (feature_definition);
WHERE
WR1: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_ROUND_HOLE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BASIC_ROUND_HOLE'
] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY (pds <* QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'diameter occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_CLOSED_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name =
'diameter'))) = 1))) = 1))) = 0);
WR2: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_ROUND_HOLE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BASIC_ROUND_HOLE'
] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY (pds <* QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'hole depth occurrence') AND (SIZEOF
(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name =
'hole depth')) AND (sdr.relating_shape_aspect.description =
'linear'))) = 1))) = 1))) = 0);
WR3: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_ROUND_HOLE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BASIC_ROUND_HOLE'
] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY (pds <* QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'bottom condition occurrence') AND (
SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'hole bottom usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.HOLE_BOTTOM' IN
TYPEOF(fcr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))
) = 1))) = 0);
WR4: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_ROUND_HOLE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BASIC_ROUND_HOLE'
] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY (pds <* QUERY (pd
<* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'change in diameter occurrence') AND
(SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'taper usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAPER' IN TYPEOF
(fcr.relating_shape_aspect)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))
) <= 1))) = 0);
WR5: (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPLICIT_ROUND_HOLE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BASIC_ROUND_HOLE'
] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY (pdr <*
get_property_definition_representations(SELF)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rounded_end
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description =
'partial circular boundary occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'course of travel occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY rounded_u_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (srwp_i.name =
'orientation') OR (srwp_i.name = 'depth'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))
) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY roundness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY row_representation_item
SUBTYPE OF (compound_representation_item);
SELF\compound_representation_item.item_element :
list_representation_item;
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY ruled_surface_swept_area_solid
SUBTYPE OF (surface_curve_swept_area_solid);
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE' IN
TYPEOF(SELF.reference_surface)) AND (SELF.reference_surface\
b_spline_surface.u_degree = 1);
WR2: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(
SELF.directrix)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) AND (SELF.
directrix\surface_curve.curve_3d\b_spline_curve.degree = SELF
.reference_surface\b_spline_surface.v_degree);
END_ENTITY; -- 10303-523: aic_curve_swept_solid
ENTITY runout_zone_definition
SUBTYPE OF (tolerance_zone_definition);
orientation : runout_zone_orientation;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY runout_zone_orientation;
angle : plane_angle_measure_with_unit;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY runout_zone_orientation_reference_direction
SUBTYPE OF (runout_zone_orientation);
orientation_defining_relationship : shape_aspect_relationship;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY satisfied_requirement
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : satisfies_requirement;
items : SET [1:1] OF product_definition;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY satisfies_requirement
SUBTYPE OF (group);
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY satisfying_item
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : satisfies_requirement;
items : SET [1:1] OF requirement_satisfaction_item;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY scan_3d_model
SUBTYPE OF (scanned_data_item);
scanner_info : SET [1:?] OF scanner_property;
scanned_points : SET [1:?] OF scanned_data_item;
WHERE
WR1: SIZEOF(QUERY (tmp <* scanned_points| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SCAN_3D_MODEL'
IN TYPEOF(tmp)))) = 0;
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY scan_data_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET [1:?] OF scanned_data_item;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY scanned_data_item
SUPERTYPE OF (ONEOF(point_cloud_dataset, point_cloud_superdataset,
triangulated_point_cloud_dataset, scan_3d_model))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1: SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SCAN_DATA_SHAPE_REPRESENTATION'
IN TYPEOF(using_rep)))) = 0;
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY scanner_basic_properties
SUBTYPE OF (scanner_property);
scanner_identification : label;
scanner_location : axis2_placement_3d;
scanner_uncertainty : OPTIONAL positive_length_measure;
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY scanner_property
ABSTRACT SUPERTYPE
SUBTYPE OF (representation_item);
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY screw_pair
SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
pitch : length_measure;
WHERE
WR1: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY screw_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : screw_pair;
actual_rotation : plane_angle_measure;
DERIVE
actual_translation : length_measure := SELF\pair_value.applies_to_pair\
screw_pair.pitch *
plane_angle_for_pair_in_radian(SELF\pair_value.
applies_to_pair, actual_rotation) / 2 * PI;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY screw_pair_with_range
SUBTYPE OF (screw_pair);
lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(
upper_limit_actual_rotation)) XOR (
lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY seam_curve
SUBTYPE OF (surface_curve);
WHERE
WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) =
associated_surface(SELF\surface_curve.associated_geometry[2])
;
WR3: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(
SELF\surface_curve.associated_geometry[1]);
WR4: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(
SELF\surface_curve.associated_geometry[2]);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY seam_edge
SUBTYPE OF (oriented_edge);
pcurve_reference : pcurve;
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(edge_element)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SEAM_CURVE' IN
TYPEOF(edge_element\edge_curve.edge_geometry));
WR2: pcurve_reference IN edge_element\edge_curve.edge_geometry\
surface_curve.associated_geometry;
END_ENTITY; -- 10303-42: topology_schema
ENTITY security_classification;
name : label;
purpose : text;
security_level : security_classification_level;
END_ENTITY; -- 10303-41: security_classification_schema
ENTITY security_classification_assignment
ABSTRACT SUPERTYPE;
assigned_security_classification : security_classification;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
)) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY security_classification_level;
name : label;
END_ENTITY; -- 10303-41: security_classification_schema
ENTITY selector_function
SUBTYPE OF (maths_function, generic_literal);
selector : input_selector;
source_of_domain : maths_space_or_function;
WHERE
WR1: no_cyclic_domain_reference(source_of_domain, [ SELF ]);
WR2: expression_is_constant(domain_from(source_of_domain));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY sequential_method
SUBTYPE OF (serial_action_method);
sequence_position : count_measure;
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY serial_action_method
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY serial_numbered_effectivity
SUBTYPE OF (effectivity);
effectivity_start_id : identifier;
effectivity_end_id : OPTIONAL identifier;
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY series_composed_function
SUBTYPE OF (maths_function, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF
maths_function;
WHERE
WR1: composable_sequence(SELF\multiple_arity_generic_expression.
operands);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY shape_aspect
SUPERTYPE OF ((ONEOF(contacting_feature, datum, datum_feature,
datum_target, datum_system, general_datum_reference) ANDOR ONEOF(
shape_aspect_occurrence)) ANDOR constituent_shape_aspect);
name : label;
description : OPTIONAL text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
UNIQUE
UR1: id, of_shape;
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY shape_aspect_associativity
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: SELF.relating_shape_aspect.product_definitional;
WR2: NOT SELF.related_shape_aspect.product_definitional;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
ENTITY shape_aspect_deriving_relationship
SUBTYPE OF (shape_aspect_relationship);
SELF\shape_aspect_relationship.relating_shape_aspect :
derived_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY shape_aspect_occurrence
SUBTYPE OF (shape_aspect);
definition : shape_aspect_or_characterized_object;
WHERE
WR1: acyclic_shape_aspect_occurrence(SELF, definition);
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY shape_aspect_relationship;
name : label;
description : OPTIONAL text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY shape_defining_relationship
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
SELF\property_definition_representation.definition :
property_definition;
SELF\property_definition_representation.used_representation :
shape_representation;
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(definition)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINITION'
IN TYPEOF(definition\property_definition.definition));
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_dimension_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET [1:?] OF
shape_dimension_representation_item;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY shape_feature_definition
SUBTYPE OF (feature_definition);
END_ENTITY; -- 10303-1764: shape_feature_mim
ENTITY shape_feature_definition_element_relationship
SUBTYPE OF (shape_aspect_relationship, characterized_object);
DERIVE
SELF\characterized_object.name : label := SELF\
shape_aspect_relationship.name;
SELF\characterized_object.description : text := SELF\
shape_aspect_relationship.description;
END_ENTITY; -- 10303-1764: shape_feature_mim
ENTITY shape_feature_definition_relationship
SUBTYPE OF (characterized_object_relationship, characterized_object);
SELF\characterized_object_relationship.relating_object :
shape_feature_definition;
SELF\characterized_object_relationship.related_object :
shape_feature_definition;
DERIVE
SELF\characterized_object.name : label := SELF\
characterized_object_relationship.name;
SELF\characterized_object.description : text := SELF\
characterized_object_relationship.description;
END_ENTITY; -- 10303-1764: shape_feature_mim
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_representation_reference
SUBTYPE OF (representation_reference);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_REFERENCE'
] * (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF
(SELF\representation_relationship.rep_2))) >= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_representation_with_parameters
SUBTYPE OF (shape_representation);
SELF\representation.items : SET [1:?] OF
shape_representation_with_parameters_items;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY shell_based_surface_model
SUBTYPE OF (geometric_representation_item);
sbsm_boundary : SET [1:?] OF shell;
WHERE
WR1: constraints_geometry_shell_based_surface_model(SELF);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY shell_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
sbwm_boundary : SET [1:?] OF shell;
WHERE
WR1: constraints_geometry_shell_based_wireframe_model(SELF);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY shell_based_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'
] * TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' ]
* TYPEOF(it)) = 1))) >= 1;
WR3: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list|
NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_CURVE' IN
TYPEOF(el.edge_element)))) = 0))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(wsb)))| NOT (SIZEOF(QUERY (pline_el <* QUERY (el <*
eloop\path.edge_list| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(el.edge_element\edge_curve.edge_geometry)))| NOT (
SIZEOF(pline_el.edge_element\edge_curve.edge_geometry\
polyline.points) > 2))) = 0))) = 0))) = 0))) = 0;
WR5: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list|
NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.
edge_geometry))) = 0))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list|
NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(el.edge_element.edge_start)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(el.edge_element.edge_end))))) = 0))) = 0))) = 0))) =
0;
WR7: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list|
NOT (valid_wireframe_vertex_point(el.edge_element.edge_start
\vertex_point.vertex_geometry) AND
valid_wireframe_vertex_point(el.edge_element.edge_end\
vertex_point.vertex_geometry)))) = 0))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (vloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(wsb)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vloop\vertex_loop.loop_vertex)))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(sb)))| NOT (SIZEOF(QUERY (vloop <* QUERY (wsb <* ws\
wire_shell.wire_shell_extent| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_LOOP' IN
TYPEOF(wsb)))| NOT valid_wireframe_vertex_point(vloop\
vertex_loop.loop_vertex\vertex_point.vertex_geometry))) = 0))
) = 0))) = 0;
WR10: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (vs <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_SHELL' IN
TYPEOF(sb)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_POINT' IN
TYPEOF(vs\vertex_shell.vertex_shell_extent.loop_vertex)))) =
0))) = 0;
WR11: SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)))| NOT (SIZEOF(QUERY (vs <* QUERY (sb <* sbwm\
shell_based_wireframe_model.sbwm_boundary| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_SHELL' IN
TYPEOF(sb)))| NOT valid_wireframe_vertex_point(vs\
vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.
vertex_geometry))) = 0))) = 0;
WR12: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(it)))| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR13: SELF.context_of_items\geometric_representation_context.
coordinate_space_dimension = 3;
END_ENTITY; -- 10303-502: aic_shell_based_wireframe
ENTITY si_absorbed_dose_unit
SUBTYPE OF (absorbed_dose_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.gray;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_capacitance_unit
SUBTYPE OF (capacitance_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.farad;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_conductance_unit
SUBTYPE OF (conductance_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.siemens;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_dose_equivalent_unit
SUBTYPE OF (dose_equivalent_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.sievert;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_electric_charge_unit
SUBTYPE OF (electric_charge_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.coulomb;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_electric_potential_unit
SUBTYPE OF (electric_potential_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.volt;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_energy_unit
SUBTYPE OF (energy_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.joule;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_force_unit
SUBTYPE OF (force_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.newton;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_frequency_unit
SUBTYPE OF (frequency_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.hertz;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_illuminance_unit
SUBTYPE OF (illuminance_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.lux;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_inductance_unit
SUBTYPE OF (inductance_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.henry;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_magnetic_flux_density_unit
SUBTYPE OF (magnetic_flux_density_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.tesla;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_magnetic_flux_unit
SUBTYPE OF (magnetic_flux_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.weber;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_power_unit
SUBTYPE OF (power_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.watt;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_pressure_unit
SUBTYPE OF (pressure_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.pascal;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_radioactivity_unit
SUBTYPE OF (radioactivity_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.becquerel;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_resistance_unit
SUBTYPE OF (resistance_unit, si_unit);
WHERE
WR1: SELF\si_unit.name = si_unit_name.ohm;
WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY si_unit
SUBTYPE OF (named_unit);
prefix : OPTIONAL si_prefix;
name : si_unit_name;
DERIVE
SELF\named_unit.dimensions : dimensional_exponents :=
dimensions_for_si_unit(name);
WHERE
WR1: NOT (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MASS_UNIT' IN
TYPEOF(SELF)) AND (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DERIVED_UNIT_ELEMENT.UNIT'
)) > 0)) OR (prefix = si_prefix.kilo);
END_ENTITY; -- 10303-41: measure_schema
ENTITY side_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'axial cutting depth') AND
verify_length_measure_action_property(SELF,
'axial cutting depth');
WR3: verify_optional_action_property(SELF, 'radial cutting depth') AND
verify_length_measure_action_property(SELF,
'radial cutting depth');
WR4: verify_optional_action_property(SELF, 'allowance side') AND
verify_length_measure_action_property(SELF, 'allowance side')
;
WR5: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance side');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY simple_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF(boolean_literal, boolean_variable))
SUBTYPE OF (boolean_expression, simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY simple_generic_expression
ABSTRACT SUPERTYPE OF (ONEOF(generic_literal, generic_variable))
SUBTYPE OF (generic_expression);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY simple_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(literal_number, numeric_variable))
SUBTYPE OF (numeric_expression, simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY simple_string_expression
ABSTRACT SUPERTYPE OF (ONEOF(string_literal, string_variable))
SUBTYPE OF (string_expression, simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY simplified_counterbore_hole_definition
SUBTYPE OF (counterbore_hole_definition);
WHERE
WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items
) = 1;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY simplified_counterdrill_hole_definition
SUBTYPE OF (counterdrill_hole_definition);
WHERE
WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items
) = 1;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY simplified_countersink_hole_definition
SUBTYPE OF (countersink_hole_definition);
WHERE
WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items
) = 1;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY simplified_spotface_hole_definition
SUBTYPE OF (spotface_hole_definition,
simplified_counterbore_hole_definition);
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY sin_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY single_property_is_definition
SUBTYPE OF (property_definition);
SELF\property_definition.definition : product_definition;
UNIQUE
UR1: definition;
END_ENTITY; -- 10303-1399: property_as_definition_mim
ENTITY slash_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY sliding_curve_pair
SUBTYPE OF (planar_curve_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY sliding_curve_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : sliding_curve_pair;
actual_point_on_curve_1 : point_on_curve;
actual_point_on_curve_2 : point_on_curve;
WHERE
WR1: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=:
actual_point_on_curve_1.basis_curve;
WR2: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_2 :=:
actual_point_on_curve_2.basis_curve;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY sliding_surface_pair
SUBTYPE OF (surface_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY sliding_surface_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : sliding_surface_pair;
actual_point_on_surface_1 : point_on_surface;
actual_point_on_surface_2 : point_on_surface;
actual_rotation : plane_angle_measure;
WHERE
WR1: SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=:
actual_point_on_surface_1.basis_surface;
WR2: SELF\pair_value.applies_to_pair\surface_pair.surface_2 :=:
actual_point_on_surface_2.basis_surface;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY slot
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'swept shape occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1)))
= 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'course of travel occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND ((
sar.name = 'course of travel') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar))))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT ((SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'end condition occurrence') AND (
SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| ((sar.description = 'slot end usage') AND (sar.name IN [
'course of travel start', 'course of travel end' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT_END' IN
TYPEOF(fcr.relating_shape_aspect)) AND (fcr.
relating_shape_aspect.description IN [ 'open', 'radiused',
'flat', 'woodruff' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT' IN TYPEOF(
fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 2)
OR (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'end condition occurrence') AND (
SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| ((sar.description = 'slot end usage') AND (sar.name IN [
'course of travel start', 'course of travel end' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT_END' IN
TYPEOF(fcr.relating_shape_aspect)) AND (fcr.
relating_shape_aspect.description IN [ 'loop' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT' IN TYPEOF(
fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))
)) = 0;
WR5: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'end condition occurrence') AND (
SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| ((sar.description = 'slot end usage') AND (sar.name IN [
'course of travel start', 'course of travel end' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT_END' IN
TYPEOF(fcr.relating_shape_aspect)) AND (fcr.
relating_shape_aspect.description IN [ 'loop' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT' IN TYPEOF(
fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))
) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'course of travel occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND ((
sar.name = 'course of travel') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar))))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description IN [ 'complex',
'complete circular' ]))) = 1))) = 1))) = 0);
WR6: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY slot_end
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'open', 'radiused', 'flat', 'woodruff',
'loop' ];
WR3: NOT (SELF.description IN [ 'open', 'radiused', 'loop' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
WR4: NOT (SELF.description IN [ 'flat', 'woodruff' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description IN [ 'flat' ]) OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR6: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first radius'))) = 1)))
= 0))) = 0);
WR7: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second radius'))) = 1))
) = 0))) = 0);
WR8: NOT (SELF.description = 'woodruff') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it)) AND (it.name = 'radius'))) = 1))) = 0))) = 0)
;
WR9: NOT (SELF.description IN [ 'woodruff' ]) OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0);
WR10: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| ((sar.description = 'slot end usage') AND (sar.name IN [
'course of travel start', 'course of travel end' ])) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'end condition occurrence') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT' IN TYPEOF(
fcr.related_shape_aspect.of_shape.definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT_END' IN
TYPEOF(fcr.relating_shape_aspect)))) >= 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SOLID_ANGLE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY solid_angle_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY solid_curve_font
SUBTYPE OF (pre_defined_curve_font);
END_ENTITY; -- 10303-1749: styled_curve_mim
ENTITY solid_model
SUPERTYPE OF (ONEOF(csg_solid, manifold_solid_brep, swept_face_solid,
swept_area_solid, swept_disk_solid, solid_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY solid_replica
SUBTYPE OF (solid_model);
parent_solid : solid_model;
transformation : cartesian_transformation_operator_3d;
WHERE
WR1: acyclic_solid_replica(SELF, parent_solid);
WR2: parent_solid\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY source_for_requirement
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : requirement_source;
items : SET [1:1] OF requirement_source_item;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY sourced_requirement
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : requirement_source;
items : SET [1:1] OF product_definition;
END_ENTITY; -- 10303-1233: requirement_assignment_mim
ENTITY specification_definition
SUBTYPE OF (product_definition);
END_ENTITY; -- 10303-1747: specification_document_mim
ENTITY specified_higher_usage_occurrence
SUBTYPE OF (assembly_component_usage);
upper_usage : assembly_component_usage;
next_usage : next_assembly_usage_occurrence;
UNIQUE
UR1: upper_usage, next_usage;
WHERE
WR1: SELF :<>: upper_usage;
WR2: SELF\product_definition_relationship.relating_product_definition
:=: upper_usage.relating_product_definition;
WR3: SELF\product_definition_relationship.related_product_definition
:=: next_usage.related_product_definition;
WR4: (upper_usage.related_product_definition :=: next_usage.
relating_product_definition) OR (SIZEOF(QUERY (pdr <* USEDIN(
upper_usage.related_product_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (pdr.relating_product_definition :=: next_usage.
relating_product_definition))) = 1);
WR5: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NEXT_ASSEMBLY_USAGE_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SPECIFIED_HIGHER_USAGE_OCCURRENCE'
] * TYPEOF(upper_usage)) = 1;
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY sphere
SUBTYPE OF (geometric_representation_item);
radius : positive_length_measure;
centre : point;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY spherical_cap
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))
) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'internal angle'))) = 1)
)) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY spherical_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY spherical_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : spherical_pair_select;
input_orientation : spatial_rotation;
DERIVE
actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(
SELF\pair_value.applies_to_pair,
input_orientation);
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY spherical_pair_with_pin
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY spherical_pair_with_pin_and_range
SUBTYPE OF (spherical_pair_with_pin);
lower_limit_yaw : OPTIONAL plane_angle_measure;
upper_limit_yaw : OPTIONAL plane_angle_measure;
lower_limit_roll : OPTIONAL plane_angle_measure;
upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (
lower_limit_yaw < upper_limit_yaw);
WR2: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR
(lower_limit_roll < upper_limit_roll);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY spherical_pair_with_range
SUBTYPE OF (spherical_pair);
lower_limit_yaw : OPTIONAL plane_angle_measure;
upper_limit_yaw : OPTIONAL plane_angle_measure;
lower_limit_pitch : OPTIONAL plane_angle_measure;
upper_limit_pitch : OPTIONAL plane_angle_measure;
lower_limit_roll : OPTIONAL plane_angle_measure;
upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (
lower_limit_yaw < upper_limit_yaw);
WR2: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch))
XOR (lower_limit_pitch < upper_limit_pitch);
WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR
(lower_limit_roll < upper_limit_roll);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY spherical_point
SUBTYPE OF (cartesian_point);
r : length_measure;
theta : plane_angle_measure;
phi : plane_angle_measure;
DERIVE
SELF\cartesian_point.coordinates : LIST [3:3] OF length_measure := [ r
* SIN(theta) * COS(phi), r * SIN(theta) * SIN(phi), r
* COS(theta) ];
WHERE
WR1: r >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY spherical_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY spotface_definition
SUBTYPE OF (explicit_round_hole);
spotface_radius : positive_length_measure_with_unit;
spotface_radius_tolerance : OPTIONAL tolerance_value;
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(spotface_radius_tolerance\tolerance_value.
lower_bound);
WR2:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(spotface_radius_tolerance\tolerance_value.
upper_bound);
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY spotface_hole_definition
SUBTYPE OF (counterbore_hole_definition);
SELF\counterbore_hole_definition.counterbore : LIST [1:?] OF UNIQUE
spotface_definition;
DERIVE
spotface : LIST [1:?] OF UNIQUE spotface_definition := SELF\
counterbore_hole_definition.counterbore;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY spotface_occurrence
SUBTYPE OF (counterbore_hole_occurrence);
SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY spotface_occurrence_in_assembly
SUBTYPE OF (counterbore_hole_occurrence_in_assembly);
SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
END_ENTITY; -- 10303-113: counterbore_countersink_schema
ENTITY sql_mappable_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY square_root_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY square_u_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 4) AND (SIZEOF(impl_rep.
used_representation.items) <= 7))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (((((((srwp_i.name =
'orientation') OR (srwp_i.name = 'width')) OR (srwp_i.name =
'first angle')) OR (srwp_i.name = 'second angle')) OR (
srwp_i.name = 'first radius')) OR (srwp_i.name =
'second radius')) OR (srwp_i.name = 'profile limit')) OR (
srwp_i.name = 'depth'))) = SIZEOF(pdr.used_representation.
items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0)))
= 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first radius'))) <= 1))
) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second radius'))) <= 1)
)) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1)))
= 0))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1)))
= 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
WR12: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))
) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY standard_table_function
SUBTYPE OF (linearized_table_function);
order : ordering_type;
WHERE
WR1: extremal_position_check(SELF);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY standard_uncertainty
SUPERTYPE OF (expanded_uncertainty)
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : REAL;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY step
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'course of travel occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'path feature component usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH_FEATURE_COMPONENT'
IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'removal boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'profile usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0;
WR5: SIZEOF(QUERY (pds <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF
(QUERY (sar <* csa.component_relationships| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)) AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROTRUSION' ] *
TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY straightness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY strict_triangular_matrix
SUBTYPE OF (triangular_matrix);
main_diagonal_value : maths_value;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY string_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function, string_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY string_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_string_expression, index_expression,
substring_expression, concat_expression, format_function,
string_defined_function))
SUBTYPE OF (expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY string_literal
SUBTYPE OF (simple_string_expression, generic_literal);
the_value : STRING;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY string_variable
SUBTYPE OF (simple_string_expression, variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY structured_dimension_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(TYPEOF(SELF) * [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_FEATURE_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_TARGET_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRICAL_TOLERANCE_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LEADER_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROJECTION_DIRECTED_CALLOUT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT'
]) = 0;
WR2: SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| NOT (ato.name IN [ 'dimension value',
'tolerance value', 'unit text', 'prefix text', 'suffix text'
]))) = 0;
WR3: SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| (ato.name = 'dimension value'))) >= 1;
WR4: SIZEOF(QUERY (dcr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'
IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) <= 1;
WR5: SIZEOF(QUERY (dcr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'
IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) <= 1;
WR6: NOT (SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| (ato.name = 'prefix text'))) > 0) OR (
SIZEOF(QUERY (dcr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'
IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) = 1);
WR7: NOT (SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(con)))| (ato.name = 'suffix text'))) > 0) OR (
SIZEOF(QUERY (dcr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'
IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) = 1);
END_ENTITY; -- 10303-506: aic_draughting_elements
ENTITY structured_text_composition
SUBTYPE OF (compound_representation_item);
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY structured_text_representation
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF
string_representation_item_select;
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY styled_item
SUBTYPE OF (representation_item);
styles : SET [0:?] OF presentation_style_assignment;
item : styled_item_target;
WHERE
WR1: ((SIZEOF(styles) = 0) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_TESSELLATED_ITEM_WITH_COLOURS'
IN TYPEOF(SELF)) OR (SIZEOF(styles) = 1)) OR (SIZEOF(styles)
> 1) AND (SIZEOF(QUERY (pres_style <* styles| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESENTATION_STYLE_BY_CONTEXT'
IN TYPEOF(pres_style)))) = 0);
WR2: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STYLED_ITEM' IN
TYPEOF(item));
WR3: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN
TYPEOF(item)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(item))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM'
IN TYPEOF(SELF));
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY styled_tessellated_item_with_colours
SUBTYPE OF (styled_item);
SELF\styled_item.item : tessellated_surface_item;
colour_type : colour_type_enum;
colour_values : LIST [1:?] OF LIST [3:4] OF unsigned_8_bit_integer;
DERIVE
coloured_coordinate_values : coordinates_list := get_coordinate_values(
item);
WHERE
WR1: SIZEOF(SELF\styled_item.styles) = 0;
WR2: (colour_type = rgb8) AND (SIZEOF(QUERY (clist <* colour_values|
NOT (SIZEOF(clist) = 3))) = 0) OR (colour_type = rgbt8) AND (
SIZEOF(QUERY (clist <* colour_values| NOT (SIZEOF(clist) = 4)
)) = 0);
WR3: SIZEOF(colour_values) = coloured_coordinate_values\
coordinates_list.npoints;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY su_parameters
SUBTYPE OF (geometric_representation_item);
a : length_measure;
alpha : plane_angle_measure;
b : length_measure;
beta : plane_angle_measure;
c : length_measure;
gamma : plane_angle_measure;
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY subedge
SUBTYPE OF (edge);
parent_edge : edge;
WHERE
WR1: SELF :<>: parent_edge;
END_ENTITY; -- 10303-42: topology_schema
ENTITY subface
SUBTYPE OF (face);
parent_face : face;
WHERE
WR1: NOT mixed_loop_type_set((list_to_set(list_face_loops(SELF)) +
list_to_set(list_face_loops(parent_face))));
WR2: SELF :<>: parent_face;
END_ENTITY; -- 10303-42: topology_schema
ENTITY subpath
SUBTYPE OF (path);
parent_path : path;
WHERE
WR1: SELF :<>: parent_path;
WR2: NOT (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_LOOP' IN
TYPEOF(SELF)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH' IN
TYPEOF(parent_path)));
END_ENTITY; -- 10303-42: topology_schema
ENTITY substring_expression
SUBTYPE OF (string_expression, multiple_arity_generic_expression);
DERIVE
operand : generic_expression := SELF\multiple_arity_generic_expression.
operands[1];
index1 : generic_expression := SELF\multiple_arity_generic_expression.
operands[2];
index2 : generic_expression := SELF\multiple_arity_generic_expression.
operands[3];
WHERE
WR1: (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_EXPRESSION'
IN TYPEOF(operand)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(index1))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(index2));
WR2: SIZEOF(SELF\multiple_arity_generic_expression.operands) = 3;
WR3: is_int_expr(index1);
WR4: is_int_expr(index2);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY surface
SUPERTYPE OF (ONEOF(elementary_surface, swept_surface, bounded_surface,
offset_surface, surface_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_condition_callout
SUBTYPE OF (draughting_callout);
WHERE
WR1: SIZEOF(QUERY (c <* SELF.contents| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_CURVE_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_OCCURRENCE'
] * TYPEOF(c)) <> 1))) = 0;
END_ENTITY; -- 10303-1312: draughting_element_specialisations_mim
ENTITY surface_curve
SUPERTYPE OF (ONEOF(intersection_curve, seam_curve) ANDOR
bounded_surface_curve)
SUBTYPE OF (curve);
curve_3d : curve;
associated_geometry : LIST [1:2] OF pcurve_or_surface;
master_representation : preferred_surface_curve_representation;
DERIVE
basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
WHERE
WR1: curve_3d.dim = 3;
WR2: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(
associated_geometry[1])) OR (master_representation <>
pcurve_s1);
WR3: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(
associated_geometry[2])) OR (master_representation <>
pcurve_s2);
WR4: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(curve_3d));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_curve_swept_area_solid
SUBTYPE OF (swept_area_solid);
directrix : curve;
start_param : REAL;
end_param : REAL;
reference_surface : surface;
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(directrix)) OR (reference_surface IN directrix\
surface_curve.basis_surface);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY surface_curve_swept_surface
SUBTYPE OF (swept_surface);
directrix : curve;
reference_surface : surface;
WHERE
WR1: NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(directrix)) OR (reference_surface IN directrix\
surface_curve.basis_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_of_linear_extrusion
SUBTYPE OF (swept_surface);
extrusion_axis : vector;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
axis_position : axis1_placement;
DERIVE
axis_line : line := representation_item('') ||
geometric_representation_item() || curve() || line(
axis_position.location, representation_item('') ||
geometric_representation_item() || vector(axis_position.
z, 1.0));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_pair
ABSTRACT SUPERTYPE OF (ONEOF(sliding_surface_pair, rolling_surface_pair)
ANDOR surface_pair_with_range)
SUBTYPE OF (high_order_kinematic_pair);
surface_1 : surface;
surface_2 : surface;
orientation : BOOLEAN;
WHERE
WR1: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (surface_1 IN r.items)
)) = 0;
WR2: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_2| NOT (surface_2 IN r.items)
)) = 0;
WR3: SIZEOF(QUERY (lr <* SELF\kinematic_pair.
associated_link_representations_1| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIGID_LINK_REPRESENTATION'
IN TYPEOF(lr)))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY surface_pair_with_range
SUBTYPE OF (surface_pair);
range_on_surface_1 : rectangular_trimmed_surface;
range_on_surface_2 : rectangular_trimmed_surface;
lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
WR1: SELF\surface_pair.surface_1 :=: range_on_surface_1.basis_surface;
WR2: SELF\surface_pair.surface_2 :=: range_on_surface_2.basis_surface;
WR3: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(
upper_limit_actual_rotation)) XOR (
lower_limit_actual_rotation < upper_limit_actual_rotation);
WR4: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_1| NOT (range_on_surface_1 IN
r.items))) = 0;
WR5: SIZEOF(QUERY (r <* SELF\kinematic_pair.
associated_link_representations_2| NOT (range_on_surface_2 IN
r.items))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY surface_patch
SUBTYPE OF (founded_item);
parent_surface : bounded_surface;
u_transition : transition_code;
v_transition : transition_code;
u_sense : BOOLEAN;
v_sense : BOOLEAN;
INVERSE
using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR
segments;
WHERE
WR1: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_BOUNDED_SURFACE'
IN TYPEOF(parent_surface));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_profile_tolerance
SUBTYPE OF (geometric_tolerance);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY surface_rendering_properties;
rendered_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_replica
SUBTYPE OF (surface);
parent_surface : surface;
transformation : cartesian_transformation_operator_3d;
WHERE
WR1: acyclic_surface_replica(SELF, parent_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_side_style
SUBTYPE OF (founded_item);
name : label;
styles : SET [1:7] OF surface_style_element_select;
WHERE
WR1: SIZEOF(QUERY (style1 <* styles| (SIZEOF(QUERY (style2 <* styles -
style1| (TYPEOF(style1) = TYPEOF(style2)))) > 0))) = 0;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_boundary
SUBTYPE OF (founded_item);
style_of_boundary : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_control_grid
SUBTYPE OF (founded_item);
style_of_control_grid : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_fill_area
SUBTYPE OF (founded_item);
fill_area : fill_area_style;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_parameter_line
SUBTYPE OF (founded_item);
style_of_parameter_lines : curve_or_render;
direction_counts : SET [1:2] OF direction_count_select;
WHERE
WR1: (HIINDEX(direction_counts) = 1) XOR (TYPEOF(direction_counts[1])
<> TYPEOF(direction_counts[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_reflectance_ambient;
ambient_reflectance : REAL;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_reflectance_ambient_diffuse
SUBTYPE OF (surface_style_reflectance_ambient);
diffuse_reflectance : REAL;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_reflectance_ambient_diffuse_specular
SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
specular_reflectance : REAL;
specular_exponent : REAL;
specular_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_rendering;
rendering_method : shading_surface_method;
surface_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_rendering_with_properties
SUBTYPE OF (surface_style_rendering);
properties : SET [1:2] OF rendering_properties_select;
WHERE
WR1: (HIINDEX(properties) = 1) XOR (TYPEOF(properties[1]) <> TYPEOF(
properties[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_segmentation_curve
SUBTYPE OF (founded_item);
style_of_segmentation_curve : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_silhouette
SUBTYPE OF (founded_item);
style_of_silhouette : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_transparent;
transparency : REAL;
WHERE
WR1: (0.0 <= transparency) AND (transparency <= 1.0);
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_style_usage
SUBTYPE OF (founded_item);
side : surface_side;
style : surface_side_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY surface_texture_representation
SUBTYPE OF (representation);
WHERE
WR1: SIZEOF(QUERY (i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
] * TYPEOF(i)) <> 1))) = 0;
WR2: (SIZEOF(QUERY (i <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)))) = 1) AND (SIZEOF(QUERY (i <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name = 'measuring method'))) = 1);
WR3: SIZEOF(QUERY (i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ]
* TYPEOF(i)) = 1))) > 0;
WR4: ((SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'
)) <= 1) AND (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'
)) = 0)) AND (SIZEOF(QUERY (rr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'
)| (rr.rep_2.name = 'measuring direction'))) = SIZEOF(USEDIN(
SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'
)));
WR5: (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY'
IN TYPEOF(gpa.base_definition)) AND (gpa\
general_property_association.base_definition\general_property
.name = 'surface_condition'))) = 1))) = 1);
END_ENTITY; -- 10303-1110: surface_conditions_mim
ENTITY swept_area_solid
SUPERTYPE OF (ONEOF(revolved_area_solid, extruded_area_solid,
surface_curve_swept_area_solid))
SUBTYPE OF (solid_model);
swept_area : curve_bounded_surface;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF(
swept_area.basis_surface);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY swept_disk_solid
SUBTYPE OF (solid_model);
directrix : curve;
radius : positive_length_measure;
inner_radius : OPTIONAL positive_length_measure;
start_param : REAL;
end_param : REAL;
WHERE
WR1: directrix.dim = 3;
WR2: NOT EXISTS(inner_radius) OR (radius > inner_radius);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY swept_face_solid
SUPERTYPE OF (ONEOF(extruded_face_solid, revolved_face_solid))
SUBTYPE OF (solid_model);
swept_face : face_surface;
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE' IN TYPEOF(
swept_face.face_geometry);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY swept_surface
SUPERTYPE OF (ONEOF(surface_of_linear_extrusion, surface_of_revolution,
surface_curve_swept_surface, fixed_reference_swept_surface))
SUBTYPE OF (surface);
swept_curve : curve;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY symbol_colour;
colour_of_symbol : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY symbol_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY symbol_representation_map
SUBTYPE OF (representation_map);
SELF\representation_map.mapped_representation : symbol_representation;
SELF\representation_map.mapping_origin : axis2_placement;
WHERE
WR1: SIZEOF(QUERY (mi <* SELF\representation_map.map_usage| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_SYMBOL'
IN TYPEOF(mi)))) = 0;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY symbol_style
SUBTYPE OF (founded_item);
name : label;
style_of_symbol : symbol_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY symbol_target
SUBTYPE OF (geometric_representation_item);
placement : axis2_placement;
x_scale : positive_ratio_measure;
y_scale : positive_ratio_measure;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY symmetric_banded_matrix
SUBTYPE OF (symmetric_matrix);
default_entry : maths_value;
above : nonnegative_integer;
WHERE
WR1: member_of(default_entry, factor1(SELF\linearized_table_function.
source.range));
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY symmetric_matrix
SUBTYPE OF (linearized_table_function);
symmetry : symmetry_type;
triangle : lower_upper;
order : ordering_type;
WHERE
WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
WR2: SELF\explicit_table_function.shape[1] = SELF\
explicit_table_function.shape[2];
WR3: NOT (symmetry = symmetry_type.skew) OR (space_dimension(SELF\
linearized_table_function.source.range) = 1) AND
subspace_of_es(factor1(SELF\linearized_table_function.source.
range), es_numbers);
WR4: NOT ((symmetry = symmetry_type.hermitian) OR (symmetry =
symmetry_type.skew_hermitian)) OR (space_dimension(SELF\
linearized_table_function.source.range) = 1) AND
subspace_of_es(factor1(SELF\linearized_table_function.source.
range), es_complex_numbers);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY symmetric_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
basis_relationships : SET [1:?] OF shape_aspect_deriving_relationship
FOR related_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY symmetry_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY table_representation_item
SUBTYPE OF (compound_representation_item);
WHERE
WR1: SIZEOF(QUERY (itet <* SELF\compound_representation_item.
item_element| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROW_REPRESENTATION_ITEM'
IN TYPEOF(itet)))) = 0;
END_ENTITY; -- 10303-1654: characteristic_mim
ENTITY tactile_appearance_representation
SUBTYPE OF (representation);
WHERE
WR1: SIZEOF(QUERY (i <* SELF.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ]
* TYPEOF(i)) <> 1))) = 0;
WR2: SIZEOF(QUERY (i <* SELF.items| (name = 'depth'))) <= 1;
WR3: (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY'
IN TYPEOF(gpa.base_definition)) AND (gpa\
general_property_association.base_definition\general_property
.name = 'surface_condition'))) = 1))) = 1);
END_ENTITY; -- 10303-1110: surface_conditions_mim
ENTITY tagged_text_format
SUBTYPE OF (representation_context);
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY tagged_text_item
SUBTYPE OF (descriptive_representation_item);
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY tan_function
SUBTYPE OF (unary_function_call);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY taper
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SELF.description IN [ 'angle taper', 'diameter taper',
'directed taper' ];
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR5: NOT (SELF.description = 'angle taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'taper angle'))) = 1)))
= 0))) = 0);
WR6: NOT (SELF.description = 'diameter taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'final diameter'))) = 1)
)) = 0))) = 0);
WR7: NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'angle'))) = 1))) = 0)))
= 0);
WR8: NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'direction'))) = 1))) = 0);
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY tapping_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: SELF.description IN [ 'tapping', 'thread drilling' ];
WR2: NOT (SELF.description = 'tapping') OR
verify_optional_action_property(SELF, 'compensation chuck')
AND verify_enumeration_action_property(SELF,
'compensation chuck', [ 'compensation chuck used',
'compensation chuck not used' ]);
WR3: NOT (SELF.description = 'thread drilling') OR
verify_optional_action_property(SELF,
'helical movement on forward') AND
verify_enumeration_action_property(SELF,
'helical movement on forward', [
'helical movement on forward',
'no helical movement on forward' ]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY tee_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 9) AND (SIZEOF(impl_rep.
used_representation.items) <= 10))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (((((((((srwp_i.name
= 'orientation') OR (srwp_i.name = 'width')) OR (srwp_i.name
= 'depth')) OR (srwp_i.name = 'cross bar width')) OR (srwp_i
.name = 'cross bar depth')) OR (srwp_i.name = 'first offset')
) OR (srwp_i.name = 'second offset')) OR (srwp_i.name =
'first angle')) OR (srwp_i.name = 'second angle')) OR (srwp_i
.name = 'radius'))) = SIZEOF(pdr.used_representation.items)))
) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0)))
= 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) = 1))) = 0)))
= 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'cross bar width'))) = 1
))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'cross bar depth'))) = 1
))) = 0))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) = 1)))
= 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) = 1))
) = 0))) = 0;
WR12: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1)))
= 0))) = 0;
WR13: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1)))
= 0))) = 0;
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0)
)) = 0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY terminator_symbol
SUBTYPE OF (annotation_symbol_occurrence);
annotated_curve : annotation_curve_occurrence;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY tessellated_annotation_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : tessellated_geometric_set;
END_ENTITY; -- 10303-101: draughting_element_schema
ENTITY tessellated_connecting_edge
SUBTYPE OF (tessellated_edge);
smooth : LOGICAL;
face1 : tessellated_face;
face2 : tessellated_face;
line_strip_face1 : LIST [2:?] OF INTEGER;
line_strip_face2 : LIST [2:?] OF INTEGER;
WHERE
WR1: SIZEOF(line_strip_face1) = SIZEOF(line_strip_face2);
WR2: SIZEOF(line_strip_face1) = SIZEOF(SELF\tessellated_edge.line_strip
);
WR3: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CUBIC_BEZIER_TRIANGULATED_FACE'
IN TYPEOF(face1));
WR4: NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CUBIC_BEZIER_TRIANGULATED_FACE'
IN TYPEOF(face2));
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_curve_set
SUBTYPE OF (tessellated_item);
coordinates : coordinates_list;
line_strips : LIST [1:?] OF LIST [2:?] OF INTEGER;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_edge
SUPERTYPE OF (ONEOF(tessellated_connecting_edge,
cubic_bezier_tessellated_edge))
SUBTYPE OF (tessellated_structured_item);
coordinates : coordinates_list;
geometric_link : OPTIONAL edge_or_curve;
line_strip : LIST [2:?] OF INTEGER;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_face
ABSTRACT SUPERTYPE OF (ONEOF(triangulated_face, complex_triangulated_face
, cubic_bezier_triangulated_face))
SUBTYPE OF (tessellated_structured_item);
coordinates : coordinates_list;
pnmax : INTEGER;
normals : LIST [0:?] OF LIST [3:3] OF REAL;
geometric_link : OPTIONAL face_or_surface;
WHERE
WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1)) OR (SIZEOF(
normals) = pnmax);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_geometric_set
SUBTYPE OF (tessellated_item);
children : SET [1:?] OF tessellated_item;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_item
ABSTRACT SUPERTYPE OF (ONEOF(coordinates_list, tessellated_solid,
tessellated_shell, tessellated_wire, tessellated_geometric_set,
tessellated_curve_set, tessellated_point_set, tessellated_surface_set
, tessellated_structured_item))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1: SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SHAPE_REPRESENTATION'
IN TYPEOF(using_rep)))) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_point_set
SUBTYPE OF (tessellated_item);
coordinates : coordinates_list;
point_list : LIST [1:?] OF INTEGER;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items);
WR2: NOT (SIZEOF(QUERY (it <* SELF.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_ITEM'
IN TYPEOF(it)))) = 0);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_shape_representation_with_accuracy_parameters
SUBTYPE OF (tessellated_shape_representation);
tessellation_accuracy_parameters : SET [1:?] OF
tessellation_accuracy_parameter_item
;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_shell
SUBTYPE OF (tessellated_item);
items : SET [1:?] OF tessellated_structured_item;
topological_link : OPTIONAL connected_face_set;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_solid
SUBTYPE OF (tessellated_item);
items : SET [1:?] OF tessellated_structured_item;
geometric_link : OPTIONAL manifold_solid_brep;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_structured_item
SUPERTYPE OF (ONEOF(tessellated_face, tessellated_edge,
tessellated_vertex))
SUBTYPE OF (tessellated_item);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_surface_set
ABSTRACT SUPERTYPE OF (ONEOF(triangulated_surface_set,
complex_triangulated_surface_set))
SUBTYPE OF (tessellated_item);
coordinates : coordinates_list;
pnmax : INTEGER;
normals : LIST [0:?] OF LIST [3:3] OF REAL;
WHERE
WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1)) OR (SIZEOF(
normals) = pnmax);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_vertex
SUBTYPE OF (tessellated_structured_item);
coordinates : coordinates_list;
topological_link : OPTIONAL vertex_point;
point_index : INTEGER;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tessellated_wire
SUBTYPE OF (tessellated_item);
items : SET [1:?] OF tessellated_edge_or_vertex;
geometric_model_link : OPTIONAL path_or_composite_curve;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tetrahedron
SUBTYPE OF (faceted_primitive);
WHERE
WR1: SIZEOF(points) = 4;
WR2: above_plane(points[1], points[2], points[3], points[4]) <> 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY tetrahedron_volume
SUBTYPE OF (volume);
point_1 : cartesian_point;
point_2 : cartesian_point;
point_3 : cartesian_point;
point_4 : cartesian_point;
WHERE
WR1: point_1.dim = 3;
WR2: above_plane(point_1, point_2, point_3, point_4) <> 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY text_literal
SUBTYPE OF (geometric_representation_item);
literal : presentable_text;
placement : axis2_placement;
alignment : text_alignment;
path : text_path;
font : font_select;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_literal_with_associated_curves
SUBTYPE OF (text_literal);
associated_curves : SET [1:?] OF curve;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_literal_with_blanking_box
SUBTYPE OF (text_literal);
blanking : planar_box;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_literal_with_delineation
SUBTYPE OF (text_literal);
delineation : text_delineation;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_literal_with_extent
SUBTYPE OF (text_literal);
extent : planar_extent;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_string_representation
SUBTYPE OF (representation);
SELF\representation.items : SET [1:?] OF
text_string_representation_item;
WHERE
WR1: SIZEOF(QUERY (item <* SELF\representation.items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_CHARACTER'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEFINED_CHARACTER_GLYPH'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT'
] * TYPEOF(item)) = 0))) >= 1;
WR2: SIZEOF(QUERY (a2p <* QUERY (item <* SELF\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT'
IN TYPEOF(item)))| NOT ((SIZEOF(QUERY (at <* QUERY (item <*
SELF\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT'
IN TYPEOF(item)))| (at\mapped_item.mapping_target :=: a2p)))
>= 1) OR (SIZEOF(QUERY (atc <* QUERY (item <* SELF\
representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT_CHARACTER'
IN TYPEOF(item)))| (atc\mapped_item.mapping_target :=: a2p))
) >= 1)))) = 0;
END_ENTITY; -- 10303-46: presentation_definition_schema
ENTITY text_style
SUBTYPE OF (founded_item);
name : label;
character_appearance : character_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY text_style_for_defined_font;
text_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY text_style_with_box_characteristics
SUBTYPE OF (text_style);
characteristics : SET [1:4] OF box_characteristic_select;
WHERE
WR1: SIZEOF(QUERY (c1 <* characteristics| (SIZEOF(QUERY (c2 <*
characteristics - c1| (TYPEOF(c1) = TYPEOF(c2)))) > 0))) = 0;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY text_style_with_mirror
SUBTYPE OF (text_style);
mirror_placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY text_style_with_spacing
SUBTYPE OF (text_style);
character_spacing : character_spacing_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY thermal_resistance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THERMAL_RESISTANCE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-1753: value_with_unit_extension_mim
ENTITY thermal_resistance_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(-1.0, -
1.0, -3.0, 0.0, 1.0, 0.0, 0.0);
END_ENTITY; -- 10303-1753: value_with_unit_extension_mim
ENTITY thermodynamic_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THERMODYNAMIC_TEMPERATURE_UNIT'
IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY thermodynamic_temperature_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 1.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY thread
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (8 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) <= 11))) = 1))) = 1;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) = 1)
)) = 0))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'minor diameter'))) <= 1
))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'pitch diameter'))) <= 1
))) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'number of threads'))) =
1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) =
0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'hand')) AND (it.description
IN [ 'left', 'right' ]))) = 1))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0)))
= 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'thread side')) AND ((it.
description = 'internal') OR (it.description = 'external'))))
= 1))) = 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'crest'))) <= 1))) = 0))
) = 0;
WR12: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'partial area occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied area usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_AREA' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR13: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))
) = 0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'nominal size'))) <= 1))
) = 0))) = 0;
WR16: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'thread runout') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'thread runout usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THREAD_RUNOUT'
IN TYPEOF(sdr.relating_shape_aspect)))) <= 1))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY thread_runout
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(SELF.of_shape);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| NOT (srwp_i.name IN
[ 'length of runout', 'pitch or dimension',
'included or extra' ]))) > 0))) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'length of runout'))) =
1))) = 0))) <= 1;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'pitch or dimension')) AND (it
.description IN [ 'pitch', 'pitch or dimension' ]))) = 1))) =
0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'included or extra')) AND (it.
description IN [ 'included', 'extra' ]))) = 1))) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY threading_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: SELF.description IN [ 'roughing', 'finishing' ];
WR2: verify_optional_action_property(SELF, 'allowance') AND
verify_length_measure_action_property(SELF, 'allowance');
WR3: NOT (SELF.description = 'roughing') OR
verify_required_action_property(SELF, 'allowance');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY time_interval;
id : identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY time_interval_assignment
ABSTRACT SUPERTYPE;
assigned_time_interval : time_interval;
role : time_interval_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY time_interval_based_effectivity
SUBTYPE OF (effectivity);
effectivity_period : time_interval;
END_ENTITY; -- 10303-41: effectivity_schema
ENTITY time_interval_relationship;
name : label;
description : OPTIONAL text;
relating_time_interval : time_interval;
related_time_interval : time_interval;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY time_interval_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY time_interval_with_bounds
SUBTYPE OF (time_interval);
primary_bound : OPTIONAL date_time_or_event_occurrence;
secondary_bound : OPTIONAL date_time_or_event_occurrence;
duration : OPTIONAL time_measure_with_unit;
WHERE
WR1: EXISTS(primary_bound) OR EXISTS(secondary_bound);
WR2: NOT ((EXISTS(primary_bound) AND EXISTS(secondary_bound)) AND
EXISTS(duration));
WR3: (EXISTS(primary_bound) AND NOT EXISTS(secondary_bound)) AND (NOT
EXISTS(duration) OR duration_is_positive(duration));
WR4: ((EXISTS(secondary_bound) AND NOT EXISTS(primary_bound)) AND
EXISTS(duration)) AND duration_is_negative(duration);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_UNIT' IN TYPEOF(
SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 1.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY tolerance_value;
lower_bound : measure_with_unit;
upper_bound : measure_with_unit;
DERIVE
ubvc : REAL := upper_bound\measure_with_unit.value_component;
lbvc : REAL := lower_bound\measure_with_unit.value_component;
WHERE
WR1: ubvc > lbvc;
WR2: upper_bound\measure_with_unit.unit_component = lower_bound\
measure_with_unit.unit_component;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone
SUBTYPE OF (shape_aspect);
defining_tolerance : SET [1:?] OF tolerance_zone_target;
form : tolerance_zone_form;
END_ENTITY; -- 10303-47: shape_tolerance_schema
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_aspect;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone_form;
name : label;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone_with_datum
SUPERTYPE OF (ONEOF(directed_tolerance_zone, oriented_tolerance_zone))
SUBTYPE OF (tolerance_zone);
datum_reference : datum_system;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY topological_representation_item
SUPERTYPE OF (ONEOF(vertex, edge, face_bound, face, vertex_shell,
wire_shell, connected_edge_set, connected_face_set,
connected_volume_set, volume_with_faces, loop ANDOR path))
SUBTYPE OF (representation_item);
DERIVE
permanent_id : identifier := get_id_value(SELF);
permanent_aggregate_id : identifier := get_aggregate_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
WR2: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AGGREGATE_ID_ATTRIBUTE.IDENTIFIED_ITEM'
)) <= 1;
END_ENTITY; -- 10303-42: topology_schema
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY toroidal_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
WHERE
WR1: minor_radius < major_radius;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY torus
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
WHERE
WR1: major_radius > minor_radius;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY total_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY transition_feature
SUPERTYPE OF (ONEOF(chamfer, edge_round, fillet))
SUBTYPE OF (shape_aspect);
WHERE
WR1: SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_FEATURE'
] * TYPEOF(SELF.of_shape.definition)) = 1;
WR2: SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHAMFER',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE_ROUND',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FILLET' ] *
TYPEOF(SELF)) = 1;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY triangular_matrix
SUBTYPE OF (linearized_table_function);
default_entry : maths_value;
lo_up : lower_upper;
order : ordering_type;
WHERE
WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
WR2: member_of(default_entry, SELF\maths_function.range);
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY triangulated_face
SUBTYPE OF (tessellated_face);
pnindex : LIST [0:?] OF INTEGER;
triangles : LIST [1:?] OF LIST [3:3] OF INTEGER;
WHERE
WR1: (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.
pnmax);
WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <>
coordinates.npoints));
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY triangulated_point_cloud_dataset
SUBTYPE OF (scanned_data_item);
points : point_cloud_set_or_superset;
triangles : LIST [1:?] OF LIST [3:3] OF INTEGER;
END_ENTITY; -- 10303-42: scan_data_3d_shape_model_schema
ENTITY triangulated_surface_set
SUBTYPE OF (tessellated_surface_set);
pnindex : LIST [0:?] OF INTEGER;
triangles : LIST [1:?] OF LIST [3:3] OF INTEGER;
WHERE
WR1: (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\
tessellated_surface_set.pnmax);
WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax
<> coordinates.npoints));
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY trimmed_curve
SUBTYPE OF (bounded_curve);
basis_curve : curve;
trim_1 : SET [1:2] OF trimming_select;
trim_2 : SET [1:2] OF trimming_select;
sense_agreement : BOOLEAN;
master_representation : trimming_preference;
WHERE
WR1: (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
WR2: (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY turned_knurl
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'diamond', 'diagonal',
'straight' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((6 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 9)))) = 1))) = 1;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'number of teeth'))) <= 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) = 1)
)) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'nominal diameter'))) =
1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tooth depth'))) <= 1)))
= 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'root fillet'))) <= 1)))
= 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'diametral pitch'))) = 1
))) = 0))) = 0;
WR9: NOT (SELF\characterized_object.description IN [ 'diamond',
'diagonal' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'helix angle'))) = 1)))
= 0))) = 0);
WR10: NOT (SELF\characterized_object.description = 'diagonal') OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'helix hand'))) = 1))) = 0)))
= 0);
WR11: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (sa_occ.description = 'partial area occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied area usage') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_AREA' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR12: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
)| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY turning_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: verify_optional_relating_amr_with_name(SELF, 'approach', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'approach', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY'
]);
WR2: verify_optional_relating_amr_with_name(SELF, 'retract', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF, 'retract'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY'
]);
WR3: verify_optional_relating_amr_with_name(SELF, 'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
]) AND verify_related_type_for_amr_with_name(SELF,
'machining', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'
], [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TURNING_TYPE_STRATEGY'
]);
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY turning_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: SELF.description IN [ 'unidirectional', 'bidirectional', 'contour'
, 'thread', 'grooving', 'multistep grooving', 'explicit' ];
WR2: verify_optional_action_property(SELF, 'overcut length') AND
verify_length_measure_action_property(SELF, 'overcut length')
;
WR3: verify_optional_action_property(SELF, 'multiple passes') AND
verify_enumeration_action_property(SELF, 'multiple passes', [
'multiple passes allowed', 'multiple passes not allowed' ]);
WR4: verify_optional_action_property(SELF, 'cutting depth') AND (0 =
SIZEOF(QUERY (prop <* get_action_property(SELF,
'cutting depth')| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (1 = SIZEOF(QUERY (it <* prep.representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element))) AND (0 = SIZEOF(QUERY (ie <* it
.item_element| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(ie)) = 2)))))))))))));
WR5: (verify_optional_action_property(SELF, 'variable feedrate') AND
verify_rep_type_for_action_property(SELF, 'variable feedrate'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'variable feedrate', [ 'relative speed' ]);
WR6: NOT (SELF.description = 'unidirectional') OR ((((((((((((((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'back path direction')) AND
verify_rep_item_for_action_property(SELF,
'back path direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'lift direction'))
AND verify_rep_item_for_action_property(SELF,
'lift direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'stepover direction')) AND
verify_rep_item_for_action_property(SELF,
'stepover direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'lift height')) AND
verify_length_measure_action_property(SELF, 'lift height'))
AND verify_optional_action_property(SELF, 'lift feedrate'))
AND verify_rep_type_for_action_property(SELF, 'lift feedrate'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'lift feedrate', [ 'feed speed', 'feed per revolution' ]))
AND verify_optional_action_property(SELF, 'stepover feedrate'
)) AND verify_rep_type_for_action_property(SELF,
'stepover feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'stepover feedrate', [ 'feed speed', 'feed per revolution' ])
;
WR7: NOT (SELF.description = 'bidirectional') OR (((((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'stepover direction')) AND
verify_rep_item_for_action_property(SELF,
'stepover direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'stepover feedrate'
)) AND verify_rep_type_for_action_property(SELF,
'stepover feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'stepover feedrate', [ 'feed speed', 'feed per revolution' ])
;
WR8: NOT (SELF.description = 'contour') OR (((((((((((((((((
verify_optional_action_property(SELF, 'feed direction') AND
verify_rep_item_for_action_property(SELF, 'feed direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'back path direction')) AND
verify_rep_item_for_action_property(SELF,
'back path direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'lift direction'))
AND verify_rep_item_for_action_property(SELF,
'lift direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF,
'stepover direction')) AND
verify_rep_item_for_action_property(SELF,
'stepover direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'lift height')) AND
verify_length_measure_action_property(SELF, 'lift height'))
AND verify_optional_action_property(SELF, 'lift feedrate'))
AND verify_rep_type_for_action_property(SELF, 'lift feedrate'
, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'lift feedrate', [ 'feed speed', 'feed per revolution' ]))
AND verify_optional_action_property(SELF, 'stepover feedrate'
)) AND verify_rep_type_for_action_property(SELF,
'stepover feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'stepover feedrate', [ 'feed speed', 'feed per revolution' ])
) AND verify_optional_action_property(SELF,
'variable stepover feedrate')) AND
verify_rep_type_for_action_property(SELF,
'variable stepover feedrate', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'
])) AND verify_rep_name_for_action_property(SELF,
'variable stepover feedrate', [ 'relative speed' ]);
WR9: NOT (SELF.description = 'thread') OR ((((((
verify_required_action_property(SELF, 'cut in amount') AND
verify_enumeration_action_property(SELF, 'cut in amount', [
'constant depth', 'variable depth', 'constant removal amount'
])) AND verify_required_action_property(SELF,
'threading direction')) AND
verify_enumeration_action_property(SELF,
'threading direction', [ 'left', 'right', 'center',
'left zigzag', 'right zigzag' ])) AND
verify_optional_action_property(SELF, 'path return angle'))
AND verify_angle_measure_action_property(SELF,
'path return angle')) AND verify_optional_action_property(
SELF, 'lift height')) AND
verify_length_measure_action_property(SELF, 'lift height');
WR10: NOT (SELF.description IN [ 'grooving', 'multistep grooving' ]) OR
((verify_optional_action_property(SELF, 'grooving direction'
) AND verify_rep_item_for_action_property(SELF,
'grooving direction', [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' ]))
AND verify_optional_action_property(SELF, 'travel distance'))
AND verify_length_measure_action_property(SELF,
'travel distance');
WR11: NOT (SELF.description = 'multistep grooving') OR
verify_optional_action_property(SELF, 'retract distance') AND
verify_length_measure_action_property(SELF,
'retract distance');
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY two_direction_repeat_factor
SUBTYPE OF (one_direction_repeat_factor);
second_repeat_factor : vector;
END_ENTITY; -- 10303-46: presentation_appearance_schema
ENTITY type_qualifier;
name : label;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY unary_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF(not_expression, odd_function))
SUBTYPE OF (boolean_expression, unary_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY unary_function_call
ABSTRACT SUPERTYPE OF (ONEOF(abs_function, minus_function, sin_function,
cos_function, tan_function, asin_function, acos_function,
exp_function, log_function, log2_function, log10_function,
square_root_function))
SUBTYPE OF (unary_numeric_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY unary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operand : generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY unary_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(unary_function_call))
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand : numeric_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY uncertainty_assigned_representation
SUBTYPE OF (representation);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- 10303-43: representation_schema
ENTITY uncertainty_measure_with_unit
SUBTYPE OF (measure_with_unit);
name : label;
description : OPTIONAL text;
WHERE
WR1: valid_measure_value(SELF\measure_with_unit.value_component);
END_ENTITY; -- 10303-43: representation_schema
ENTITY uncertainty_qualifier
SUPERTYPE OF (ONEOF(standard_uncertainty, qualitative_uncertainty));
measure_name : label;
description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY unconstrained_pair
SUBTYPE OF (low_order_kinematic_pair);
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY unconstrained_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : unconstrained_pair;
actual_placement : axis2_placement_3d;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY unequally_disposed_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
displacement : length_measure_with_unit;
WHERE
WR1: 'NUMBER' IN TYPEOF(displacement\measure_with_unit.value_component)
;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY uniform_product_space
SUBTYPE OF (maths_space, generic_literal);
base : maths_space;
exponent : positive_integer;
WHERE
WR1: expression_is_constant(base);
WR2: no_cyclic_space_reference(SELF, []);
WR3: base <> the_empty_space;
END_ENTITY; -- 10303-50: mathematical_functions_schema
ENTITY uniform_resource_identifier
SUBTYPE OF (descriptive_representation_item);
END_ENTITY; -- 10303-1366: tagged_text_representation_mim
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY uniform_volume
SUBTYPE OF (b_spline_volume);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY universal_pair
SUBTYPE OF (low_order_kinematic_pair);
input_skew_angle : OPTIONAL plane_angle_measure;
DERIVE
SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
skew_angle : plane_angle_measure := NVL(input_skew_angle, 0.0);
WHERE
WR1: COS(plane_angle_for_pair_in_radian(SELF, skew_angle)) > 0.0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY universal_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : universal_pair;
first_rotation_angle : plane_angle_measure;
second_rotation_angle : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_state_schema
ENTITY universal_pair_with_range
SUBTYPE OF (universal_pair);
lower_limit_first_rotation : OPTIONAL plane_angle_measure;
upper_limit_first_rotation : OPTIONAL plane_angle_measure;
lower_limit_second_rotation : OPTIONAL plane_angle_measure;
upper_limit_second_rotation : OPTIONAL plane_angle_measure;
WHERE
WR1: (NOT EXISTS(lower_limit_first_rotation) OR NOT EXISTS(
upper_limit_first_rotation)) XOR (lower_limit_first_rotation
< upper_limit_first_rotation);
WR2: (NOT EXISTS(lower_limit_second_rotation) OR NOT EXISTS(
upper_limit_second_rotation)) XOR (
lower_limit_second_rotation < upper_limit_second_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
ENTITY usage_association
SUBTYPE OF (action_method_relationship);
SELF\action_method_relationship.relating_method :
information_usage_right;
SELF\action_method_relationship.related_method :
information_usage_right;
DERIVE
related : information_usage_right := SELF\action_method_relationship.
related_method;
relating : information_usage_right := SELF\action_method_relationship.
relating_method;
END_ENTITY; -- 10303-1241: information_rights_mim
ENTITY user_defined_curve_font
SUBTYPE OF (curve_style_font, mapped_item);
END_ENTITY; -- 10303-1749: styled_curve_mim
ENTITY user_defined_marker
SUBTYPE OF (mapped_item, pre_defined_marker);
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY user_defined_terminator_symbol
SUBTYPE OF (mapped_item, pre_defined_symbol);
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY value_format_type_qualifier;
format_type : value_format_type;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY value_function
SUPERTYPE OF (int_value_function)
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand : string_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY value_range
SUBTYPE OF (compound_representation_item);
WHERE
WR1: (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SET_REPRESENTATION_ITEM'
IN TYPEOF(item_element)) AND value_range_wr1(item_element);
WR2: value_range_wr2(item_element);
WR3: value_range_wr3(item_element);
END_ENTITY; -- 10303-1106: extended_measure_representation_mim
ENTITY value_representation_item
SUBTYPE OF (representation_item);
value_component : measure_value;
WHERE
WR1: SIZEOF(QUERY (rep <* using_representations(SELF)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT'
IN TYPEOF(rep.context_of_items)))) = 0;
END_ENTITY; -- 10303-43: representation_schema
ENTITY variable
ABSTRACT SUPERTYPE OF (ONEOF(numeric_variable, boolean_variable,
string_variable))
SUBTYPE OF (generic_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY variable_semantics
ABSTRACT SUPERTYPE;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY vector
SUBTYPE OF (geometric_representation_item);
orientation : direction;
magnitude : length_measure;
WHERE
WR1: magnitude >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY vector_style
SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
END_ENTITY; -- 10303-1003: curve_appearance_mim
ENTITY vee_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1:
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_COMPONENT_DEFINITION'
IN TYPEOF(SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 6))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (
srwp_i <* pdr.used_representation.items| (((((srwp_i.name =
'orientation') OR (srwp_i.name = 'profile angle')) OR (srwp_i
.name = 'tilt angle')) OR (srwp_i.name = 'profile radius'))
OR (srwp_i.name = 'first length')) OR (srwp_i.name =
'second length'))) = SIZEOF(pdr.used_representation.items))))
= 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'profile radius'))) <= 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'profile angle'))) = 1))
) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2) AND (it.name = 'tilt angle'))) = 1))) =
0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'profile limit'))) <= 1))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'first length'))) <= 1))) = 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'second length'))) <= 1))) = 0))) = 0;
END_ENTITY; -- 10303-113: machining_feature_schema
ENTITY velocity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VELOCITY_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY velocity_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.0,
0.0, -1.0, 0.0, 0.0, 0.0, 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY versioned_action_request;
id : identifier;
version : OPTIONAL label;
purpose : text;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: action_schema
ENTITY versioned_action_request_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_versioned_action_request : versioned_action_request;
related_versioned_action_request : versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
ENTITY vertex_loop
SUBTYPE OF (loop);
loop_vertex : vertex;
END_ENTITY; -- 10303-42: topology_schema
ENTITY vertex_point
SUBTYPE OF (vertex, geometric_representation_item);
vertex_geometry : point;
END_ENTITY; -- 10303-42: topology_schema
ENTITY vertex_shell
SUBTYPE OF (topological_representation_item);
vertex_shell_extent : vertex_loop;
END_ENTITY; -- 10303-42: topology_schema
ENTITY via_arc_point
SUBTYPE OF (cartesian_point);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS'
)) > 0;
WR2: 0 = SIZEOF(QUERY (pl <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS'
)| (pl.points[1] = SELF) OR (pl.points[HIINDEX(pl.points)] =
SELF)));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY via_helix_point
SUBTYPE OF (cartesian_point);
WHERE
WR1: SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS'
)) > 0;
WR2: 0 = SIZEOF(QUERY (pl <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS'
)| (pl.points[1] = SELF) OR (pl.points[HIINDEX(pl.points)] =
SELF)));
END_ENTITY; -- 10303-238: model_based_integrated_manufacturing_schema
ENTITY view_volume
SUBTYPE OF (founded_item);
projection_type : central_or_parallel;
projection_point : cartesian_point;
view_plane_distance : length_measure;
front_plane_distance : length_measure;
front_plane_clipping : BOOLEAN;
back_plane_distance : length_measure;
back_plane_clipping : BOOLEAN;
view_volume_sides_clipping : BOOLEAN;
view_window : planar_box;
INVERSE
camera_usages : SET [1:?] OF camera_model_d3 FOR perspective_of_volume;
WHERE
WR1: ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_2D'
IN TYPEOF(SELF\view_volume.view_window.placement)) OR (
dot_product(representation_item(' ') ||
geometric_representation_item() || direction([ 0.0, 0.0, 1.0
]), view_window\planar_box.placement\axis2_placement_3d.p[3])
= 1.0);
WR2: view_plane_distance = view_window.placement\placement.location.
coordinates[3];
END_ENTITY; -- 10303-46: presentation_organization_schema
ENTITY visual_appearance_representation
SUBTYPE OF (representation);
WHERE
WR1: ((3 <= SIZEOF(SELF.items)) AND (SIZEOF(SELF.items) <= 9)) AND (
SIZEOF(QUERY (i <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name IN [ 'colour id', 'colour name',
'lustre', 'pattern', 'transparency', 'orientation' ]))) +
SIZEOF(QUERY (i <* items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ]
* TYPEOF(i)) = 1) AND (i.name IN [ 'refraction index',
'opacity' ]))) + SIZEOF(QUERY (i <* items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DOCUMENT_FILE'
IN TYPEOF(i)) AND (i.name IN [ 'texture map' ]))) = SIZEOF(
SELF.items));
WR2: SIZEOF(QUERY (i <* SELF.items| (i.name = 'colour id'))) = 1;
WR3: SIZEOF(QUERY (i <* SELF.items| (i.name = 'lustre'))) = 1;
WR4: SIZEOF(QUERY (i <* SELF.items| (i.name = 'colour name'))) <= 1;
WR5: SIZEOF(QUERY (i <* SELF.items| (i.name = 'pattern'))) <= 1;
WR6: SIZEOF(QUERY (i <* SELF.items| (i.name = 'transparency'))) <= 1;
WR7: SIZEOF(QUERY (i <* SELF.items| (i.name = 'texture map'))) <= 1;
WR8: SIZEOF(QUERY (i <* SELF.items| (i.name = 'refraction index'))) <=
1;
WR9: SIZEOF(QUERY (i <* SELF.items| (i.name = 'opacity'))) <= 1;
WR10: SIZEOF(QUERY (i <* SELF.items| (i.name = 'orientation'))) <= 1;
WR11: (SIZEOF(USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
)| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GENERAL_PROPERTY'
IN TYPEOF(gpa.base_definition)) AND (gpa\
general_property_association.base_definition\general_property
.name = 'surface_condition'))) = 1))) = 1);
END_ENTITY; -- 10303-1110: surface_conditions_mim
ENTITY volume
SUPERTYPE OF (ONEOF(block_volume, wedge_volume, spherical_volume,
cylindrical_volume, eccentric_conical_volume, toroidal_volume,
pyramid_volume, b_spline_volume, ellipsoid_volume, tetrahedron_volume
, hexahedron_volume, locally_refined_spline_volume))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY volume_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VOLUME_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY volume_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(3.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY volume_with_faces
ABSTRACT SUPERTYPE OF (ONEOF(volume_with_shell,
volume_with_parametric_boundary))
SUBTYPE OF (geometric_representation_item,
topological_representation_item);
volume_geometry : volume;
END_ENTITY; -- 10303-42: topology_schema
ENTITY volume_with_parametric_boundary
SUBTYPE OF (volume_with_faces);
outer_bound : LIST [6:6] OF face;
END_ENTITY; -- 10303-42: topology_schema
ENTITY volume_with_shell
SUBTYPE OF (volume_with_faces);
outer_bound : closed_shell;
END_ENTITY; -- 10303-42: topology_schema
ENTITY wedge_volume
SUBTYPE OF (volume);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
ltx : length_measure;
WHERE
WR1: (0.0 <= ltx) AND (ltx < x);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY week_of_year_and_day_date
SUBTYPE OF (date);
week_component : week_in_year_number;
day_component : OPTIONAL day_in_week_number;
WHERE
WR1: NOT leap_year(SELF\date.year_component) OR (1 <= day_component + 7
* (week_component - 1)) AND (day_component + 7 * (
week_component - 1) <= 366);
WR2: leap_year(SELF\date.year_component) OR (1 <= day_component + 7 * (
week_component - 1)) AND (day_component + 7 * (week_component
- 1) <= 365);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY wire_shell
SUBTYPE OF (topological_representation_item);
wire_shell_extent : SET [1:?] OF loop;
WHERE
WR1: NOT mixed_loop_type_set(wire_shell_extent);
END_ENTITY; -- 10303-42: topology_schema
ENTITY xor_expression
SUBTYPE OF (binary_boolean_expression);
SELF\binary_generic_expression.operands : LIST [2:2] OF
boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY year_month
SUBTYPE OF (date);
month_component : month_in_year_number;
END_ENTITY; -- 10303-41: date_time_schema
RULE alternative_solution_requires_solution_definition FOR
(product_definition_formation);
LOCAL
solution_versions : SET OF product_definition_formation := [];
END_LOCAL;
solution_versions := QUERY (pdf <* product_definition_formation| SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'alternative solution'))) = 1);
WHERE
WR1: SIZEOF(QUERY (pdf <* solution_versions| (SIZEOF(QUERY (pd <*
USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| (pd.frame_of_reference.name = 'alternative definition')))
<> 1))) = 0;
END_RULE; -- 10303-1109: alternative_solution_mim
RULE application_context_requires_ap_definition FOR
(application_context,
application_protocol_definition);
WHERE
WR1: 0 = SIZEOF(QUERY (ac <* application_context| NOT (1 = SIZEOF(QUERY
(apd <* application_protocol_definition| (apd.application
:=: ac) AND (apd.application_interpreted_model_schema_name =
'model_based_integrated_manufacturing_schema'))))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
RULE breakdown_element_requires_product_definition FOR
(product_definition_formation);
WHERE
WR1: SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (
prpc <* USEDIN(pdf.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'functionality'))) = 1) AND (SIZEOF(QUERY (pd
<* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| (pd.frame_of_reference.name = 'functional definition'))) <
1))) = 0;
WR2: SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (
prpc <* USEDIN(pdf.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'conceptual design'))) = 1) AND (SIZEOF(QUERY
(pd <* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| (pd.frame_of_reference.name = 'conceptual definition'))) <
1))) = 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE chamfer_offset_requires_faces FOR
(chamfer_offset,
property_definition_representation);
WHERE
WR1: SIZEOF(QUERY (co <* chamfer_offset| NOT (1 = SIZEOF(QUERY (pdr <*
property_definition_representation| ((pdr\
property_definition_representation.definition\
property_definition.definition = co) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation))) AND ((pdr\
property_definition_representation.definition\
property_definition.definition.description = 'first offset')
AND (pdr.used_representation.name = 'first face shape') OR (
pdr\property_definition_representation.definition\
property_definition.definition.description = 'second offset')
AND (pdr.used_representation.name = 'second face shape')))))
)) = 0;
END_RULE; -- 10303-1814: machining_features_mim
RULE chamfer_requires_faces FOR
(chamfer,
property_definition_representation);
WHERE
WR1: SIZEOF(QUERY (cf <* chamfer| NOT (1 = SIZEOF(QUERY (pdr <*
property_definition_representation| ((pdr\
property_definition_representation.definition\
property_definition.definition = cf) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation))) AND (pdr.
used_representation.name = 'chamfer face')))))) = 0;
END_RULE; -- 10303-1814: machining_features_mim
RULE compatible_dimension FOR
(cartesian_point,
direction,
geometric_representation_context);
WHERE
WR1: ((SIZEOF(cartesian_point) = 0) AND (SIZEOF(direction) = 0)) AND (
SIZEOF(geometric_representation_context) = 0) OR
check_geometric_dimension(cartesian_point, direction,
geometric_representation_context);
END_RULE; -- 10303-42: geometry_schema
RULE consistent_uncertainty FOR
(global_uncertainty_assigned_context,
qualified_representation_item,
uncertainty_assigned_representation);
WHERE
WR1: SIZEOF(QUERY (guac <* global_uncertainty_assigned_context| (SIZEOF
(QUERY (u1 <* guac.uncertainty| (SIZEOF(QUERY (u2 <* guac.
uncertainty| (u2.name = u1.name))) > 1))) > 0))) = 0;
WR2: SIZEOF(QUERY (uar <* uncertainty_assigned_representation| (SIZEOF(
QUERY (u1 <* uar.uncertainty| (SIZEOF(QUERY (u2 <* uar.
uncertainty| (u2.name = u1.name))) > 1))) > 0))) = 0;
WR3: SIZEOF(QUERY (qri <* qualified_representation_item| (SIZEOF(QUERY
(u1 <* qri.qualifiers| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNCERTAINTY_QUALIFIER'
IN TYPEOF(u1)) AND (SIZEOF(QUERY (u2 <* qri.qualifiers| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNCERTAINTY_QUALIFIER'
IN TYPEOF(u2)) AND (u2\uncertainty_qualifier.measure_name =
u1\uncertainty_qualifier.measure_name))) > 1))) > 0))) = 0;
END_RULE; -- 10303-1782: qualified_measure_mim
RULE constraint_definition_requires_constraint_category FOR
(product_definition);
LOCAL
constraint_definitions : SET OF product_definition := [];
END_LOCAL;
constraint_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'design constraint definition');
WHERE
WR1: SIZEOF(QUERY (pd <* constraint_definitions| (SIZEOF(QUERY (prpc <*
USEDIN(pd.formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'requirement'))) = 0))) = 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE dependent_instantiable_derived_unit FOR
(derived_unit);
WHERE
WR1: 0 = SIZEOF(QUERY (du <* derived_unit| NOT (1 <= SIZEOF(USEDIN(du,
'')))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
RULE dependent_instantiable_named_unit FOR
(named_unit);
WHERE
WR1: 0 = SIZEOF(QUERY (nu <* named_unit| NOT (1 <= SIZEOF(USEDIN(nu, ''
)))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
RULE design_constraint_requires_product_definition FOR
(product_definition_formation);
WHERE
WR1: SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (
prpc <* USEDIN(pdf.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'requirement'))) > 0) AND (SIZEOF(QUERY (pd
<* USEDIN(pdf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION'
)| (pd.frame_of_reference.name =
'design constraint definition'))) < 1))) = 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE edge_round_requires_faces FOR
(edge_round,
property_definition_representation);
WHERE
WR1: 0 = SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <*
property_definition_representation| ((pdr\
property_definition_representation.definition\
property_definition.definition = er) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation))) AND (pdr.
used_representation.name = 'edge round face'))))));
WR2: SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <*
property_definition_representation| ((pdr\
property_definition_representation.definition\
property_definition.definition = er) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation))) AND (pdr.
used_representation.name = 'first face shape')))))) = 0;
WR3: SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <*
property_definition_representation| ((pdr\
property_definition_representation.definition\
property_definition.definition = er) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation))) AND (pdr.
used_representation.name = 'second face shape')))))) = 0;
END_RULE; -- 10303-1814: machining_features_mim
RULE external_version_assignments_are_valid FOR
(applied_external_identification_assignment);
WHERE
WR1: SIZEOF(QUERY (aia <* applied_external_identification_assignment|
NOT external_version_assignment_is_valid(aia))) = 0;
END_RULE; -- 10303-1129: external_properties_mim
RULE feature_optional_machining_property_process FOR
(shape_aspect,
process_property_association);
WHERE
WR1: 0 = SIZEOF(QUERY (sa <* shape_aspect| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_DEFINITION'
IN TYPEOF(sa)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TRANSITION_FEATURE'
IN TYPEOF(sa))) AND NOT (1 >= SIZEOF(QUERY (ppa <*
process_property_association| (ppa.property_or_shape :=: sa)
AND (ppa.process.name = 'machining'))))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
RULE machining_feature_definition_constraints FOR
(feature_definition);
LOCAL
mfds : SET OF feature_definition := [];
END_LOCAL;
mfds := QUERY (temp <* feature_definition| 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_DEFINITION' IN TYPEOF(temp));
WHERE
WR1: SIZEOF(QUERY (mfd <* mfds| NOT (SIZEOF(QUERY (pdr <*
get_property_definition_representations(mfd)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) <= 1))) = 0;
WR2: SIZEOF(QUERY (mfd <* mfds| NOT (SIZEOF(QUERY (pd <* USEDIN(mfd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN
TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0
))) = 0;
WR3: SIZEOF(QUERY (mfd <* mfds| NOT (NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUND_HOLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOSS',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OUTSIDE_PROFILE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REMOVAL_VOLUME',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FLAT_FACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POCKET',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROTRUSION',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RIB_TOP',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_END',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLOT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STEP' ] * TYPEOF
(mfds)) = 1) OR (SIZEOF(QUERY (pdr <*
get_property_definition_representations(mfd)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_SHAPE_REPRESENTATION'
IN TYPEOF(pdr.used_representation)) AND (pdr.
used_representation.name = 'maximum feature limit'))) >= 0)))
) = 0;
END_RULE; -- 10303-113: machining_feature_schema
RULE material_for_coating_layer FOR
(shape_aspect);
LOCAL
coating_layers : SET OF shape_aspect := [];
END_LOCAL;
coating_layers := QUERY (r <* shape_aspect| r.name = 'coating layer');
WHERE
WR1: SIZEOF(QUERY (r <* coating_layers| (SIZEOF(USEDIN(r,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MATERIAL_DESIGNATION.DEFINITIONS'
)) <> 1))) = 0;
END_RULE; -- 10303-1110: surface_conditions_mim
RULE nc_variable_compatible_initial_value FOR
(expression_item_representation_item,
representation_item_relationship);
WHERE
WR1: 0 = SIZEOF(QUERY (nv <* expression_item_representation_item| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(nv.item)) AND NOT (1 >= SIZEOF(QUERY (rir <*
representation_item_relationship| (rir.description =
'initial value') AND (rir.relating_representation_item :=: nv
))))));
WR2: 0 = SIZEOF(QUERY (rir <* representation_item_relationship| ((((rir
.description = 'initial value') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_ITEM_REPRESENTATION_ITEM'
IN TYPEOF(rir.relating_representation_item))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_ITEM_REPRESENTATION_ITEM'
IN TYPEOF(rir.related_representation_item))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(rir.relating_representation_item\
expression_item_representation_item.item))) AND NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_NUMERIC_VARIABLE'
IN TYPEOF(rir.relating_representation_item\
expression_item_representation_item.item)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_LITERAL' IN
TYPEOF(rir.related_representation_item\
expression_item_representation_item.item)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_NUMERIC_VARIABLE'
IN TYPEOF(rir.relating_representation_item\
expression_item_representation_item.item)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_LITERAL' IN
TYPEOF(rir.related_representation_item\
expression_item_representation_item.item)))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
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| 'MODEL_BASED_INTEGRATED_MANUFACTURING_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; -- 10303-1051: geometric_tolerance_mim
RULE plib_property_reference_requires_name_scope FOR
(externally_defined_general_property);
LOCAL
known_sourced_properties : SET OF externally_defined_general_property;
END_LOCAL;
known_sourced_properties := QUERY (edc <* externally_defined_general_property| 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KNOWN_SOURCE' IN TYPEOF(edc.source));
WHERE
WR1: SIZEOF(QUERY (edgp <* known_sourced_properties| (SIZEOF(QUERY (
edir <* USEDIN(edgp,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM'
)| ((edir.name = 'name scope') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNALLY_DEFINED_CLASS'
IN TYPEOF(edir.related_item))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KNOWN_SOURCE' IN
TYPEOF(edir.related_item.source)))) <> 1))) = 0;
END_RULE; -- 10303-1129: external_properties_mim
RULE plib_property_reference_requires_version FOR
(externally_defined_general_property);
LOCAL
plib_properties : SET OF externally_defined_general_property := [];
END_LOCAL;
plib_properties := QUERY (edgp <* externally_defined_general_property| ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KNOWN_SOURCE' IN TYPEOF(edgp.source)) AND ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.KNOWN_SOURCE.NAME' = 'ISO 13584 library'));
WHERE
WR1: SIZEOF(QUERY (edgp <* plib_properties| (SIZEOF(QUERY (edir <*
USEDIN(edgp,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS'
)| (edir.role.name = 'version'))) <> 1))) = 0;
END_RULE; -- 10303-1129: external_properties_mim
RULE product_concept_feature_requires_category FOR
(product_concept_feature);
WHERE
WR1: SIZEOF(QUERY (pcf <* product_concept_feature| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INCLUSION_PRODUCT_CONCEPT_FEATURE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDITIONAL_CONCEPT_FEATURE'
] * TYPEOF(pcf)) = 0) AND (SIZEOF(QUERY (aga <* USEDIN(pcf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_GROUP_ASSIGNMENT.ITEMS'
)| (aga\group_assignment.role\object_role.name =
'specification category member') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY'
IN TYPEOF(aga.assigned_group)))) <> 1))) = 0;
END_RULE; -- 10303-1103: product_class_mim
RULE product_definition_replacement_requires_effectivity_assignment FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name =
'definition replacement') AND (SIZEOF(USEDIN(pdr,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS'
)) = 0))) = 0;
END_RULE; -- 10303-1345: item_definition_structure_mim
RULE product_requires_version FOR
(product,
product_definition_formation);
WHERE
WR1: 0 = SIZEOF(QUERY (prod <* product| NOT (1 <= SIZEOF(QUERY (pdf <*
product_definition_formation| (prod :=: pdf.of_product))))));
END_RULE; -- 10303-238: model_based_integrated_manufacturing_schema
RULE restrict_alternative_definition FOR
(product_definition);
LOCAL
solution_definitions : SET OF product_definition := [];
END_LOCAL;
solution_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'alternative definition');
WHERE
WR1: SIZEOF(QUERY (pd <* solution_definitions| (SIZEOF(QUERY (pdr <*
USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (pdr.name = 'solution alternative definition'))) <> 1))) =
0;
WR2: SIZEOF(QUERY (pd <* solution_definitions| NOT (pd.name IN [
'technical', 'supplier', 'technical supplier', '' ]))) = 0;
WR3: SIZEOF(QUERY (pd <* solution_definitions| (pd.name IN [ 'supplier'
, 'technical supplier' ]) AND (SIZEOF(QUERY (aoa <* USEDIN(pd
.formation,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'
)| (aoa.role.name = 'supplier'))) <> 1))) = 0;
END_RULE; -- 10303-1109: alternative_solution_mim
RULE restrict_assembly_category FOR
(product_definition);
LOCAL
assembly_definitions : SET OF product_definition := [];
END_LOCAL;
assembly_definitions := QUERY (pd <* product_definition| SIZEOF(QUERY (pdca <* USEDIN(pd, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'assembly definition'))) > 0);
WHERE
WR1: SIZEOF(QUERY (pd <* assembly_definitions| NOT ('assembly' IN
categories_of_product(pd.formation.of_product)))) = 0;
END_RULE; -- 10303-1345: item_definition_structure_mim
RULE restrict_classification_assignments FOR
(applied_classification_assignment);
WHERE
WR1: SIZEOF(QUERY (aia <* applied_classification_assignment| NOT
class_assignment_is_valid(aia))) = 0;
END_RULE; -- 10303-1111: classification_with_attributes_mim
RULE restrict_collection_category FOR
(product_definition);
LOCAL
collection_definitions : SET OF product_definition := [];
END_LOCAL;
collection_definitions := QUERY (pd <* product_definition| SIZEOF(QUERY (pdca <* USEDIN(pd, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'collection definition'))) > 0);
WHERE
WR1: SIZEOF(QUERY (pd <* collection_definitions| NOT ('collection' IN
categories_of_product(pd.formation.of_product)))) = 0;
END_RULE; -- 10303-1115: part_collection_mim
RULE restrict_concept_feature_operator FOR
(concept_feature_operator);
WHERE
WR1: SIZEOF(QUERY (cfo <* concept_feature_operator| NOT (cfo.name IN [
'and', 'or', 'oneof', 'not', 'implication' ]))) = 0;
WR2: SIZEOF(QUERY (cfo <* concept_feature_operator| (cfo.name =
'implication') AND (SIZEOF(QUERY (cfrwc <* USEDIN(cfo,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR'
)| (SIZEOF(QUERY (ccf <* USEDIN(cfrwc,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDITIONAL_CONCEPT_FEATURE.CONDITION'
)| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INCLUSION_PRODUCT_CONCEPT_FEATURE'
IN TYPEOF(ccf)))) > 0))) > 0))) = 0;
WR3: SIZEOF(QUERY (cfo <* concept_feature_operator| (cfo.name = 'not')
AND (SIZEOF(QUERY (cfrwc <* USEDIN(cfo,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR'
)| (cfrwc.related_product_concept_feature :<>: cfrwc.
relating_product_concept_feature))) > 0))) = 0;
END_RULE; -- 10303-1103: product_class_mim
RULE restrict_configuration_design_for_class_breakdown_association FOR
(configuration_design);
WHERE
WR1: SIZEOF(QUERY (cd <* configuration_design| (cd.name =
'functionality') AND (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(cd.design)) OR (cd.design\product_definition.
frame_of_reference.name <> 'functional definition')))) = 0;
WR2: SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'realization'
) AND (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(cd.design)) OR (cd.design\product_definition.
frame_of_reference.name <> 'conceptual definition')))) = 0;
WR3: SIZEOF(QUERY (cd <* configuration_design| (cd.name IN [
'functionality', 'realization' ]) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CLASS'
IN TYPEOF(cd.configuration.item_concept)))) = 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE restrict_configuration_design_for_design_constraint FOR
(configuration_design);
WHERE
WR1: SIZEOF(QUERY (cd <* configuration_design| (cd.name =
'design constraint usage') AND (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(cd.design)) OR (cd.design\product_definition.
frame_of_reference.name <> 'design constraint definition'))))
= 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE restrict_group_relationship_for_classification_hierarchy FOR
(group_relationship);
WHERE
WR1: SIZEOF(QUERY (gr <* group_relationship| (gr\group_relationship.
name = 'class hierarchy') AND (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASS' IN TYPEOF
(gr\group_relationship.related_group)) OR NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASS' IN TYPEOF
(gr\group_relationship.relating_group))))) = 0;
END_RULE; -- 10303-1111: classification_with_attributes_mim
RULE restrict_group_relationship_for_specification_category FOR
(group_relationship);
WHERE
WR1: SIZEOF(QUERY (gr <* group_relationship| (gr.name =
'specification category hierarchy') AND (NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY'
IN TYPEOF(gr.related_group)) OR NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY'
IN TYPEOF(gr.relating_group))))) = 0;
END_RULE; -- 10303-1103: product_class_mim
RULE restrict_language_assignment_per_attribute FOR
(attribute_language_assignment);
WHERE
WR1: SIZEOF(QUERY (ala1 <* attribute_language_assignment| (SIZEOF(QUERY
(it <* ala1.items| (SIZEOF(QUERY (ala2 <* USEDIN(it,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS'
)| (ala1\attribute_classification_assignment.attribute_name =
ala2\attribute_classification_assignment.attribute_name) AND
(ala1\attribute_classification_assignment.assigned_class :=:
ala2\attribute_classification_assignment.assigned_class))) >
1))) > 0))) = 0;
END_RULE; -- 10303-1105: multi_linguism_mim
RULE restrict_part_occurrence FOR
(product_definition);
LOCAL
part_occurrences : SET OF product_definition := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'part occurrence');
END_LOCAL;
WHERE
WR1: SIZEOF(QUERY (pd <* part_occurrences| NOT (pd.name IN [
'single instance', 'selected instance', 'quantified instance'
, 'specified instance' ]))) = 0;
WR2: SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (pdr <* USEDIN
(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (pdr.name = 'definition usage'))) <> 1) AND (SIZEOF(QUERY
(cd <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONFIGURATION_DESIGN.DESIGN'
)| (cd.name = 'occurrence usage definition') AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_IDENTIFICATION'
IN TYPEOF(cd.configuration)))) <> 1))) = 0;
WR3: SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (cd <* USEDIN(
pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_USAGE'
IN TYPEOF(cd)))) = 0) AND (SIZEOF(USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE'
)) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* part_occurrences| (pd.name =
'selected instance') AND NOT
valid_selected_instance_representation(pd))) = 0;
WR5: SIZEOF(QUERY (pd <* part_occurrences| (pd.name =
'quantified instance') AND (SIZEOF(QUERY (ppd <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| (ppd.name = 'occurrence quantity') AND (SIZEOF(QUERY (pdr
<* USEDIN(ppd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((pdr.used_representation.name = 'quantity') AND (SIZEOF(
pdr.used_representation.items) = 1)) AND (SIZEOF(QUERY (i <*
pdr.used_representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name = 'quantity measure'))) = 1))) = 1
))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* part_occurrences| (pd.name =
'specified instance') AND (SIZEOF(QUERY (pdor <* USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SPECIFIED_HIGHER_USAGE_OCCURRENCE'
IN TYPEOF(pdor.occurrence_usage)))) = 0))) = 0;
END_RULE; -- 10303-1063: product_occurrence_mim
RULE restrict_part_occurrence_category FOR
(product_definition);
LOCAL
part_occurrences : SET OF product_definition := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'part occurrence');
END_LOCAL;
WHERE
WR1: SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (prpc <*
USEDIN(pd.formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name IN [ 'part', 'raw material', 'tool' ]))) = 0)))
= 0;
END_RULE; -- 10303-1063: product_occurrence_mim
RULE restrict_product_definitions_for_base_element FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name =
'solution alternative definition') AND (NOT (pdr.
relating_product_definition.frame_of_reference.name IN [
'alternative definition', 'functional definition',
'conceptual definition' ]) OR (pdr.related_product_definition
.frame_of_reference.name <> 'alternative definition')))) = 0;
END_RULE; -- 10303-1109: alternative_solution_mim
RULE restrict_product_definitions_for_collection FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name =
'collection membership') AND (((pdr.
relating_product_definition.frame_of_reference.name <>
'part definition') OR (pdr.related_product_definition.
frame_of_reference.name <> 'part occurrence')) OR (SIZEOF(
QUERY (pdca <* USEDIN(pdr.relating_product_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION'
)| (pdca.role.name = 'part definition type') AND (pdca.
frame_of_reference.name = 'collection definition'))) = 0))))
= 0;
END_RULE; -- 10303-1115: part_collection_mim
RULE restrict_product_definitions_for_definition_usage FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name =
'definition usage') AND ((pdr.relating_product_definition.
frame_of_reference.name <> 'part definition') OR (pdr.
related_product_definition.frame_of_reference.name <>
'part occurrence')))) = 0;
END_RULE; -- 10303-1063: product_occurrence_mim
RULE restrict_product_definitions_for_design_constraint_association FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name =
'design constraint association') AND ((pdr.
relating_product_definition.frame_of_reference.name <>
'design constraint definition') OR NOT (pdr.
related_product_definition.frame_of_reference.name IN [
'alternative definition', 'functional definition',
'conceptual definition' ])))) = 0;
END_RULE; -- 10303-1112: specification_control_mim
RULE restrict_product_definitions_for_part_definition_relationship FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name IN
[ 'geometrical relationship', 'definition replacement' ])
AND ((pdr.relating_product_definition.frame_of_reference.name
<> 'part definition') OR (pdr.related_product_definition.
frame_of_reference.name <> 'part definition')))) = 0;
END_RULE; -- 10303-1345: item_definition_structure_mim
RULE restrict_representation_for_surface_condition FOR
(property_definition_representation);
WHERE
WR1: SIZEOF(QUERY (pdr <* property_definition_representation| NOT
surface_condition_correlation(pdr.definition, pdr.
used_representation))) = 0;
END_RULE; -- 10303-1110: surface_conditions_mim
RULE restrict_support_structure_category FOR
(product_definition);
LOCAL
support_structures : SET OF product_definition := [];
END_LOCAL;
support_structures := QUERY (pd <* product_definition| SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'additive manufacturing support structure'))) <> 0);
WHERE
WR1: SIZEOF(QUERY (pd <* support_structures| (SIZEOF(QUERY (prpc <*
USEDIN(pd.formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'part'))) <> 0))) = 0;
END_RULE; -- 10303-1835: additive_manufacturing_part_and_build_information_mim
RULE restrict_treatment_result FOR
(representation);
LOCAL
treatment_results : SET OF representation := [];
END_LOCAL;
treatment_results := QUERY (r <* representation| r.name = 'treatment result');
WHERE
WR1: (SIZEOF(QUERY (r <* treatment_results| (SIZEOF(r.items) > 2))) = 0
) AND (SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i
<* r.items| NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)))) > 0))) = 0);
WR2: SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i <* r.items|
(i.name = 'result'))) = 0))) = 0;
WR3: SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i <* r.items|
(i.name = 'purpose'))) > 1))) = 0;
END_RULE; -- 10303-1110: surface_conditions_mim
RULE selected_instance_usage_requires_representation FOR
(assembly_component_usage);
LOCAL
selected_instance_usages : SET OF assembly_component_usage := QUERY (acr <* assembly_component_usage| acr.name = 'selected instance usage');
END_LOCAL;
WHERE
WR1: SIZEOF(QUERY (acr <* selected_instance_usages| NOT
valid_selected_instance_representation(acr))) = 0;
END_RULE; -- 10303-1063: product_occurrence_mim
RULE solution_definition_requires_solution_category FOR
(product_definition);
LOCAL
solution_definitions : SET OF product_definition := [];
END_LOCAL;
solution_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'alternative definition');
WHERE
WR1: SIZEOF(QUERY (pd <* solution_definitions| (SIZEOF(QUERY (prpc <*
USEDIN(pd.formation.of_product,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
)| (prpc.name = 'alternative solution'))) = 0))) = 0;
END_RULE; -- 10303-1109: alternative_solution_mim
RULE styled_curve FOR
(styled_item);
WHERE
WR1: SIZEOF(QUERY (si <* styled_item| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE' IN TYPEOF
(si.item)) AND (SIZEOF(QUERY (psa <* si.styles| (SIZEOF(QUERY
(cs <* psa.styles| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_STYLE' IN
TYPEOF(cs)))) > 0))) <> 1))) = 0;
END_RULE; -- 10303-1001: appearance_assignment_mim
RULE subtype_exclusiveness_geometric_tolerance FOR
(geometric_tolerance);
WHERE
WR1: SIZEOF(QUERY (gt <* geometric_tolerance| NOT type_check_function(
gt, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULARITY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_RUNOUT_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COAXIALITY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCENTRICITY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CYLINDRICITY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FLATNESS_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE_PROFILE_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARALLELISM_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PERPENDICULARITY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITION_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDNESS_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRAIGHTNESS_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_PROFILE_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SYMMETRY_TOLERANCE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOTAL_RUNOUT_TOLERANCE'
], 2))) = 0;
END_RULE; -- 10303-47: shape_tolerance_schema
RULE subtype_exclusiveness_representation_item FOR
(representation_item);
WHERE
WR1: SIZEOF(QUERY (cri <* representation_item| NOT type_check_function(
cri, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
], 3))) = 0;
END_RULE; -- 10303-1106: extended_measure_representation_mim
RULE text_font_usage FOR
(externally_defined_text_font,
pre_defined_text_font);
WHERE
WR1: SIZEOF(QUERY (pdtf <* pre_defined_text_font| (SIZEOF(USEDIN(pdtf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL.FONT'
)) = 0))) = 0;
WR2: SIZEOF(QUERY (edtf <* externally_defined_text_font| (SIZEOF(USEDIN
(edtf,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEXT_LITERAL.FONT'
)) = 0))) = 0;
END_RULE; -- 10303-1136: text_appearance_mim
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; -- 10303-1051: geometric_tolerance_mim
RULE transition_feature_on_part_boundary FOR
(transition_feature);
WHERE
WR1: SIZEOF(QUERY (tf <* transition_feature| NOT tf.
product_definitional)) = 0;
END_RULE; -- 10303-1814: machining_features_mim
RULE tri_identification_within_product_definition FOR
(product_definition,
topological_representation_item,
representation);
LOCAL
associated_representations : SET [1:?] OF representation := [];
items : SET [1:?] OF topological_representation_item := [];
pd_items : SET [1:?] OF topological_representation_item := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := LOINDEX(product_definition) TO HIINDEX(product_definition) WHILE pass;
pd_items := get_tri_for_pd(product_definition[i]);
associated_representations := get_representations_for_items(pd_items);
items := get_tri_in_representations(associated_representations) + pd_items;
IF SIZEOF(items) > 0 THEN
IF SIZEOF(QUERY (ai <* items| NOT (EXISTS(ai\topological_representation_item.permanent_id) OR EXISTS(ai\topological_representation_item.permanent_aggregate_id)))) > 0 THEN
pass := valid_tri_ids(items);
END_IF;
END_IF;
END_REPEAT;
WHERE
WR1: pass;
END_RULE; -- 10303-113: mechanical_design_schema
RULE unique_datum_system FOR
(product_definition_shape,
datum_system);
LOCAL
ds : SET OF datum_system := [];
sa : SET OF shape_aspect := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT ii := 1 TO SIZEOF(product_definition_shape) WHILE pass;
sa := bag_to_set(USEDIN(product_definition_shape[ii], 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'));
REPEAT iii := 1 TO SIZEOF(sa) WHILE pass;
ds := QUERY (ds <* sa| 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_SYSTEM' IN TYPEOF(ds));
REPEAT i := 1 TO SIZEOF(ds);
REPEAT j := 1 TO SIZEOF(ds);
IF i <> j THEN
IF ds[i]\datum_system.constituents = ds[j]\datum_system.constituents THEN
pass := FALSE;
END_IF;
END_IF;
END_REPEAT;
END_REPEAT;
END_REPEAT;
END_REPEAT;
WHERE
WR1: pass;
END_RULE; -- 10303-47: shape_aspect_definition_schema
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], 'MODEL_BASED_INTEGRATED_MANUFACTURING_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; -- 10303-1051: geometric_tolerance_mim
FUNCTION above_plane (
p1 : cartesian_point;
p2 : cartesian_point;
p3 : cartesian_point;
p4 : cartesian_point
) : REAL;
LOCAL
dir2 : direction := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
dir3 : direction := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
dir4 : direction := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
val : REAL;
mag : REAL;
END_LOCAL;
IF p1.dim <> 3 THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO 3;
dir2.direction_ratios[i] := p2.coordinates[i] - p1.coordinates[i];
dir3.direction_ratios[i] := p3.coordinates[i] - p1.coordinates[i];
dir4.direction_ratios[i] := p4.coordinates[i] - p1.coordinates[i];
mag := dir4.direction_ratios[i] * dir4.direction_ratios[i];
END_REPEAT;
mag := SQRT(mag);
val := mag * dot_product(dir4, cross_product(dir2, dir3).orientation);
RETURN (val);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION acyclic (
arg1 : generic_expression;
arg2 : SET OF generic_expression
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIMPLE_GENERIC_EXPRESSION'
IN TYPEOF(arg1) THEN
RETURN (TRUE);
END_IF;
IF arg1 IN arg2 THEN
RETURN (FALSE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.UNARY_GENERIC_EXPRESSION'
IN TYPEOF(arg1) THEN
RETURN (acyclic(arg1\unary_generic_expression.operand, arg2 + [ arg1
]));
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BINARY_GENERIC_EXPRESSION'
IN TYPEOF(arg1) THEN
RETURN (acyclic(arg1\binary_generic_expression.operands[1], (arg2 + [
arg1 ])) AND acyclic(arg1\binary_generic_expression.operands[2], (
arg2 + [ arg1 ])));
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MULTIPLE_ARITY_GENERIC_EXPRESSION'
IN TYPEOF(arg1) THEN
result := TRUE;
REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.
operands);
result := result AND acyclic(arg1\multiple_arity_generic_expression
.operands[i], (arg2 + [ arg1 ]));
END_REPEAT;
RETURN (result);
END_IF;
RETURN (result);
END_FUNCTION; -- 13584-20: iso13584_generic_expressions_schema
FUNCTION acyclic_classification_assignment_relationship (
relation : classification_assignment_relationship;
relatives : SET [1:?] OF classification_assignment;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF classification_assignment_relationship;
END_LOCAL;
IF relation.relating IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (car <* bag_to_set(USEDIN(relation.relating,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASSIFICATION_ASSIGNMENT_RELATIONSHIP.RELATED'
))| specific_relation IN TYPEOF(car));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_classification_assignment_relationship(x[i], (
relatives + relation.relating), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: management_resources_schema
FUNCTION acyclic_composite_text (
start_composite : composite_text;
child_text : SET [1:?] OF text_or_character
) : LOGICAL;
LOCAL
i : INTEGER;
local_composite_text : SET [0:?] OF composite_text;
local_annotation_text : SET [0:?] OF annotation_text;
local_children : SET [0:?] OF text_or_character;
END_LOCAL;
local_composite_text := QUERY (child <* child_text|
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT' IN
TYPEOF(child));
IF SIZEOF(local_composite_text) > 0 THEN
REPEAT i := 1 TO HIINDEX(local_composite_text);
IF start_composite :=: local_composite_text[i] THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
local_children := child_text;
IF SIZEOF(local_composite_text) > 0 THEN
REPEAT i := 1 TO HIINDEX(local_composite_text);
local_children := local_children + local_composite_text[i].
collected_text;
END_REPEAT;
END_IF;
local_annotation_text := QUERY (child <* child_text|
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT' IN
TYPEOF(child));
IF SIZEOF(local_annotation_text) > 0 THEN
REPEAT i := 1 TO HIINDEX(local_annotation_text);
local_children := local_children + QUERY (item <*
local_annotation_text[i]\mapped_item.mapping_source.
mapped_representation.items| (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_TEXT' ] *
TYPEOF(item)) > 0));
END_REPEAT;
END_IF;
IF local_children :<>: child_text THEN
RETURN (acyclic_composite_text(start_composite, local_children));
ELSE
RETURN (TRUE);
END_IF;
END_FUNCTION; -- 10303-46: presentation_definition_schema
FUNCTION acyclic_curve_replica (
rep : curve_replica;
parent : curve
) : BOOLEAN;
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_curve_replica(rep, parent\curve_replica.parent_curve)
);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION acyclic_external_identification_assignment_relationship (
relation : external_identification_assignment_relationship;
relatives : SET [1:?] OF external_identification_assignment;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF external_identification_assignment_relationship;
END_LOCAL;
IF relation.relating IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (eiar <* bag_to_set(USEDIN(relation.relating,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.RELATED'
))| specific_relation IN TYPEOF(eiar));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_external_identification_assignment_relationship(x[i],
(relatives + relation.relating), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: management_resources_schema
FUNCTION acyclic_geometric_tolerance_relationship (
relation : geometric_tolerance_relationship;
relatives : SET [1:?] OF geometric_tolerance;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF geometric_tolerance_relationship;
END_LOCAL;
IF relation.relating_geometric_tolerance IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (geotol <* bag_to_set(USEDIN(relation.
relating_geometric_tolerance,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE'
))| specific_relation IN TYPEOF(geotol));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_geometric_tolerance_relationship(x[i], (relatives +
relation.relating_geometric_tolerance), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-47: shape_tolerance_schema
FUNCTION acyclic_mapped_representation (
mi : mapped_item
) : BOOLEAN;
LOCAL
rms : SET OF representation_map;
mis : SET OF mapped_item;
rs1 : SET OF representation;
rs2 : SET OF representation;
END_LOCAL;
rs1 := using_representations(mi);
rs2 := [];
REPEAT WHILE SIZEOF(rs1) > 0;
REPEAT i := 1 TO HIINDEX(rs1);
rms := bag_to_set(USEDIN(rs1[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'
));
IF SIZEOF(rms) > 0 THEN
REPEAT j := 1 TO HIINDEX(rms);
mis := bag_to_set(USEDIN(rms[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'
));
IF SIZEOF(mis) > 0 THEN
REPEAT j := 1 TO HIINDEX(mis);
IF mis[i] :=: mi THEN
RETURN (FALSE);
END_IF;
rs2 := rs2 + using_representations(mis[i]);
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
rs1 := rs2;
rs2 := [];
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION acyclic_point_replica (
rep : point_replica;
parent : point
) : BOOLEAN;
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_REPLICA' IN
TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_point_replica(rep, parent\point_replica.parent_pt));
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION acyclic_product_category_relationship (
relation : product_category_relationship;
children : SET OF product_category
) : BOOLEAN;
LOCAL
x : SET OF product_category_relationship;
local_children : SET OF product_category;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(children);
IF relation.category :=: children[i] THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
x := bag_to_set(USEDIN(relation.category,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'
));
local_children := children + relation.category;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_product_category_relationship(x[i], local_children)
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
FUNCTION acyclic_product_definition_relationship (
relation : product_definition_relationship;
relatives : SET [1:?] OF product_definition_or_reference;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF product_definition_relationship;
END_LOCAL;
IF relation.relating_product_definition IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (pd <* bag_to_set(USEDIN(relation.
relating_product_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
))| specific_relation IN TYPEOF(pd));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_product_definition_relationship(x[i], (relatives +
relation.relating_product_definition), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
FUNCTION acyclic_product_definition_specified_occurrence (
pdso : product_definition_specified_occurrence;
definition : product_definition_occurrence
) : BOOLEAN;
IF NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE'
IN TYPEOF(definition)) THEN
RETURN (TRUE);
END_IF;
IF definition :=: pdso THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_product_definition_specified_occurrence(pdso,
definition\product_definition_occurrence.definition));
END_IF;
END_FUNCTION; -- 10303-44: product_structure_schema
FUNCTION acyclic_representation_relationship (
relation : representation_relationship;
relatives : SET [1:?] OF representation;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF representation_relationship;
END_LOCAL;
IF relation.rep_1 IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (r <* bag_to_set(USEDIN(relation.rep_1,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'
))| specific_relation IN TYPEOF(r));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_representation_relationship(x[i], (relatives +
relation.rep_1), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION acyclic_shape_aspect_occurrence (
sao : shape_aspect_occurrence;
definition : shape_aspect_or_characterized_object
) : BOOLEAN;
IF NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT_OCCURRENCE'
IN TYPEOF(definition)) THEN
RETURN (TRUE);
END_IF;
IF definition :=: sao THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_shape_aspect_occurrence(sao, definition\
shape_aspect_occurrence.definition));
END_IF;
END_FUNCTION; -- 10303-41: product_property_definition_schema
FUNCTION acyclic_solid_replica (
rep : solid_replica;
parent : solid_model
) : BOOLEAN;
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SOLID_REPLICA' IN
TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_solid_replica(rep, parent\solid_replica.parent_solid)
);
END_IF;
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION acyclic_surface_replica (
rep : surface_replica;
parent : surface
) : BOOLEAN;
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_REPLICA'
IN TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_surface_replica(rep, parent\surface_replica.
parent_surface));
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION advanced_face_properties (
testface : face
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ADVANCED_FACE' IN
TYPEOF(testface) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBFACE' IN TYPEOF(
testface) THEN
RETURN (advanced_face_properties(testface\subface.parent_face));
ELSE
RETURN (FALSE);
END_IF;
END_FUNCTION; -- 10303-521: aic_manifold_subsurface
FUNCTION all_members_of_es (
sv : SET OF maths_value;
es : elementary_space_enumerators
) : LOGICAL;
CONSTANT
base_types : SET OF STRING := [ 'NUMBER', 'COMPLEX_NUMBER_LITERAL',
'REAL', 'INTEGER', 'LOGICAL', 'BOOLEAN', 'STRING', 'BINARY',
'MATHS_SPACE', 'MATHS_FUNCTION', 'LIST',
'ELEMENTARY_SPACE_ENUMERATORS', 'ORDERING_TYPE', 'LOWER_UPPER',
'SYMMETRY_TYPE', 'ELEMENTARY_FUNCTION_ENUMERATORS', 'OPEN_CLOSED',
'SPACE_CONSTRAINT_TYPE', 'REPACKAGE_OPTIONS', 'EXTENSION_OPTIONS' ];
END_CONSTANT;
LOCAL
v : maths_value;
key_type : STRING := '';
types : SET OF STRING;
ge : generic_expression;
cum : LOGICAL := TRUE;
vspc : maths_space;
END_LOCAL;
IF NOT EXISTS(sv) OR NOT EXISTS(es) THEN
RETURN (FALSE);
END_IF;
CASE es OF
es_numbers :
key_type := 'NUMBER';
es_complex_numbers :
key_type := 'COMPLEX_NUMBER_LITERAL';
es_reals :
key_type := 'REAL';
es_integers :
key_type := 'INTEGER';
es_logicals :
key_type := 'LOGICAL';
es_booleans :
key_type := 'BOOLEAN';
es_strings :
key_type := 'STRING';
es_binarys :
key_type := 'BINARY';
es_maths_spaces :
key_type := 'MATHS_SPACE';
es_maths_functions :
key_type := 'MATHS_FUNCTION';
es_generics :
RETURN (TRUE);
END_CASE;
REPEAT i := 1 TO SIZEOF(sv);
IF NOT EXISTS(sv[i]) THEN
RETURN (FALSE);
END_IF;
v := simplify_maths_value(sv[i]);
types := stripped_typeof(v);
IF key_type IN types THEN
SKIP;
END_IF;
IF (es = es_numbers) AND ('COMPLEX_NUMBER_LITERAL' IN types) THEN
SKIP;
END_IF;
IF SIZEOF(base_types * types) > 0 THEN
RETURN (FALSE);
END_IF;
ge := v;
IF has_values_space(ge) THEN
vspc := values_space_of(ge);
IF NOT subspace_of_es(vspc, es) THEN
IF NOT compatible_spaces(vspc, make_elementary_space(es)) THEN
RETURN (FALSE);
END_IF;
cum := UNKNOWN;
END_IF;
ELSE
cum := UNKNOWN;
END_IF;
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION any_space_satisfies (
sc : space_constraint_type;
spc : maths_space
) : BOOLEAN;
LOCAL
spc_id : elementary_space_enumerators;
END_LOCAL;
IF (sc = sc_equal) OR NOT ('ELEMENTARY_SPACE' IN stripped_typeof(spc))
THEN
RETURN (FALSE);
END_IF;
spc_id := spc\elementary_space.space_id;
IF sc = sc_subspace THEN
RETURN (bool(spc_id = es_generics));
END_IF;
IF sc = sc_member THEN
RETURN (bool((spc_id = es_generics) OR (spc_id = es_maths_spaces)));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION aspect_ratio (
p : planar_box
) : positive_ratio_measure;
IF (p.size_in_x > 0.0) AND (p.size_in_y > 0.0) THEN
RETURN (p.size_in_x / p.size_in_y);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-46: presentation_organization_schema
FUNCTION assoc_product_space (
ts1 : tuple_space;
ts2 : tuple_space
) : tuple_space;
LOCAL
types1 : SET OF STRING := stripped_typeof(ts1);
types2 : SET OF STRING := stripped_typeof(ts2);
up1 : uniform_product_space := make_uniform_product_space(the_reals, 1)
;
up2 : uniform_product_space := make_uniform_product_space(the_reals, 1)
;
lp1 : listed_product_space := the_zero_tuple_space;
lp2 : listed_product_space := the_zero_tuple_space;
lps : listed_product_space := the_zero_tuple_space;
et1 : extended_tuple_space := the_tuples;
et2 : extended_tuple_space := the_tuples;
ets : extended_tuple_space := the_tuples;
use_up1 : BOOLEAN;
use_up2 : BOOLEAN;
use_lp1 : BOOLEAN;
use_lp2 : BOOLEAN;
factors : LIST OF maths_space := [];
tspace : tuple_space;
END_LOCAL;
IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
up1 := ts1;
use_up1 := TRUE;
use_lp1 := FALSE;
ELSE
IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
lp1 := ts1;
use_up1 := FALSE;
use_lp1 := TRUE;
ELSE
IF NOT ('EXTENDED_TUPLE_SPACE' IN types1) THEN
RETURN (?);
END_IF;
et1 := ts1;
use_up1 := FALSE;
use_lp1 := FALSE;
END_IF;
END_IF;
IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
up2 := ts2;
use_up2 := TRUE;
use_lp2 := FALSE;
ELSE
IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
lp2 := ts2;
use_up2 := FALSE;
use_lp2 := TRUE;
ELSE
IF NOT ('EXTENDED_TUPLE_SPACE' IN types2) THEN
RETURN (?);
END_IF;
et2 := ts2;
use_up2 := FALSE;
use_lp2 := FALSE;
END_IF;
END_IF;
IF use_up1 THEN
IF use_up2 THEN
IF up1.base = up2.base THEN
tspace := make_uniform_product_space(up1.base, up1.exponent + up2
.exponent);
ELSE
factors := [ up1.base, up2.base ];
tspace := make_listed_product_space(factors);
END_IF;
ELSE
IF use_lp2 THEN
factors := [ up1.base ];
factors := factors + lp2.factors;
tspace := make_listed_product_space(factors);
ELSE
tspace := assoc_product_space(up1, et2.base);
tspace := make_extended_tuple_space(tspace, et2.extender);
END_IF;
END_IF;
ELSE
IF use_lp1 THEN
IF use_up2 THEN
factors := [ up2.base ];
factors := lp1.factors + factors;
tspace := make_listed_product_space(factors);
ELSE
IF use_lp2 THEN
tspace := make_listed_product_space(lp1.factors + lp2.factors);
ELSE
tspace := assoc_product_space(lp1, et2.base);
tspace := make_extended_tuple_space(tspace, et2.extender);
END_IF;
END_IF;
ELSE
IF use_up2 THEN
IF et1.extender = up2.base THEN
tspace := assoc_product_space(et1.base, up2);
tspace := make_extended_tuple_space(tspace, et1.extender);
ELSE
RETURN (?);
END_IF;
ELSE
IF use_lp2 THEN
factors := lp2.factors;
REPEAT i := 1 TO SIZEOF(factors);
IF et1.extender <> factors[i] THEN
RETURN (?);
END_IF;
END_REPEAT;
tspace := assoc_product_space(et1.base, lp2);
tspace := make_extended_tuple_space(tspace, et1.extender);
ELSE
IF et1.extender = et2.extender THEN
tspace := assoc_product_space(et1, et2.base);
ELSE
RETURN (?);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (tspace);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION associated_surface (
arg : pcurve_or_surface
) : surface;
LOCAL
surf : surface;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(arg)
THEN
surf := arg\pcurve.basis_surface;
ELSE
surf := arg;
END_IF;
RETURN (surf);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION atan2 (
y : REAL;
x : REAL
) : REAL;
LOCAL
r : REAL;
END_LOCAL;
IF (y = 0.0) AND (x = 0.0) THEN
RETURN (?);
END_IF;
r := ATAN(y, x);
IF x < 0.0 THEN
IF y < 0.0 THEN
r := r - PI;
ELSE
r := r + PI;
END_IF;
END_IF;
RETURN (r);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION bag_to_set (
the_bag : BAG OF GENERIC : INTYPE
) : SET OF GENERIC : INTYPE;
LOCAL
the_set : SET OF GENERIC : INTYPE := [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag);
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN (the_set);
END_FUNCTION; -- 10303-41: support_resource_schema
FUNCTION base_axis (
dim : INTEGER;
axis1 : direction;
axis2 : direction;
axis3 : direction
) : LIST [2:3] OF direction;
LOCAL
u : LIST [2:3] OF direction;
factor : REAL;
d1 : direction;
d2 : direction;
END_LOCAL;
IF dim = 3 THEN
d1 := NVL(normalise(axis3), dummy_gri || direction([ 0.0, 0.0, 1.0 ])
);
d2 := first_proj_axis(d1, axis1);
u := [ d2, second_proj_axis(d1, d2, axis2), d1 ];
ELSE
IF EXISTS(axis1) THEN
d1 := normalise(axis1);
u := [ d1, orthogonal_complement(d1) ];
IF EXISTS(axis2) THEN
factor := dot_product(axis2, u[2]);
IF factor < 0.0 THEN
u[2].direction_ratios[1] := -u[2].direction_ratios[1];
u[2].direction_ratios[2] := -u[2].direction_ratios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(axis2) THEN
d1 := normalise(axis2);
u := [ orthogonal_complement(d1), d1 ];
u[1].direction_ratios[1] := -u[1].direction_ratios[1];
u[1].direction_ratios[2] := -u[1].direction_ratios[2];
ELSE
u := [ dummy_gri || direction([ 1.0, 0.0 ]), dummy_gri ||
direction([ 0.0, 1.0 ]) ];
END_IF;
END_IF;
END_IF;
RETURN (u);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION bool (
lgcl : LOGICAL
) : BOOLEAN;
IF NOT EXISTS(lgcl) THEN
RETURN (FALSE);
END_IF;
IF lgcl <> TRUE THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION boolean_choose (
b : BOOLEAN;
choice1 : GENERIC : item;
choice2 : GENERIC : item
) : GENERIC : item;
IF b THEN
RETURN (choice1);
ELSE
RETURN (choice2);
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION build_2axes (
ref_direction : direction
) : LIST [2:2] OF direction;
LOCAL
d : direction := NVL(normalise(ref_direction), dummy_gri || direction([
1.0, 0.0 ]));
END_LOCAL;
RETURN ([ d, orthogonal_complement(d) ]);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION build_axes (
axis : direction;
ref_direction : direction
) : LIST [3:3] OF direction;
LOCAL
d1 : direction;
d2 : direction;
END_LOCAL;
d1 := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0, 1.0 ]));
d2 := first_proj_axis(d1, ref_direction);
RETURN ([ d2, normalise(cross_product(d1, d2))\vector.orientation, d1 ]
);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION categories_of_product (
obj : product
) : SET OF STRING;
LOCAL
category_assignments : BAG OF product_category;
categories : SET OF STRING := [];
END_LOCAL;
category_assignments := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'
);
REPEAT i := LOINDEX(category_assignments) TO HIINDEX(
category_assignments) BY 1;
categories := categories + category_assignments[i].name;
END_REPEAT;
RETURN (categories);
END_FUNCTION; -- 10303-41: product_definition_schema
FUNCTION check_geometric_dimension (
capt : SET [0:?] OF cartesian_point;
dir : SET [0:?] OF direction;
grc : SET [1:?] OF geometric_representation_context
) : BOOLEAN;
LOCAL
globaldim : INTEGER := 0;
reps : SET [0:?] OF representation := [];
result : BOOLEAN := TRUE;
END_LOCAL;
globaldim := geometric_dimensionalities_in_contexts(grc);
IF globaldim > 0 THEN
IF SIZEOF(capt) > 0 THEN
REPEAT i := 1 TO HIINDEX(capt);
IF HIINDEX(capt[i].coordinates) <> globaldim THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
IF SIZEOF(dir) > 0 THEN
REPEAT i := 1 TO HIINDEX(dir);
IF HIINDEX(dir[i].direction_ratios) <> globaldim THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN (result);
ELSE
IF SIZEOF(capt) > 0 THEN
REPEAT i := 1 TO HIINDEX(capt);
reps := using_representations(capt[i]);
IF SIZEOF(reps) > 0 THEN
REPEAT j := 1 TO HIINDEX(reps);
IF HIINDEX(capt[i].coordinates) <> reps[j].context_of_items\
geometric_representation_context.coordinate_space_dimension
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
ELSE
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
IF SIZEOF(dir) > 0 THEN
REPEAT i := 1 TO HIINDEX(dir);
reps := using_representations(dir[i]);
IF SIZEOF(reps) > 0 THEN
REPEAT j := 1 TO HIINDEX(reps);
IF HIINDEX(dir[i].direction_ratios) <> reps[j].
context_of_items\geometric_representation_context.
coordinate_space_dimension THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
ELSE
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION check_sparse_index_domain (
idxdom : tuple_space;
base : zero_or_one;
shape : LIST [1:?] OF positive_integer;
order : ordering_type
) : BOOLEAN;
LOCAL
mthspc : maths_space;
interval : finite_integer_interval;
i : INTEGER;
END_LOCAL;
mthspc := factor1(idxdom);
interval := mthspc;
IF order = by_rows THEN
i := 1;
ELSE
i := 2;
END_IF;
RETURN (bool((interval.min <= base) AND (interval.max >= base + shape[i
])));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION check_sparse_index_to_loc (
index_range : tuple_space;
loc_domain : tuple_space
) : BOOLEAN;
LOCAL
temp : maths_space;
idx_rng_itvl : finite_integer_interval;
loc_dmn_itvl : finite_integer_interval;
END_LOCAL;
temp := factor1(index_range);
IF schema_prefix + 'TUPLE_SPACE' IN TYPEOF(temp) THEN
temp := factor1(temp);
END_IF;
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
RETURN (FALSE);
END_IF;
idx_rng_itvl := temp;
temp := factor1(loc_domain);
IF schema_prefix + 'TUPLE_SPACE' IN TYPEOF(temp) THEN
temp := factor1(temp);
END_IF;
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
RETURN (FALSE);
END_IF;
loc_dmn_itvl := temp;
RETURN (bool((loc_dmn_itvl.min <= idx_rng_itvl.min) AND (idx_rng_itvl.
max <= loc_dmn_itvl.max + 1)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION check_sparse_loc_range (
locrng : tuple_space;
base : zero_or_one;
shape : LIST [1:?] OF positive_integer;
order : ordering_type
) : BOOLEAN;
LOCAL
mthspc : maths_space;
interval : finite_integer_interval;
i : INTEGER;
END_LOCAL;
IF space_dimension(locrng) <> 1 THEN
RETURN (FALSE);
END_IF;
mthspc := factor1(locrng);
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(mthspc))
THEN
RETURN (FALSE);
END_IF;
interval := mthspc;
IF order = by_rows THEN
i := 2;
ELSE
i := 1;
END_IF;
RETURN (bool((interval.min >= base) AND (interval.max <= base + shape[i
] - 1)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION check_text_alignment (
ct : composite_text
) : BOOLEAN;
LOCAL
a : SET OF text_alignment := [];
END_LOCAL;
REPEAT i := 1 TO HIINDEX(ct.collected_text);
a := a + [ ct.collected_text[i]\text_literal.alignment ];
END_REPEAT;
RETURN (SIZEOF(a) = 1);
END_FUNCTION; -- 10303-504: aic_draughting_annotation
FUNCTION check_text_font (
ct : composite_text
) : BOOLEAN;
LOCAL
f : SET OF font_select := [];
END_LOCAL;
REPEAT i := 1 TO HIINDEX(ct.collected_text);
f := f + [ ct.collected_text[i]\text_literal.font ];
END_REPEAT;
RETURN (SIZEOF(f) <= 1);
END_FUNCTION; -- 10303-504: aic_draughting_annotation
FUNCTION class_assignment_is_valid (
aia : applied_classification_assignment
) : BOOLEAN;
LOCAL
item : classification_item;
role : classification_role;
END_LOCAL;
role := aia\classification_assignment.role;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASS_SYSTEM' IN TYPEOF
(aia\classification_assignment.assigned_class) THEN
IF role\classification_role.name <> 'class system membership' THEN
RETURN (FALSE);
END_IF;
REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO
HIINDEX(aia\applied_classification_assignment.items);
item := aia\applied_classification_assignment.items[i];
IF SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHARACTERIZED_CLASS'
] * TYPEOF(item)) = 0 THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CHARACTERIZED_CLASS' IN
TYPEOF(aia\classification_assignment.assigned_class) THEN
IF NOT (role\classification_role.name IN [ 'definitional',
'non-definitional', '' ]) THEN
RETURN (FALSE);
END_IF;
REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO
HIINDEX(aia\applied_classification_assignment.items);
item := aia\applied_classification_assignment.items[i];
IF SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLASSIFIED_ITEM' ] *
TYPEOF(item)) = 0 THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
IF role\classification_role.name = 'definitional' THEN
IF NOT (SIZEOF(QUERY (it <* aia\applied_classification_assignment.
items| NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_FORMATION'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
] * TYPEOF(it)) = 1))) = 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-1111: classification_with_attributes_mim
FUNCTION closed_shell_reversed (
a_shell : closed_shell
) : oriented_closed_shell;
LOCAL
the_reverse : oriented_closed_shell;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_CLOSED_SHELL'
IN TYPEOF(a_shell) THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || closed_shell() ||
oriented_closed_shell(a_shell\oriented_closed_shell.
closed_shell_element, NOT a_shell\oriented_closed_shell.orientation
);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || closed_shell() ||
oriented_closed_shell(a_shell, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION collect_joints (
items : SET [1:?] OF pair_representation_relationship
) : SET OF kinematic_joint;
LOCAL
result : SET OF kinematic_joint := [];
END_LOCAL;
REPEAT i := 1 TO HIINDEX(items);
result := result + items[i].transformation_operator.joint;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
FUNCTION compare_basis_and_coef (
basis : LIST [1:?] OF b_spline_basis;
coef : maths_function
) : BOOLEAN;
LOCAL
shape : LIST OF positive_integer;
END_LOCAL;
IF NOT EXISTS(basis) OR NOT EXISTS(coef) THEN
RETURN (FALSE);
END_IF;
shape := shape_of_array(coef);
IF NOT EXISTS(shape) THEN
RETURN (FALSE);
END_IF;
IF SIZEOF(shape) < SIZEOF(basis) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO SIZEOF(basis);
IF (basis[i].num_basis = shape[i]) <> TRUE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION compatible_complex_number_regions (
sp1 : maths_space;
sp2 : maths_space
) : BOOLEAN;
LOCAL
typenames : SET OF STRING := stripped_typeof(sp1);
crgn1 : cartesian_complex_number_region;
crgn2 : cartesian_complex_number_region;
prgn1 : polar_complex_number_region;
prgn2 : polar_complex_number_region;
prgn1c2 : polar_complex_number_region;
prgn2c1 : polar_complex_number_region;
sp1_is_crgn : BOOLEAN;
sp2_is_crgn : BOOLEAN;
END_LOCAL;
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
sp1_is_crgn := TRUE;
crgn1 := sp1;
ELSE
IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
sp1_is_crgn := FALSE;
prgn1 := sp1;
ELSE
RETURN (TRUE);
END_IF;
END_IF;
typenames := stripped_typeof(sp2);
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
sp2_is_crgn := TRUE;
crgn2 := sp2;
ELSE
IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
sp2_is_crgn := FALSE;
prgn2 := sp2;
ELSE
RETURN (TRUE);
END_IF;
END_IF;
IF sp1_is_crgn AND sp2_is_crgn THEN
RETURN (compatible_intervals(crgn1.real_constraint, crgn2.
real_constraint) AND compatible_intervals(crgn1.imag_constraint,
crgn2.imag_constraint));
END_IF;
IF ((NOT sp1_is_crgn AND NOT sp2_is_crgn) AND (prgn1.centre.real_part =
prgn2.centre.real_part)) AND (prgn1.centre.imag_part = prgn2.centre.
imag_part) THEN
IF NOT compatible_intervals(prgn1.distance_constraint, prgn2.
distance_constraint) THEN
RETURN (FALSE);
END_IF;
IF compatible_intervals(prgn1.direction_constraint, prgn2.
direction_constraint) THEN
RETURN (TRUE);
END_IF;
IF (prgn1.direction_constraint.max > PI) AND (prgn2.
direction_constraint.max < PI) THEN
RETURN (compatible_intervals(prgn2.direction_constraint,
make_finite_real_interval(-PI, open, prgn1.direction_constraint.
max - 2.0 * PI, prgn1.direction_constraint.max_closure)));
END_IF;
IF (prgn2.direction_constraint.max > PI) AND (prgn1.
direction_constraint.max < PI) THEN
RETURN (compatible_intervals(prgn1.direction_constraint,
make_finite_real_interval(-PI, open, prgn2.direction_constraint.
max - 2.0 * PI, prgn2.direction_constraint.max_closure)));
END_IF;
RETURN (FALSE);
END_IF;
IF sp1_is_crgn AND NOT sp2_is_crgn THEN
crgn2 := enclose_pregion_in_cregion(prgn2);
prgn1 := enclose_cregion_in_pregion(crgn1, prgn2.centre);
RETURN (compatible_complex_number_regions(crgn1, crgn2) AND
compatible_complex_number_regions(prgn1, prgn2));
END_IF;
IF NOT sp1_is_crgn AND sp2_is_crgn THEN
crgn1 := enclose_pregion_in_cregion(prgn1);
prgn2 := enclose_cregion_in_pregion(crgn2, prgn1.centre);
RETURN (compatible_complex_number_regions(crgn1, crgn2) AND
compatible_complex_number_regions(prgn1, prgn2));
END_IF;
prgn1c2 := enclose_pregion_in_pregion(prgn1, prgn2.centre);
prgn2c1 := enclose_pregion_in_pregion(prgn2, prgn1.centre);
RETURN (compatible_complex_number_regions(prgn1, prgn2c1) AND
compatible_complex_number_regions(prgn1c2, prgn2));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION compatible_es_values (
esval1 : elementary_space_enumerators;
esval2 : elementary_space_enumerators
) : BOOLEAN;
LOCAL
esval1_is_numeric : LOGICAL;
esval2_is_numeric : LOGICAL;
END_LOCAL;
IF ((esval1 = esval2) OR (esval1 = es_generics)) OR (esval2 =
es_generics) THEN
RETURN (TRUE);
END_IF;
esval1_is_numeric := (esval1 >= es_numbers) AND (esval1 <= es_integers)
;
esval2_is_numeric := (esval2 >= es_numbers) AND (esval2 <= es_integers)
;
IF esval1_is_numeric AND (esval2 = es_numbers) OR esval2_is_numeric AND
(esval1 = es_numbers) THEN
RETURN (TRUE);
END_IF;
IF esval1_is_numeric XOR esval2_is_numeric THEN
RETURN (FALSE);
END_IF;
IF (esval1 = es_logicals) AND (esval2 = es_booleans) OR (esval1 =
es_booleans) AND (esval2 = es_logicals) THEN
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION compatible_intervals (
sp1 : maths_space;
sp2 : maths_space
) : BOOLEAN;
LOCAL
amin : REAL;
amax : REAL;
END_LOCAL;
IF min_exists(sp1) AND max_exists(sp2) THEN
amin := real_min(sp1);
amax := real_max(sp2);
IF amin > amax THEN
RETURN (FALSE);
END_IF;
IF amin = amax THEN
RETURN (min_included(sp1) AND max_included(sp2));
END_IF;
END_IF;
IF min_exists(sp2) AND max_exists(sp1) THEN
amin := real_min(sp2);
amax := real_max(sp1);
IF amin > amax THEN
RETURN (FALSE);
END_IF;
IF amin = amax THEN
RETURN (min_included(sp2) AND max_included(sp1));
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION compatible_spaces (
sp1 : maths_space;
sp2 : maths_space
) : BOOLEAN;
LOCAL
types1 : SET OF STRING := stripped_typeof(sp1);
types2 : SET OF STRING := stripped_typeof(sp2);
lgcl : LOGICAL := UNKNOWN;
m : INTEGER;
n : INTEGER;
s1 : maths_space;
s2 : maths_space;
END_LOCAL;
IF 'FINITE_SPACE' IN types1 THEN
REPEAT i := 1 TO SIZEOF(sp1\finite_space.members);
lgcl := member_of(sp1\finite_space.members[i], sp2);
IF lgcl <> FALSE THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
RETURN (FALSE);
END_IF;
IF 'FINITE_SPACE' IN types2 THEN
REPEAT i := 1 TO SIZEOF(sp2\finite_space.members);
lgcl := member_of(sp2\finite_space.members[i], sp1);
IF lgcl <> FALSE THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
RETURN (FALSE);
END_IF;
IF 'ELEMENTARY_SPACE' IN types1 THEN
IF sp1\elementary_space.space_id = es_generics THEN
RETURN (TRUE);
END_IF;
IF 'ELEMENTARY_SPACE' IN types2 THEN
RETURN (compatible_es_values(sp1\elementary_space.space_id, sp2\
elementary_space.space_id));
END_IF;
IF (('FINITE_INTEGER_INTERVAL' IN types2) OR (
'INTEGER_INTERVAL_FROM_MIN' IN types2)) OR (
'INTEGER_INTERVAL_TO_MAX' IN types2) THEN
RETURN (compatible_es_values(sp1\elementary_space.space_id,
es_integers));
END_IF;
IF (('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN'
IN types2)) OR ('REAL_INTERVAL_TO_MAX' IN types2) THEN
RETURN (compatible_es_values(sp1\elementary_space.space_id,
es_reals));
END_IF;
IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types2) OR (
'POLAR_COMPLEX_NUMBER_REGION' IN types2) THEN
RETURN (compatible_es_values(sp1\elementary_space.space_id,
es_complex_numbers));
END_IF;
IF 'TUPLE_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'FUNCTION_SPACE' IN types2 THEN
RETURN (bool(sp1\elementary_space.space_id = es_maths_functions));
END_IF;
RETURN (TRUE);
END_IF;
IF 'ELEMENTARY_SPACE' IN types2 THEN
IF sp2\elementary_space.space_id = es_generics THEN
RETURN (TRUE);
END_IF;
IF (('FINITE_INTEGER_INTERVAL' IN types1) OR (
'INTEGER_INTERVAL_FROM_MIN' IN types1)) OR (
'INTEGER_INTERVAL_TO_MAX' IN types1) THEN
RETURN (compatible_es_values(sp2\elementary_space.space_id,
es_integers));
END_IF;
IF (('FINITE_REAL_INTERVAL' IN types1) OR ('REAL_INTERVAL_FROM_MIN'
IN types1)) OR ('REAL_INTERVAL_TO_MAX' IN types1) THEN
RETURN (compatible_es_values(sp2\elementary_space.space_id,
es_reals));
END_IF;
IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types1) OR (
'POLAR_COMPLEX_NUMBER_REGION' IN types1) THEN
RETURN (compatible_es_values(sp2\elementary_space.space_id,
es_complex_numbers));
END_IF;
IF 'TUPLE_SPACE' IN types1 THEN
RETURN (FALSE);
END_IF;
IF 'FUNCTION_SPACE' IN types1 THEN
RETURN (bool(sp2\elementary_space.space_id = es_maths_functions));
END_IF;
RETURN (TRUE);
END_IF;
IF subspace_of_es(sp1, es_integers) THEN
IF subspace_of_es(sp2, es_integers) THEN
RETURN (compatible_intervals(sp1, sp2));
END_IF;
RETURN (FALSE);
END_IF;
IF subspace_of_es(sp2, es_integers) THEN
RETURN (FALSE);
END_IF;
IF subspace_of_es(sp1, es_reals) THEN
IF subspace_of_es(sp2, es_reals) THEN
RETURN (compatible_intervals(sp1, sp2));
END_IF;
RETURN (FALSE);
END_IF;
IF subspace_of_es(sp2, es_reals) THEN
RETURN (FALSE);
END_IF;
IF subspace_of_es(sp1, es_complex_numbers) THEN
IF subspace_of_es(sp2, es_complex_numbers) THEN
RETURN (compatible_complex_number_regions(sp1, sp2));
END_IF;
RETURN (FALSE);
END_IF;
IF subspace_of_es(sp2, es_complex_numbers) THEN
RETURN (FALSE);
END_IF;
IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
IF sp1\uniform_product_space.exponent <> sp2\uniform_product_space.
exponent THEN
RETURN (FALSE);
END_IF;
RETURN (compatible_spaces(sp1\uniform_product_space.base, sp2\
uniform_product_space.base));
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
n := SIZEOF(sp2\listed_product_space.factors);
IF sp1\uniform_product_space.exponent <> n THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO n;
IF NOT compatible_spaces(sp1\uniform_product_space.base, sp2\
listed_product_space.factors[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
m := sp1\uniform_product_space.exponent;
n := space_dimension(sp2\extended_tuple_space.base);
IF m < n THEN
RETURN (FALSE);
END_IF;
IF m = n THEN
RETURN (compatible_spaces(sp1, sp2\extended_tuple_space.base));
END_IF;
RETURN (compatible_spaces(sp1, assoc_product_space(sp2\
extended_tuple_space.base, make_uniform_product_space(sp2\
extended_tuple_space.extender, m - n))));
END_IF;
IF 'FUNCTION_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
n := SIZEOF(sp1\listed_product_space.factors);
IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
IF n <> sp2\uniform_product_space.exponent THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO n;
IF NOT compatible_spaces(sp2\uniform_product_space.base, sp1\
listed_product_space.factors[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
IF n <> SIZEOF(sp2\listed_product_space.factors) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO n;
IF NOT compatible_spaces(sp1\listed_product_space.factors[i], sp2
\listed_product_space.factors[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
m := space_dimension(sp2\extended_tuple_space.base);
IF n < m THEN
RETURN (FALSE);
END_IF;
IF n = m THEN
RETURN (compatible_spaces(sp1, sp2\extended_tuple_space.base));
END_IF;
RETURN (compatible_spaces(sp1, assoc_product_space(sp2\
extended_tuple_space.base, make_uniform_product_space(sp2\
extended_tuple_space.extender, n - m))));
END_IF;
IF schema_prefix + 'FUNCTION_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
IF ('UNIFORM_PRODUCT_SPACE' IN types2) OR ('LISTED_PRODUCT_SPACE' IN
types2) THEN
RETURN (compatible_spaces(sp2, sp1));
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
IF NOT compatible_spaces(sp1\extended_tuple_space.extender, sp2\
extended_tuple_space.extender) THEN
RETURN (FALSE);
END_IF;
n := space_dimension(sp1\extended_tuple_space.base);
m := space_dimension(sp2\extended_tuple_space.base);
IF n < m THEN
RETURN (compatible_spaces(assoc_product_space(sp1\
extended_tuple_space.base, make_uniform_product_space(sp1\
extended_tuple_space.extender, m - n)), sp2\
extended_tuple_space.base));
END_IF;
IF n = m THEN
RETURN (compatible_spaces(sp1\extended_tuple_space.base, sp2\
extended_tuple_space.base));
END_IF;
IF n > m THEN
RETURN (compatible_spaces(sp1\extended_tuple_space.base,
assoc_product_space(sp2\extended_tuple_space.base,
make_uniform_product_space(sp2\extended_tuple_space.extender, n
- m))));
END_IF;
END_IF;
IF 'FUNCTION_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
IF 'FUNCTION_SPACE' IN types1 THEN
IF 'FUNCTION_SPACE' IN types2 THEN
s1 := sp1\function_space.domain_argument;
s2 := sp2\function_space.domain_argument;
CASE sp1\function_space.domain_constraint OF
sc_equal :
BEGIN
CASE sp2\function_space.domain_constraint OF
sc_equal :
lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
sc_subspace :
lgcl := subspace_of(s1, s2);
sc_member :
lgcl := member_of(s1, s2);
END_CASE;
END;
sc_subspace :
BEGIN
CASE sp2\function_space.domain_constraint OF
sc_equal :
lgcl := subspace_of(s2, s1);
sc_subspace :
lgcl := compatible_spaces(s1, s2);
sc_member :
lgcl := UNKNOWN;
END_CASE;
END;
sc_member :
BEGIN
CASE sp2\function_space.domain_constraint OF
sc_equal :
lgcl := member_of(s2, s1);
sc_subspace :
lgcl := UNKNOWN;
sc_member :
lgcl := compatible_spaces(s1, s2);
END_CASE;
END;
END_CASE;
IF lgcl = FALSE THEN
RETURN (FALSE);
END_IF;
s1 := sp1\function_space.range_argument;
s2 := sp2\function_space.range_argument;
CASE sp1\function_space.range_constraint OF
sc_equal :
BEGIN
CASE sp2\function_space.range_constraint OF
sc_equal :
lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
sc_subspace :
lgcl := subspace_of(s1, s2);
sc_member :
lgcl := member_of(s1, s2);
END_CASE;
END;
sc_subspace :
BEGIN
CASE sp2\function_space.range_constraint OF
sc_equal :
lgcl := subspace_of(s2, s1);
sc_subspace :
lgcl := compatible_spaces(s1, s2);
sc_member :
lgcl := UNKNOWN;
END_CASE;
END;
sc_member :
BEGIN
CASE sp2\function_space.range_constraint OF
sc_equal :
lgcl := member_of(s2, s1);
sc_subspace :
lgcl := UNKNOWN;
sc_member :
lgcl := compatible_spaces(s1, s2);
END_CASE;
END;
END_CASE;
IF lgcl = FALSE THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
RETURN (TRUE);
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION composable_sequence (
operands : LIST [2:?] OF maths_function
) : BOOLEAN;
REPEAT i := 1 TO SIZEOF(operands) - 1;
IF NOT compatible_spaces(operands[i].range, operands[(i + 1)].domain)
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION conditional_reverse (
p : BOOLEAN;
an_item : reversible_topology
) : reversible_topology;
IF p THEN
RETURN (an_item);
ELSE
RETURN (topology_reversed(an_item));
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION consistent_sizes (
max : INTEGER;
point_lists : LIST OF point_cloud_dataset
) : BOOLEAN;
LOCAL
ndatasets : INTEGER := SIZEOF(point_lists);
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO ndatasets - 1;
IF SIZEOF(point_lists[i].point_coordinates) <> max THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
IF SIZEOF(point_lists[ndatasets].point_coordinates) > max THEN
result := FALSE;
RETURN (result);
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: scan_data_3d_shape_model_schema
FUNCTION constraints_composite_curve_on_surface (
c : composite_curve_on_surface
) : BOOLEAN;
LOCAL
n_segments : INTEGER := SIZEOF(c.segments);
END_LOCAL;
REPEAT k := 1 TO n_segments;
IF (NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(c\composite_curve.segments[k].parent_curve)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE' IN
TYPEOF(c\composite_curve.segments[k].parent_curve))) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE_ON_SURFACE'
IN TYPEOF(c\composite_curve.segments[k].parent_curve)) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_geometry_shell_based_surface_model (
m : shell_based_surface_model
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_SHELL' IN
TYPEOF(m.sbsm_boundary[j])) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_SHELL' IN
TYPEOF(m.sbsm_boundary[j])) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION constraints_geometry_shell_based_wireframe_model (
m : shell_based_wireframe_model
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT j := 1 TO SIZEOF(m.sbwm_boundary);
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.WIRE_SHELL' IN
TYPEOF(m.sbwm_boundary[j])) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VERTEX_SHELL' IN
TYPEOF(m.sbwm_boundary[j])) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION constraints_param_b_spline (
degree : INTEGER;
up_knots : INTEGER;
up_cp : INTEGER;
knot_mult : LIST [0:?] OF INTEGER;
knots : LIST [0:?] OF parameter_value
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
k : INTEGER;
sum : INTEGER;
END_LOCAL;
sum := knot_mult[1];
REPEAT i := 2 TO up_knots;
sum := sum + knot_mult[i];
END_REPEAT;
IF (((degree < 1) OR (up_knots < 2)) OR (up_cp < degree)) OR (sum <>
degree + up_cp + 2) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[1];
IF (k < 1) OR (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
REPEAT i := 2 TO up_knots;
IF (knot_mult[i] < 1) OR (knots[i] <= knots[(i - 1)]) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[i];
IF (i < up_knots) AND (k > degree) THEN
result := FALSE;
RETURN (result);
END_IF;
IF (i = up_knots) AND (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_param_local_b_spline (
degree : INTEGER;
knot_mult : LIST OF INTEGER;
knots : LIST OF INTEGER
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
k : INTEGER;
up_knots : INTEGER;
sum : INTEGER;
END_LOCAL;
up_knots := SIZEOF(knots);
sum := knot_mult[1];
REPEAT i := 2 TO up_knots;
sum := sum + knot_mult[i];
END_REPEAT;
IF ((degree < 1) OR (up_knots < 2)) OR (sum <> degree + 2) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[1];
IF (k < 1) OR (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
IF knots[1] < 1 THEN
result := FALSE;
END_IF;
REPEAT i := 2 TO up_knots;
IF (knot_mult[i] < 1) OR (knots[i] <= knots[(i - 1)]) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[i];
IF (i < up_knots) AND (k > degree) THEN
result := FALSE;
RETURN (result);
END_IF;
IF (i = up_knots) AND (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_rectangular_composite_surface (
s : rectangular_composite_surface
) : BOOLEAN;
REPEAT i := 1 TO s.n_u;
REPEAT j := 1 TO s.n_v;
IF NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE' IN
TYPEOF(s.segments[i][j].parent_surface)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_TRIMMED_SURFACE'
IN TYPEOF(s.segments[i][j].parent_surface))) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u - 1;
REPEAT j := 1 TO s.n_v;
IF s.segments[i][j].u_transition = discontinuous THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u;
REPEAT j := 1 TO s.n_v - 1;
IF s.segments[i][j].v_transition = discontinuous THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_scaling (
factors : LIST OF REAL
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(factors);
IF NOT ((0.0 < factors[i]) AND (factors[i] <= 1.0)) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION control_characters_free (
s : STRING
) : BOOLEAN;
LOCAL
ch : STRING;
END_LOCAL;
REPEAT i := 1 TO LENGTH(s);
ch := s[i];
IF ((ch = '\x9') OR (ch = '\xA')) OR (ch = '\xD') THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-46: presentation_definition_schema
FUNCTION convert_spatial_to_ypr_rotation (
pair : kinematic_pair;
rotation : spatial_rotation
) : ypr_rotation;
LOCAL
axis : direction;
angle : plane_angle_measure;
conv_angle : plane_angle_measure;
ya : plane_angle_measure;
pa : plane_angle_measure;
ra : plane_angle_measure;
ucf : REAL;
dx : REAL;
dy : REAL;
dz : REAL;
s_a : REAL;
c_a : REAL;
rotmat : ARRAY [1:3] OF ARRAY [1:3] OF REAL;
cm1 : REAL;
s_y : REAL;
c_y : REAL;
s_r : REAL;
c_r : REAL;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.YPR_ROTATION' IN TYPEOF
(rotation) THEN
RETURN (rotation);
END_IF;
axis := normalise(rotation\rotation_about_direction.direction_of_axis);
angle := rotation\rotation_about_direction.rotation_angle;
IF angle = 0.0 THEN
RETURN ([ 0.0, 0.0, 0.0 ]);
END_IF;
dx := axis.direction_ratios[1];
dy := axis.direction_ratios[2];
dz := axis.direction_ratios[3];
conv_angle := plane_angle_for_pair_in_radian(pair, angle);
IF NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE' IN
TYPEOF(conv_angle)) THEN
RETURN (?);
END_IF;
ucf := angle / conv_angle;
s_a := SIN(conv_angle);
c_a := COS(conv_angle);
IF (dy = 0.0) AND (dx * dz = 0.0) THEN
REPEAT WHILE conv_angle <= -PI;
conv_angle := conv_angle + 2.0 * PI;
END_REPEAT;
REPEAT WHILE conv_angle > PI;
conv_angle := conv_angle - 2.0 * PI;
END_REPEAT;
ya := ucf * conv_angle;
IF conv_angle <> PI THEN
ra := -ya;
ELSE
ra := ya;
END_IF;
IF dx <> 0.0 THEN
IF dx > 0.0 THEN
RETURN ([ 0.0, 0.0, ya ]);
ELSE
RETURN ([ 0.0, 0.0, ra ]);
END_IF;
ELSE
IF dz > 0.0 THEN
RETURN ([ ya, 0.0, 0.0 ]);
ELSE
RETURN ([ ra, 0.0, 0.0 ]);
END_IF;
END_IF;
END_IF;
IF ((dy <> 0.0) AND (dx = 0.0)) AND (dz = 0.0) THEN
IF c_a >= 0.0 THEN
ya := 0.0;
ra := 0.0;
ELSE
ya := ucf * PI;
ra := ya;
END_IF;
pa := ucf * ATAN(s_a, ABS(c_a));
IF dy < 0.0 THEN
pa := -pa;
END_IF;
RETURN ([ ya, pa, ra ]);
END_IF;
cm1 := 1.0 - c_a;
rotmat := [ [ dx * dx * cm1 + c_a, dx * dy * cm1 - dz * s_a, dx * dz *
cm1 + dy * s_a ], [ dx * dy * cm1 + dz * s_a, dy * dy * cm1 + c_a, dy
* dz * cm1 - dx * s_a ], [ dx * dz * cm1 - dy * s_a, dy * dz * cm1 +
dx * s_a, dz * dz * cm1 + c_a ] ];
IF ABS(rotmat[1][3]) = 1.0 THEN
BEGIN
IF rotmat[1][3] = 1.0 THEN
pa := 0.5 * PI;
ELSE
pa := -0.5 * PI;
END_IF;
ra := 0.0;
ya := ATAN(rotmat[2][1], rotmat[2][2]);
IF rotmat[2][2] < 0.0 THEN
IF ya <= 0.0 THEN
ya := ya + PI;
ELSE
ya := ya - PI;
END_IF;
END_IF;
END;
ELSE
BEGIN
ya := ATAN(-rotmat[1][2], rotmat[1][1]);
IF rotmat[1][1] < 0.0 THEN
IF ya <= 0.0 THEN
ya := ya + PI;
ELSE
ya := ya - PI;
END_IF;
END_IF;
ra := ATAN(-rotmat[2][3], rotmat[3][3]);
IF rotmat[3][3] < 0.0 THEN
IF ra <= 0.0 THEN
ra := ra + PI;
ELSE
ra := ra - PI;
END_IF;
END_IF;
s_y := SIN(ya);
c_y := COS(ya);
s_r := SIN(ra);
c_r := COS(ra);
IF ((ABS(s_y) > ABS(c_y)) AND (ABS(s_y) > ABS(s_r))) AND (ABS(s_y)
> ABS(c_r)) THEN
cm1 := -rotmat[1][2] / s_y;
ELSE
IF (ABS(c_y) > ABS(s_r)) AND (ABS(c_y) > ABS(c_r)) THEN
cm1 := rotmat[1][1] / c_y;
ELSE
IF ABS(s_r) > ABS(c_r) THEN
cm1 := -rotmat[2][3] / s_r;
ELSE
cm1 := rotmat[3][3] / c_r;
END_IF;
END_IF;
END_IF;
pa := ATAN(rotmat[1][3], cm1);
END;
END_IF;
ya := ya * ucf;
pa := pa * ucf;
ra := ra * ucf;
RETURN ([ ya, pa, ra ]);
END_FUNCTION; -- 10303-105: kinematic_state_schema
FUNCTION convert_to_literal (
val : maths_atom
) : generic_literal;
LOCAL
types : SET OF STRING := TYPEOF(val);
END_LOCAL;
IF 'INTEGER' IN types THEN
RETURN (make_int_literal(val));
END_IF;
IF 'REAL' IN types THEN
RETURN (make_real_literal(val));
END_IF;
IF 'BOOLEAN' IN types THEN
RETURN (make_boolean_literal(val));
END_IF;
IF 'STRING' IN types THEN
RETURN (make_string_literal(val));
END_IF;
IF 'LOGICAL' IN types THEN
RETURN (make_logical_literal(val));
END_IF;
IF 'BINARY' IN types THEN
RETURN (make_binary_literal(val));
END_IF;
IF schema_prefix + 'MATHS_ENUM_ATOM' IN types THEN
RETURN (make_maths_enum_literal(val));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION convert_to_maths_function (
func : maths_function_select
) : maths_function;
LOCAL
efenum : elementary_function_enumerators;
mthfun : maths_function;
END_LOCAL;
IF schema_prefix + 'MATHS_FUNCTION' IN TYPEOF(func) THEN
mthfun := func;
ELSE
efenum := func;
mthfun := make_elementary_function(efenum);
END_IF;
RETURN (mthfun);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION convert_to_maths_value (
val : GENERIC : G
) : maths_value;
LOCAL
types : SET OF STRING := TYPEOF(val);
ival : maths_integer;
rval : maths_real;
nval : maths_number;
tfval : maths_boolean;
lval : maths_logical;
sval : maths_string;
bval : maths_binary;
tval : maths_tuple := the_empty_maths_tuple;
mval : maths_value;
END_LOCAL;
IF schema_prefix + 'MATHS_VALUE' IN types THEN
RETURN (val);
END_IF;
IF 'INTEGER' IN types THEN
ival := val;
RETURN (ival);
END_IF;
IF 'REAL' IN types THEN
rval := val;
RETURN (rval);
END_IF;
IF 'NUMBER' IN types THEN
nval := val;
RETURN (nval);
END_IF;
IF 'BOOLEAN' IN types THEN
tfval := val;
RETURN (tfval);
END_IF;
IF 'LOGICAL' IN types THEN
lval := val;
RETURN (lval);
END_IF;
IF 'STRING' IN types THEN
sval := val;
RETURN (sval);
END_IF;
IF 'BINARY' IN types THEN
bval := val;
RETURN (bval);
END_IF;
IF 'LIST' IN types THEN
REPEAT i := 1 TO SIZEOF(val);
mval := convert_to_maths_value(val[i]);
IF NOT EXISTS(mval) THEN
RETURN (?);
END_IF;
INSERT( tval, mval, i - 1 );
END_REPEAT;
RETURN (tval);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION convert_to_operand (
val : maths_value
) : generic_expression;
LOCAL
types : SET OF STRING := stripped_typeof(val);
END_LOCAL;
IF 'GENERIC_EXPRESSION' IN types THEN
RETURN (val);
END_IF;
IF 'MATHS_ATOM' IN types THEN
RETURN (convert_to_literal(val));
END_IF;
IF 'ATOM_BASED_VALUE' IN types THEN
RETURN (make_atom_based_literal(val));
END_IF;
IF 'MATHS_TUPLE' IN types THEN
RETURN (make_maths_tuple_literal(val));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION convert_to_operands (
values : AGGREGATE OF maths_value
) : LIST OF generic_expression;
LOCAL
operands : LIST OF generic_expression := [];
loc : INTEGER := 0;
END_LOCAL;
IF NOT EXISTS(values) THEN
RETURN (?);
END_IF;
REPEAT i := LOINDEX(values) TO HIINDEX(values);
INSERT( operands, convert_to_operand(values[i]), loc );
loc := loc + 1;
END_REPEAT;
RETURN (operands);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION convert_to_operands_prcmfn (
srcdom : maths_space_or_function;
prepfun : LIST OF maths_function;
finfun : maths_function_select
) : LIST [2:?] OF generic_expression;
LOCAL
operands : LIST OF generic_expression := [];
END_LOCAL;
INSERT( operands, srcdom, 0 );
REPEAT i := 1 TO SIZEOF(prepfun);
INSERT( operands, prepfun[i], i );
END_REPEAT;
INSERT( operands, convert_to_maths_function(finfun), SIZEOF(prepfun) +
1 );
RETURN (operands);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION cross_product (
arg1 : direction;
arg2 : direction
) : vector;
LOCAL
mag : REAL;
res : direction;
v1 : LIST [3:3] OF REAL;
v2 : LIST [3:3] OF REAL;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.
dim = 2)) THEN
RETURN (?);
ELSE
BEGIN
v1 := normalise(arg1).direction_ratios;
v2 := normalise(arg2).direction_ratios;
res := dummy_gri || direction([ (v1[2] * v2[3] - v1[3] * v2[2]), (
v1[3] * v2[1] - v1[1] * v2[3]), (v1[1] * v2[2] - v1[2] * v2[1]) ]
);
mag := 0.0;
REPEAT i := 1 TO 3;
mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
result := dummy_gri || vector(res, SQRT(mag));
ELSE
result := dummy_gri || vector(arg1, 0.0);
END_IF;
RETURN (result);
END;
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION curve_weights_positive (
b : rational_b_spline_curve
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.upper_index_on_control_points;
IF b.weights[i] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION default_tolerance_table_cell_wr2 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF SIZEOF(agg) <= 5 THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1052: default_tolerance_mim
FUNCTION default_tolerance_table_cell_wr3 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name =
'significant number of digits'))) = 1) OR (SIZEOF(QUERY (i <* agg|
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name = 'lower limit'))) =
1) AND (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name = 'upper limit'))) =
1) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1052: default_tolerance_mim
FUNCTION default_tolerance_table_cell_wr4 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name =
'plus minus tolerance value'))) = 1) OR (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name =
'lower tolerance value'))) = 1) AND (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name =
'upper tolerance value'))) = 1) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1052: default_tolerance_mim
FUNCTION default_tolerance_table_cell_wr5 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)))) <= 1) AND (SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)))) = SIZEOF(QUERY (i <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i\representation_item.name = 'cell description'
)))) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1052: default_tolerance_mim
FUNCTION definite_integral_check (
domain : tuple_space;
vrblint : input_selector;
lowerinf : BOOLEAN;
upperinf : BOOLEAN
) : BOOLEAN;
LOCAL
domn : tuple_space := domain;
fspc : maths_space;
dim : nonnegative_integer;
k : positive_integer;
END_LOCAL;
IF (space_dimension(domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN
TYPEOF(factor1(domain))) THEN
domn := factor1(domain);
END_IF;
dim := space_dimension(domn);
k := vrblint;
IF k > dim THEN
RETURN (FALSE);
END_IF;
fspc := factor_space(domn, k);
IF NOT (schema_prefix + 'REAL_INTERVAL' IN TYPEOF(fspc)) THEN
RETURN (FALSE);
END_IF;
IF lowerinf AND min_exists(fspc) THEN
RETURN (FALSE);
END_IF;
IF upperinf AND max_exists(fspc) THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION definite_integral_expr_check (
operands : LIST [2:?] OF generic_expression;
lowerinf : BOOLEAN;
upperinf : BOOLEAN
) : BOOLEAN;
LOCAL
nops : INTEGER := 2;
vspc : maths_space;
dim : nonnegative_integer;
k : positive_integer;
bspc : maths_space;
END_LOCAL;
IF NOT lowerinf THEN
nops := nops + 1;
END_IF;
IF NOT upperinf THEN
nops := nops + 1;
END_IF;
IF SIZEOF(operands) <> nops THEN
RETURN (FALSE);
END_IF;
IF NOT ('GENERIC_VARIABLE' IN stripped_typeof(operands[2])) THEN
RETURN (FALSE);
END_IF;
IF NOT has_values_space(operands[2]) THEN
RETURN (FALSE);
END_IF;
vspc := values_space_of(operands[2]);
IF NOT ('REAL_INTERVAL' IN stripped_typeof(vspc)) THEN
RETURN (FALSE);
END_IF;
IF lowerinf THEN
IF min_exists(vspc) THEN
RETURN (FALSE);
END_IF;
k := 3;
ELSE
IF NOT has_values_space(operands[3]) THEN
RETURN (FALSE);
END_IF;
bspc := values_space_of(operands[3]);
IF NOT compatible_spaces(bspc, vspc) THEN
RETURN (FALSE);
END_IF;
k := 4;
END_IF;
IF upperinf THEN
IF max_exists(vspc) THEN
RETURN (FALSE);
END_IF;
ELSE
IF NOT has_values_space(operands[k]) THEN
RETURN (FALSE);
END_IF;
bspc := values_space_of(operands[k]);
IF NOT compatible_spaces(bspc, vspc) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_definite_integral_domain (
igrl : definite_integral_function
) : tuple_space;
FUNCTION process_product_space
(spc : product_space;
idx : INTEGER;
prefix : INTEGER;
vdomn : maths_space ) : product_space;
LOCAL
uspc : uniform_product_space;
expnt : INTEGER;
factors : LIST OF maths_space;
END_LOCAL;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN TYPEOF(spc) THEN
uspc := spc;
expnt := uspc.exponent + prefix;
IF idx <= uspc.exponent THEN
expnt := expnt - 1;
END_IF;
IF expnt = 0 THEN
RETURN (make_listed_product_space([]));
ELSE
RETURN (make_uniform_product_space(uspc.base, expnt));
END_IF;
ELSE
factors := spc\listed_product_space.factors;
IF idx <= SIZEOF(factors) THEN
REMOVE( factors, idx );
END_IF;
IF prefix > 0 THEN
INSERT( factors, vdomn, 0 );
IF prefix > 1 THEN
INSERT( factors, vdomn, 0 );
END_IF;
END_IF;
RETURN (make_listed_product_space(factors));
END_IF;
END_FUNCTION;
LOCAL
idomn : tuple_space := igrl.integrand.domain;
types : SET OF STRING := TYPEOF(idomn);
idx : INTEGER := igrl.variable_of_integration;
tupled : BOOLEAN := bool((space_dimension(idomn) = 1) AND (
schema_prefix + 'TUPLE_SPACE' IN types));
prefix : INTEGER := 0;
espc : extended_tuple_space;
vdomn : maths_space;
END_LOCAL;
IF tupled THEN
idomn := factor1(idomn);
types := TYPEOF(idomn);
END_IF;
IF igrl.lower_limit_neg_infinity THEN
prefix := prefix + 1;
END_IF;
IF igrl.upper_limit_pos_infinity THEN
prefix := prefix + 1;
END_IF;
vdomn := factor_space(idomn, idx);
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
espc := idomn;
idomn := make_extended_tuple_space(process_product_space(espc.base,
idx, prefix, vdomn), espc.extender);
ELSE
idomn := process_product_space(idomn, idx, prefix, vdomn);
END_IF;
IF tupled THEN
RETURN (one_tuples_of(idomn));
ELSE
RETURN (idomn);
END_IF;
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_dimensional_exponents (
x : unit
) : dimensional_exponents;
LOCAL
result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0);
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DERIVED_UNIT' IN TYPEOF
(x) THEN
REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\
derived_unit.elements);
result.length_exponent := result.length_exponent + x\derived_unit.
elements[i]\derived_unit_element.exponent * x\derived_unit.
elements[i]\derived_unit_element.unit\named_unit.dimensions.
length_exponent;
result.mass_exponent := result.mass_exponent + x\derived_unit.
elements[i]\derived_unit_element.exponent * x\derived_unit.
elements[i]\derived_unit_element.unit\named_unit.dimensions.
mass_exponent;
result.time_exponent := result.time_exponent + x\derived_unit.
elements[i]\derived_unit_element.exponent * x\derived_unit.
elements[i]\derived_unit_element.unit\named_unit.dimensions.
time_exponent;
result.electric_current_exponent := result.
electric_current_exponent + x\derived_unit.elements[i]\
derived_unit_element.exponent * x\derived_unit.elements[i]\
derived_unit_element.unit\named_unit.dimensions.
electric_current_exponent;
result.thermodynamic_temperature_exponent := result.
thermodynamic_temperature_exponent + x\derived_unit.elements[i]\
derived_unit_element.exponent * x\derived_unit.elements[i]\
derived_unit_element.unit\named_unit.dimensions.
thermodynamic_temperature_exponent;
result.amount_of_substance_exponent := result.
amount_of_substance_exponent + x\derived_unit.elements[i]\
derived_unit_element.exponent * x\derived_unit.elements[i]\
derived_unit_element.unit\named_unit.dimensions.
amount_of_substance_exponent;
result.luminous_intensity_exponent := result.
luminous_intensity_exponent + x\derived_unit.elements[i]\
derived_unit_element.exponent * x\derived_unit.elements[i]\
derived_unit_element.unit\named_unit.dimensions.
luminous_intensity_exponent;
END_REPEAT;
ELSE
result := x\named_unit.dimensions;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION derive_elementary_function_domain (
ef_val : elementary_function_enumerators
) : tuple_space;
IF NOT EXISTS(ef_val) THEN
RETURN (?);
END_IF;
CASE ef_val OF
ef_and :
RETURN (make_extended_tuple_space(the_zero_tuple_space,
the_logicals));
ef_or :
RETURN (make_extended_tuple_space(the_zero_tuple_space,
the_logicals));
ef_not :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_xor :
RETURN (make_uniform_product_space(the_logicals, 2));
ef_negate_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_add_i :
RETURN (the_integer_tuples);
ef_subtract_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_multiply_i :
RETURN (the_integer_tuples);
ef_divide_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_mod_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_exponentiate_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_eq_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_ne_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_gt_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_lt_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_ge_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_le_i :
RETURN (make_uniform_product_space(the_integers, 2));
ef_abs_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_if_i :
RETURN (make_listed_product_space([ the_logicals, the_integers,
the_integers ]));
ef_negate_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_reciprocal_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_add_r :
RETURN (the_real_tuples);
ef_subtract_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_multiply_r :
RETURN (the_real_tuples);
ef_divide_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_mod_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_exponentiate_r :
RETURN (make_listed_product_space([ the_nonnegative_reals,
the_reals ]));
ef_exponentiate_ri :
RETURN (make_listed_product_space([ the_reals, the_integers ]));
ef_eq_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_ne_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_gt_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_lt_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_ge_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_le_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_abs_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_acos_r :
RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
ef_asin_r :
RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
ef_atan2_r :
RETURN (make_uniform_product_space(the_reals, 2));
ef_cos_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_exp_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_ln_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_log2_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_log10_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_sin_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_sqrt_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_tan_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_if_r :
RETURN (make_listed_product_space([ the_logicals, the_reals,
the_reals ]));
ef_negate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_reciprocal_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_add_c :
RETURN (the_complex_tuples);
ef_subtract_c :
RETURN (make_uniform_product_space(the_complex_numbers, 2));
ef_multiply_c :
RETURN (the_complex_tuples);
ef_divide_c :
RETURN (make_uniform_product_space(the_complex_numbers, 2));
ef_exponentiate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 2));
ef_exponentiate_ci :
RETURN (make_listed_product_space([ the_complex_numbers,
the_integers ]));
ef_eq_c :
RETURN (make_uniform_product_space(the_complex_numbers, 2));
ef_ne_c :
RETURN (make_uniform_product_space(the_complex_numbers, 2));
ef_conjugate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_abs_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_arg_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_cos_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_exp_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_ln_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_sin_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_sqrt_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_tan_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_if_c :
RETURN (make_listed_product_space([ the_logicals,
the_complex_numbers, the_complex_numbers ]));
ef_subscript_s :
RETURN (make_listed_product_space([ the_strings, the_integers ]))
;
ef_eq_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_ne_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_gt_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_lt_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_ge_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_le_s :
RETURN (make_uniform_product_space(the_strings, 2));
ef_subsequence_s :
RETURN (make_listed_product_space([ the_strings, the_integers,
the_integers ]));
ef_concat_s :
RETURN (make_extended_tuple_space(the_zero_tuple_space,
the_strings));
ef_size_s :
RETURN (make_uniform_product_space(the_strings, 1));
ef_format :
RETURN (make_listed_product_space([ the_numbers, the_strings ]));
ef_value :
RETURN (make_uniform_product_space(the_strings, 1));
ef_like :
RETURN (make_uniform_product_space(the_strings, 2));
ef_if_s :
RETURN (make_listed_product_space([ the_logicals, the_strings,
the_strings ]));
ef_subscript_b :
RETURN (make_listed_product_space([ the_binarys, the_integers ]))
;
ef_eq_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_ne_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_gt_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_lt_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_ge_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_le_b :
RETURN (make_uniform_product_space(the_binarys, 2));
ef_subsequence_b :
RETURN (make_listed_product_space([ the_binarys, the_integers,
the_integers ]));
ef_concat_b :
RETURN (make_extended_tuple_space(the_zero_tuple_space,
the_binarys));
ef_size_b :
RETURN (make_uniform_product_space(the_binarys, 1));
ef_if_b :
RETURN (make_listed_product_space([ the_logicals, the_binarys,
the_binarys ]));
ef_subscript_t :
RETURN (make_listed_product_space([ the_tuples, the_integers ]));
ef_eq_t :
RETURN (make_uniform_product_space(the_tuples, 2));
ef_ne_t :
RETURN (make_uniform_product_space(the_tuples, 2));
ef_concat_t :
RETURN (make_extended_tuple_space(the_zero_tuple_space,
the_tuples));
ef_size_t :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_entuple :
RETURN (the_tuples);
ef_detuple :
RETURN (make_uniform_product_space(the_generics, 1));
ef_insert :
RETURN (make_listed_product_space([ the_tuples, the_generics,
the_integers ]));
ef_remove :
RETURN (make_listed_product_space([ the_tuples, the_integers ]));
ef_if_t :
RETURN (make_listed_product_space([ the_logicals, the_tuples,
the_tuples ]));
ef_sum_it :
RETURN (make_uniform_product_space(the_integer_tuples, 1));
ef_product_it :
RETURN (make_uniform_product_space(the_integer_tuples, 1));
ef_add_it :
RETURN (make_extended_tuple_space(the_integer_tuples,
the_integer_tuples));
ef_subtract_it :
RETURN (make_uniform_product_space(the_integer_tuples, 2));
ef_scalar_mult_it :
RETURN (make_listed_product_space([ the_integers,
the_integer_tuples ]));
ef_dot_prod_it :
RETURN (make_uniform_product_space(the_integer_tuples, 2));
ef_sum_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_product_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_add_rt :
RETURN (make_extended_tuple_space(the_real_tuples,
the_real_tuples));
ef_subtract_rt :
RETURN (make_uniform_product_space(the_real_tuples, 2));
ef_scalar_mult_rt :
RETURN (make_listed_product_space([ the_reals, the_real_tuples ])
);
ef_dot_prod_rt :
RETURN (make_uniform_product_space(the_real_tuples, 2));
ef_norm_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_sum_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_product_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_add_ct :
RETURN (make_extended_tuple_space(the_complex_tuples,
the_complex_tuples));
ef_subtract_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 2));
ef_scalar_mult_ct :
RETURN (make_listed_product_space([ the_complex_numbers,
the_complex_tuples ]));
ef_dot_prod_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 2));
ef_norm_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_if :
RETURN (make_listed_product_space([ the_logicals, the_generics,
the_generics ]));
ef_ensemble :
RETURN (the_tuples);
ef_member_of :
RETURN (make_listed_product_space([ the_generics,
the_maths_spaces ]));
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_elementary_function_range (
ef_val : elementary_function_enumerators
) : tuple_space;
IF NOT EXISTS(ef_val) THEN
RETURN (?);
END_IF;
CASE ef_val OF
ef_and :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_or :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_not :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_xor :
RETURN (make_uniform_product_space(the_logicals, 2));
ef_negate_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_add_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_subtract_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_multiply_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_divide_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_mod_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_exponentiate_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_eq_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_gt_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_lt_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ge_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_le_i :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_abs_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_if_i :
RETURN (make_uniform_product_space(the_integers, 1));
ef_negate_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_reciprocal_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_add_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_subtract_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_multiply_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_divide_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_mod_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_exponentiate_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_exponentiate_ri :
RETURN (make_uniform_product_space(the_reals, 1));
ef_eq_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_gt_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_lt_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ge_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_le_r :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_abs_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_acos_r :
RETURN (make_uniform_product_space(the_zero_pi_interval, 1));
ef_asin_r :
RETURN (make_uniform_product_space(the_neghalfpi_halfpi_interval,
1));
ef_atan2_r :
RETURN (make_uniform_product_space(the_negpi_pi_interval, 1));
ef_cos_r :
RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
ef_exp_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_ln_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_log2_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_log10_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_sin_r :
RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
ef_sqrt_r :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_tan_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_if_r :
RETURN (make_uniform_product_space(the_reals, 1));
ef_negate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_reciprocal_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_add_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_subtract_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_multiply_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_divide_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_exponentiate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_exponentiate_ci :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_eq_c :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_c :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_conjugate_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_abs_c :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_arg_c :
RETURN (make_uniform_product_space(the_negpi_pi_interval, 1));
ef_cos_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_exp_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_ln_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_sin_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_sqrt_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_tan_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_if_c :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_subscript_s :
RETURN (make_uniform_product_space(the_strings, 1));
ef_eq_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_gt_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_lt_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ge_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_le_s :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_subsequence_s :
RETURN (make_uniform_product_space(the_strings, 1));
ef_concat_s :
RETURN (make_uniform_product_space(the_strings, 1));
ef_size_s :
RETURN (make_uniform_product_space(the_integers, 1));
ef_format :
RETURN (make_uniform_product_space(the_strings, 1));
ef_value :
RETURN (make_uniform_product_space(the_reals, 1));
ef_like :
RETURN (make_uniform_product_space(the_booleans, 1));
ef_if_s :
RETURN (make_uniform_product_space(the_strings, 1));
ef_subscript_b :
RETURN (make_uniform_product_space(the_binarys, 1));
ef_eq_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_gt_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_lt_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ge_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_le_b :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_subsequence_b :
RETURN (make_uniform_product_space(the_binarys, 1));
ef_concat_b :
RETURN (make_uniform_product_space(the_binarys, 1));
ef_size_b :
RETURN (make_uniform_product_space(the_integers, 1));
ef_if_b :
RETURN (make_uniform_product_space(the_binarys, 1));
ef_subscript_t :
RETURN (make_uniform_product_space(the_generics, 1));
ef_eq_t :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_ne_t :
RETURN (make_uniform_product_space(the_logicals, 1));
ef_concat_t :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_size_t :
RETURN (make_uniform_product_space(the_integers, 1));
ef_entuple :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_detuple :
RETURN (the_tuples);
ef_insert :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_remove :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_if_t :
RETURN (make_uniform_product_space(the_tuples, 1));
ef_sum_it :
RETURN (make_uniform_product_space(the_integers, 1));
ef_product_it :
RETURN (make_uniform_product_space(the_integers, 1));
ef_add_it :
RETURN (make_uniform_product_space(the_integer_tuples, 1));
ef_subtract_it :
RETURN (make_uniform_product_space(the_integer_tuples, 1));
ef_scalar_mult_it :
RETURN (make_uniform_product_space(the_integer_tuples, 1));
ef_dot_prod_it :
RETURN (make_uniform_product_space(the_integers, 1));
ef_sum_rt :
RETURN (make_uniform_product_space(the_reals, 1));
ef_product_rt :
RETURN (make_uniform_product_space(the_reals, 1));
ef_add_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_subtract_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_scalar_mult_rt :
RETURN (make_uniform_product_space(the_real_tuples, 1));
ef_dot_prod_rt :
RETURN (make_uniform_product_space(the_reals, 1));
ef_norm_rt :
RETURN (make_uniform_product_space(the_reals, 1));
ef_sum_ct :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_product_ct :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_add_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_subtract_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_scalar_mult_ct :
RETURN (make_uniform_product_space(the_complex_tuples, 1));
ef_dot_prod_ct :
RETURN (make_uniform_product_space(the_complex_numbers, 1));
ef_norm_ct :
RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
ef_if :
RETURN (make_uniform_product_space(the_generics, 1));
ef_ensemble :
RETURN (make_uniform_product_space(the_maths_spaces, 1));
ef_member_of :
RETURN (make_uniform_product_space(the_logicals, 1));
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_finite_function_domain (
pairs : SET [1:?] OF LIST [2:2] OF maths_value
) : tuple_space;
LOCAL
result : SET OF maths_value := [];
END_LOCAL;
result := result + list_selected_components(pairs, 1);
RETURN (one_tuples_of(make_finite_space(result)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_finite_function_range (
pairs : SET [1:?] OF LIST [2:2] OF maths_value
) : tuple_space;
LOCAL
result : SET OF maths_value := [];
END_LOCAL;
result := result + list_selected_components(pairs, 2);
RETURN (one_tuples_of(make_finite_space(result)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_function_domain (
func : maths_function
) : tuple_space;
LOCAL
typenames : SET OF STRING := stripped_typeof(func);
tspace : tuple_space := make_listed_product_space([]);
shape : LIST OF positive_integer;
sidxs : LIST OF INTEGER := [ 0 ];
itvl : finite_integer_interval;
factors : LIST OF finite_integer_interval := [];
is_uniform : BOOLEAN := TRUE;
END_LOCAL;
IF 'FINITE_FUNCTION' IN typenames THEN
RETURN (derive_finite_function_domain(func\finite_function.pairs));
END_IF;
IF 'CONSTANT_FUNCTION' IN typenames THEN
RETURN (domain_from(func\constant_function.source_of_domain));
END_IF;
IF 'SELECTOR_FUNCTION' IN typenames THEN
RETURN (domain_from(func\selector_function.source_of_domain));
END_IF;
IF 'ELEMENTARY_FUNCTION' IN typenames THEN
RETURN (derive_elementary_function_domain(func\elementary_function.
func_id));
END_IF;
IF 'RESTRICTION_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(func\restriction_function.operand));
END_IF;
IF 'REPACKAGING_FUNCTION' IN typenames THEN
IF func\repackaging_function.input_repack = ro_nochange THEN
RETURN (func\repackaging_function.operand.domain);
END_IF;
IF func\repackaging_function.input_repack = ro_wrap_as_tuple THEN
RETURN (factor1(func\repackaging_function.operand.domain));
END_IF;
IF func\repackaging_function.input_repack = ro_unwrap_tuple THEN
RETURN (one_tuples_of(func\repackaging_function.operand.domain));
END_IF;
RETURN (?);
END_IF;
IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
shape := shape_of_array(func\unary_generic_expression.operand);
sidxs := func\reindexed_array_function.starting_indices;
REPEAT i := 1 TO SIZEOF(shape);
itvl := make_finite_integer_interval(sidxs[i], sidxs[i] + shape[i]
- 1);
INSERT( factors, itvl, i - 1 );
IF shape[i] <> shape[1] THEN
is_uniform := FALSE;
END_IF;
END_REPEAT;
IF is_uniform THEN
RETURN (make_uniform_product_space(factors[1], SIZEOF(shape)));
END_IF;
RETURN (make_listed_product_space(factors));
END_IF;
IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
RETURN (func\series_composed_function.operands[1].domain);
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
RETURN (domain_from(func\parallel_composed_function.source_of_domain)
);
END_IF;
IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
shape := func\explicit_table_function.shape;
sidxs[1] := func\explicit_table_function.index_base;
REPEAT i := 1 TO SIZEOF(shape);
itvl := make_finite_integer_interval(sidxs[1], sidxs[1] + shape[i]
- 1);
INSERT( factors, itvl, i - 1 );
IF shape[i] <> shape[1] THEN
is_uniform := FALSE;
END_IF;
END_REPEAT;
IF is_uniform THEN
RETURN (make_uniform_product_space(factors[1], SIZEOF(shape)));
END_IF;
RETURN (make_listed_product_space(factors));
END_IF;
IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_uniform_product_space(factor1(func\
homogeneous_linear_function.mat.range), func\
homogeneous_linear_function.mat\explicit_table_function.shape[func\
homogeneous_linear_function.sum_index])));
END_IF;
IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_uniform_product_space(factor1(func\
general_linear_function.mat.range), func\general_linear_function.
mat\explicit_table_function.shape[func\general_linear_function.
sum_index] - 1)));
END_IF;
IF 'B_SPLINE_BASIS' IN typenames THEN
RETURN (one_tuples_of(make_finite_real_interval(func\b_spline_basis.
repeated_knots[func\b_spline_basis.order], closed, func\
b_spline_basis.repeated_knots[(func\b_spline_basis.num_basis + 1)],
closed)));
END_IF;
IF 'B_SPLINE_FUNCTION' IN typenames THEN
REPEAT i := 1 TO SIZEOF(func\b_spline_function.basis);
tspace := assoc_product_space(tspace, func\b_spline_function.basis[
i].domain);
END_REPEAT;
RETURN (one_tuples_of(tspace));
END_IF;
IF 'RATIONALIZE_FUNCTION' IN typenames THEN
RETURN (func\rationalize_function.fun.domain);
END_IF;
IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
RETURN (func\partial_derivative_function.derivand.domain);
END_IF;
IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
RETURN (derive_definite_integral_domain(func));
END_IF;
IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
REPEAT i := 1 TO SIZEOF(func\abstracted_expression_function.variables
);
tspace := assoc_product_space(tspace, one_tuples_of(values_space_of
(func\abstracted_expression_function.variables[i])));
END_REPEAT;
RETURN (tspace);
END_IF;
IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
RETURN (values_space_of(func\expression_denoted_function.expr)\
function_space.domain_argument);
END_IF;
IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_listed_product_space([])));
END_IF;
IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
RETURN (func\imported_curve_function.parametric_domain);
END_IF;
IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
RETURN (func\imported_surface_function.parametric_domain);
END_IF;
IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
RETURN (func\imported_volume_function.parametric_domain);
END_IF;
IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
RETURN (func\application_defined_function.explicit_domain);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION derive_function_range (
func : maths_function
) : tuple_space;
LOCAL
typenames : SET OF STRING := stripped_typeof(func);
tspace : tuple_space := make_listed_product_space([]);
m : nonnegative_integer := 0;
n : nonnegative_integer := 0;
temp : INTEGER := 0;
END_LOCAL;
IF 'FINITE_FUNCTION' IN typenames THEN
RETURN (derive_finite_function_range(func\finite_function.pairs));
END_IF;
IF 'CONSTANT_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_finite_space([ func\constant_function.
sole_output ])));
END_IF;
IF 'SELECTOR_FUNCTION' IN typenames THEN
tspace := func.domain;
IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE'
IN TYPEOF(tspace)) THEN
tspace := factor1(tspace);
END_IF;
RETURN (one_tuples_of(factor_space(tspace, func\selector_function.
selector)));
END_IF;
IF 'ELEMENTARY_FUNCTION' IN typenames THEN
RETURN (derive_elementary_function_range(func\elementary_function.
func_id));
END_IF;
IF 'RESTRICTION_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(func\restriction_function.operand));
END_IF;
IF 'REPACKAGING_FUNCTION' IN typenames THEN
tspace := func\repackaging_function.operand.range;
IF func\repackaging_function.output_repack = ro_wrap_as_tuple THEN
tspace := one_tuples_of(tspace);
END_IF;
IF func\repackaging_function.output_repack = ro_unwrap_tuple THEN
tspace := factor1(tspace);
END_IF;
IF func\repackaging_function.selected_output > 0 THEN
tspace := one_tuples_of(factor_space(tspace, func\
repackaging_function.selected_output));
END_IF;
RETURN (tspace);
END_IF;
IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
RETURN (func\unary_generic_expression.operand\maths_function.range);
END_IF;
IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
RETURN (func\series_composed_function.operands[SIZEOF(func\
series_composed_function.operands)].range);
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
RETURN (func\parallel_composed_function.final_function.range);
END_IF;
IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
IF 'LISTED_REAL_DATA' IN typenames THEN
RETURN (one_tuples_of(the_reals));
END_IF;
IF 'LISTED_INTEGER_DATA' IN typenames THEN
RETURN (one_tuples_of(the_integers));
END_IF;
IF 'LISTED_LOGICAL_DATA' IN typenames THEN
RETURN (one_tuples_of(the_logicals));
END_IF;
IF 'LISTED_STRING_DATA' IN typenames THEN
RETURN (one_tuples_of(the_strings));
END_IF;
IF 'LISTED_COMPLEX_NUMBER_DATA' IN typenames THEN
RETURN (one_tuples_of(the_complex_numbers));
END_IF;
IF 'LISTED_DATA' IN typenames THEN
RETURN (one_tuples_of(func\listed_data.value_range));
END_IF;
IF 'EXTERNALLY_LISTED_DATA' IN typenames THEN
RETURN (one_tuples_of(func\externally_listed_data.value_range));
END_IF;
IF 'LINEARIZED_TABLE_FUNCTION' IN typenames THEN
RETURN (func\linearized_table_function.source.range);
END_IF;
IF 'BASIC_SPARSE_MATRIX' IN typenames THEN
RETURN (func\basic_sparse_matrix.val.range);
END_IF;
RETURN (?);
END_IF;
IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_uniform_product_space(factor1(func\
homogeneous_linear_function.mat.range), func\
homogeneous_linear_function.mat\explicit_table_function.shape[(3 -
func\homogeneous_linear_function.sum_index)])));
END_IF;
IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(make_uniform_product_space(factor1(func\
general_linear_function.mat.range), func\general_linear_function.
mat\explicit_table_function.shape[(3 - func\general_linear_function
.sum_index)])));
END_IF;
IF 'B_SPLINE_BASIS' IN typenames THEN
RETURN (one_tuples_of(make_uniform_product_space(the_reals, func\
b_spline_basis.num_basis)));
END_IF;
IF 'B_SPLINE_FUNCTION' IN typenames THEN
tspace := factor1(func\b_spline_function.coef.domain);
m := SIZEOF(func\b_spline_function.basis);
n := space_dimension(tspace);
IF m = n THEN
RETURN (one_tuples_of(the_reals));
END_IF;
IF m = n - 1 THEN
RETURN (one_tuples_of(make_uniform_product_space(the_reals,
factor_space(tspace, n)\finite_integer_interval.size)));
END_IF;
tspace := extract_factors(tspace, m + 1, n);
RETURN (one_tuples_of(make_function_space(sc_equal, tspace,
sc_subspace, number_superspace_of(func\b_spline_function.coef.range
))));
END_IF;
IF 'RATIONALIZE_FUNCTION' IN typenames THEN
tspace := factor1(func\rationalize_function.fun.range);
n := space_dimension(tspace);
RETURN (one_tuples_of(make_uniform_product_space(number_superspace_of
(factor1(tspace)), n - 1)));
END_IF;
IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
RETURN (drop_numeric_constraints(func\partial_derivative_function.
derivand.range));
END_IF;
IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
RETURN (drop_numeric_constraints(func\definite_integral_function.
integrand.range));
END_IF;
IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
RETURN (one_tuples_of(values_space_of(func\
abstracted_expression_function.expr)));
END_IF;
IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
RETURN (values_space_of(func\expression_denoted_function.expr)\
function_space.range_argument);
END_IF;
IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
temp := dimension_of(func\imported_point_function.geometry);
RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
END_IF;
IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
temp := dimension_of(func\imported_curve_function.geometry);
RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
END_IF;
IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
temp := dimension_of(func\imported_surface_function.geometry);
RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
END_IF;
IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
temp := dimension_of(func\imported_volume_function.geometry);
RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
END_IF;
IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
RETURN (func\application_defined_function.explicit_range);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION dimension_of (
item : geometric_representation_item
) : dimension_count;
LOCAL
x : SET OF representation;
y : representation_context;
dim : dimension_count;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(item) THEN
dim := SIZEOF(item\cartesian_point.coordinates);
RETURN (dim);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' IN TYPEOF(
item) THEN
dim := SIZEOF(item\direction.direction_ratios);
RETURN (dim);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(item)
THEN
dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
RETURN (dim);
END_IF;
x := using_representations(item);
IF SIZEOF(x) > 0 THEN
y := x[1].context_of_items;
dim := y\geometric_representation_context.coordinate_space_dimension;
RETURN (dim);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION dimensions_for_si_unit (
n : si_unit_name
) : dimensional_exponents;
CASE n OF
metre :
RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
gram :
RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
second :
RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0))
;
ampere :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0))
;
kelvin :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0))
;
mole :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0))
;
candela :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0))
;
radian :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
steradian :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
hertz :
RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
);
newton :
RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
pascal :
RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0
));
joule :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
watt :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)
);
coulomb :
RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0))
;
volt :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0
));
farad :
RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0
));
ohm :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0
));
siemens :
RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0
));
weber :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0
));
tesla :
RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0
));
henry :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0
));
degree_celsius :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0))
;
lumen :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0))
;
lux :
RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
);
becquerel :
RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
);
gray :
RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
sievert :
RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION domain_from (
ref : maths_space_or_function
) : tuple_space;
LOCAL
typenames : SET OF STRING := stripped_typeof(ref);
func : maths_function;
END_LOCAL;
IF NOT EXISTS(ref) THEN
RETURN (?);
END_IF;
IF 'TUPLE_SPACE' IN typenames THEN
RETURN (ref);
END_IF;
IF 'MATHS_SPACE' IN typenames THEN
RETURN (one_tuples_of(ref));
END_IF;
func := ref;
IF 'CONSTANT_FUNCTION' IN typenames THEN
RETURN (domain_from(func\constant_function.source_of_domain));
END_IF;
IF 'SELECTOR_FUNCTION' IN typenames THEN
RETURN (domain_from(func\selector_function.source_of_domain));
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
RETURN (domain_from(func\parallel_composed_function.source_of_domain)
);
END_IF;
RETURN (func.domain);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION dot_count (
str : STRING
) : INTEGER;
LOCAL
n : INTEGER := 0;
END_LOCAL;
REPEAT i := 1 TO LENGTH(str);
IF str[i] = '.' THEN
n := n + 1;
END_IF;
END_REPEAT;
RETURN (n);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION dot_product (
arg1 : direction;
arg2 : direction
) : REAL;
LOCAL
scalar : REAL;
vec1 : direction;
vec2 : direction;
ndim : INTEGER;
END_LOCAL;
IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) THEN
scalar := ?;
ELSE
IF arg1.dim <> arg2.dim THEN
scalar := ?;
ELSE
BEGIN
vec1 := normalise(arg1);
vec2 := normalise(arg2);
ndim := arg1.dim;
scalar := 0.0;
REPEAT i := 1 TO ndim;
scalar := scalar + vec1.direction_ratios[i] * vec2.
direction_ratios[i];
END_REPEAT;
END;
END_IF;
END_IF;
RETURN (scalar);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION dotted_identifiers_syntax (
str : STRING
) : BOOLEAN;
LOCAL
k : positive_integer;
m : positive_integer;
END_LOCAL;
IF NOT EXISTS(str) THEN
RETURN (FALSE);
END_IF;
k := parse_express_identifier(str, 1);
IF k = 1 THEN
RETURN (FALSE);
END_IF;
REPEAT WHILE k <= LENGTH(str);
IF (str[k] <> '.') OR (k = LENGTH(str)) THEN
RETURN (FALSE);
END_IF;
m := parse_express_identifier(str, k + 1);
IF m = k + 1 THEN
RETURN (FALSE);
END_IF;
k := m;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION drop_numeric_constraints (
spc : maths_space
) : maths_space;
LOCAL
typenames : SET OF STRING := stripped_typeof(spc);
tspc : listed_product_space;
factors : LIST OF maths_space := [];
xspc : extended_tuple_space;
END_LOCAL;
IF 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
RETURN (make_uniform_product_space(drop_numeric_constraints(spc\
uniform_product_space.base), spc\uniform_product_space.exponent));
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN typenames THEN
tspc := spc;
REPEAT i := 1 TO SIZEOF(tspc.factors);
INSERT( factors, drop_numeric_constraints(tspc.factors[i]), i - 1 )
;
END_REPEAT;
RETURN (make_listed_product_space(factors));
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN typenames THEN
xspc := spc;
RETURN (make_extended_tuple_space(drop_numeric_constraints(xspc.base)
, drop_numeric_constraints(xspc.extender)));
END_IF;
IF subspace_of_es(spc, es_numbers) THEN
RETURN (number_superspace_of(spc));
END_IF;
RETURN (spc);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION duration_is_negative (
duration : time_measure_with_unit
) : BOOLEAN;
IF duration\measure_with_unit.value_component < 0.0 THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION duration_is_positive (
duration : time_measure_with_unit
) : BOOLEAN;
IF duration\measure_with_unit.value_component > 0.0 THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION edge_reversed (
an_edge : edge
) : oriented_edge;
LOCAL
the_reverse : oriented_edge;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_EDGE' IN
TYPEOF(an_edge) THEN
the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start
) || oriented_edge(an_edge\oriented_edge.edge_element, NOT an_edge\
oriented_edge.orientation);
ELSE
the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start
) || oriented_edge(an_edge, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION enclose_cregion_in_pregion (
crgn : cartesian_complex_number_region;
centre : complex_number_literal
) : polar_complex_number_region;
FUNCTION angle
(a : REAL ) : REAL;
REPEAT WHILE a > PI;
a := a - 2.0 * PI;
END_REPEAT;
REPEAT WHILE a <= -PI;
a := a + 2.0 * PI;
END_REPEAT;
RETURN (a);
END_FUNCTION;
FUNCTION strictly_in
(z : REAL;
zitv : real_interval ) : LOGICAL;
RETURN ((NOT min_exists(zitv) OR (z > real_min(zitv))) AND (NOT
max_exists(zitv) OR (z < real_max(zitv))));
END_FUNCTION;
PROCEDURE angle_minmax
(ab : REAL;
a : REAL;
a_in : BOOLEAN;
VAR amin : REAL;
VAR amax : REAL;
VAR amin_in : BOOLEAN;
VAR amax_in : BOOLEAN );
a := angle(a - ab);
IF amin = a THEN
amin_in := amin_in OR a_in;
END_IF;
IF amin > a THEN
amin := a;
amin_in := a_in;
END_IF;
IF amax = a THEN
amax_in := amax_in OR a_in;
END_IF;
IF amax < a THEN
amax := a;
amax_in := a_in;
END_IF;
END_PROCEDURE;
PROCEDURE range_max
(r : REAL;
incl : BOOLEAN;
VAR rmax : REAL;
VAR rmax_in : BOOLEAN );
IF rmax = r THEN
rmax_in := rmax_in OR incl;
END_IF;
IF rmax < r THEN
rmax := r;
rmax_in := incl;
END_IF;
END_PROCEDURE;
PROCEDURE range_min
(r : REAL;
incl : BOOLEAN;
VAR rmin : REAL;
VAR rmin_in : BOOLEAN );
IF rmin = r THEN
rmin_in := rmin_in OR incl;
END_IF;
IF (rmin < 0.0) OR (rmin > r) THEN
rmin := r;
rmin_in := incl;
END_IF;
END_PROCEDURE;
LOCAL
xitv : real_interval;
yitv : real_interval;
is_xmin : BOOLEAN;
is_xmax : BOOLEAN;
is_ymin : BOOLEAN;
is_ymax : BOOLEAN;
xmin : REAL := 0.0;
xmax : REAL := 0.0;
ymin : REAL := 0.0;
ymax : REAL := 0.0;
xc : REAL := 0.0;
yc : REAL := 0.0;
xmin_in : BOOLEAN := FALSE;
xmax_in : BOOLEAN := FALSE;
ymin_in : BOOLEAN := FALSE;
ymax_in : BOOLEAN := FALSE;
rmin : REAL := -1.0;
rmax : REAL := -1.0;
amin : REAL := 4.0;
amax : REAL := -4.0;
rmax_exists : BOOLEAN := TRUE;
outside : BOOLEAN := TRUE;
rmin_in : BOOLEAN := FALSE;
rmax_in : BOOLEAN := FALSE;
amin_in : BOOLEAN := FALSE;
amax_in : BOOLEAN := FALSE;
ab : REAL := 0.0;
a : REAL := 0.0;
r : REAL := 0.0;
incl : BOOLEAN;
ritv : real_interval;
aitv : finite_real_interval;
minclo : open_closed := open;
maxclo : open_closed := open;
END_LOCAL;
IF NOT EXISTS(crgn) OR NOT EXISTS(centre) THEN
RETURN (?);
END_IF;
xitv := crgn.real_constraint;
yitv := crgn.imag_constraint;
xc := centre.real_part;
yc := centre.imag_part;
is_xmin := min_exists(xitv);
is_xmax := max_exists(xitv);
is_ymin := min_exists(yitv);
is_ymax := max_exists(yitv);
IF is_xmin THEN
xmin := real_min(xitv);
xmin_in := min_included(xitv);
END_IF;
IF is_xmax THEN
xmax := real_max(xitv);
xmax_in := max_included(xitv);
END_IF;
IF is_ymin THEN
ymin := real_min(yitv);
ymin_in := min_included(yitv);
END_IF;
IF is_ymax THEN
ymax := real_max(yitv);
ymax_in := max_included(yitv);
END_IF;
rmax_exists := ((is_xmin AND is_xmax) AND is_ymin) AND is_ymax;
IF is_xmin AND (xc <= xmin) THEN
ab := 0.0;
ELSE
IF is_ymin AND (yc <= ymin) THEN
ab := 0.5 * PI;
ELSE
IF is_ymax AND (yc >= ymax) THEN
ab := -0.5 * PI;
ELSE
IF is_xmax AND (xc >= xmax) THEN
ab := PI;
ELSE
outside := FALSE;
END_IF;
END_IF;
END_IF;
END_IF;
IF NOT outside AND NOT rmax_exists THEN
RETURN (?);
END_IF;
IF (is_xmin AND (xc <= xmin)) AND strictly_in(yc, yitv) THEN
rmin := xmin - xc;
rmin_in := xmin_in;
ELSE
IF (is_ymin AND (yc <= ymin)) AND strictly_in(xc, xitv) THEN
rmin := ymin - yc;
rmin_in := ymin_in;
ELSE
IF (is_ymax AND (yc >= ymax)) AND strictly_in(xc, xitv) THEN
rmin := yc - ymax;
rmin_in := ymax_in;
ELSE
IF (is_xmax AND (xc >= xmax)) AND strictly_in(yc, yitv) THEN
rmin := xc - xmax;
rmin_in := xmax_in;
END_IF;
END_IF;
END_IF;
END_IF;
IF is_xmin THEN
IF is_ymin THEN
r := SQRT((xmin - xc) ** 2 + (ymin - yc) ** 2);
incl := xmin_in AND ymin_in;
IF rmax_exists THEN
range_max( r, incl, rmax, rmax_in );
END_IF;
IF outside THEN
IF r > 0.0 THEN
range_min( r, incl, rmin, rmin_in );
a := angle(atan2(ymin - yc, xmin - xc) - ab);
IF xc = xmin THEN
incl := xmin_in;
END_IF;
IF yc = ymin THEN
incl := ymin_in;
END_IF;
angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
ELSE
rmin := 0.0;
rmin_in := xmin_in AND ymin_in;
amin := angle(0.0 - ab);
amin_in := ymin_in;
amax := angle(0.5 * PI - ab);
amax_in := xmin_in;
END_IF;
END_IF;
ELSE
IF xc <= xmin THEN
angle_minmax( ab, -0.5 * PI, (xc = xmin) AND xmin_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF NOT is_ymax AND (xc <= xmin) THEN
angle_minmax( ab, 0.5 * PI, (xc = xmin) AND xmin_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF is_ymin THEN
IF is_xmax THEN
r := SQRT((xmax - xc) ** 2 + (ymin - yc) ** 2);
incl := xmax_in AND ymin_in;
IF rmax_exists THEN
range_max( r, incl, rmax, rmax_in );
END_IF;
IF outside THEN
IF r > 0.0 THEN
range_min( r, incl, rmin, rmin_in );
a := angle(atan2(ymin - yc, xmax - xc) - ab);
IF xc = xmax THEN
incl := xmax_in;
END_IF;
IF yc = ymin THEN
incl := ymin_in;
END_IF;
angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
ELSE
rmin := 0.0;
rmin_in := xmax_in AND ymin_in;
amin := angle(0.5 * PI - ab);
amin_in := ymin_in;
amax := angle(PI - ab);
amax_in := xmax_in;
END_IF;
END_IF;
ELSE
IF yc <= ymin THEN
angle_minmax( ab, 0.0, (yc = ymin) AND ymin_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF NOT is_xmin AND (yc <= ymin) THEN
angle_minmax( ab, PI, (yc = ymin) AND ymin_in, amin, amax, amin_in,
amax_in );
END_IF;
END_IF;
IF is_xmax THEN
IF is_ymax THEN
r := SQRT((xmax - xc) ** 2 + (ymax - yc) ** 2);
incl := xmax_in AND ymax_in;
IF rmax_exists THEN
range_max( r, incl, rmax, rmax_in );
END_IF;
IF outside THEN
IF r > 0.0 THEN
range_min( r, incl, rmin, rmin_in );
a := angle(atan2(ymax - yc, xmax - xc) - ab);
IF xc = xmax THEN
incl := xmax_in;
END_IF;
IF yc = ymax THEN
incl := ymax_in;
END_IF;
angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
ELSE
rmin := 0.0;
rmin_in := xmax_in AND ymax_in;
amin := angle(-PI - ab);
amin_in := ymax_in;
amax := angle(-0.5 * PI - ab);
amax_in := xmax_in;
END_IF;
END_IF;
ELSE
IF xc >= xmax THEN
angle_minmax( ab, 0.5 * PI, (xc = xmax) AND xmax_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF NOT is_ymin AND (xc >= xmax) THEN
angle_minmax( ab, -0.5 * PI, (xc = xmax) AND xmax_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF is_ymax THEN
IF is_xmin THEN
r := SQRT((xmin - xc) ** 2 + (ymax - yc) ** 2);
incl := xmin_in AND ymax_in;
IF rmax_exists THEN
range_max( r, incl, rmax, rmax_in );
END_IF;
IF outside THEN
IF r > 0.0 THEN
range_min( r, incl, rmin, rmin_in );
a := angle(atan2(ymax - yc, xmin - xc) - ab);
IF xc = xmin THEN
incl := xmin_in;
END_IF;
IF yc = ymax THEN
incl := ymax_in;
END_IF;
angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
ELSE
rmin := 0.0;
rmin_in := xmin_in AND ymax_in;
amin := angle(0.5 * PI - ab);
amin_in := ymax_in;
amax := angle(PI - ab);
amax_in := xmin_in;
END_IF;
END_IF;
ELSE
IF yc >= ymax THEN
angle_minmax( ab, PI, (yc = ymax) AND ymax_in, amin, amax,
amin_in, amax_in );
END_IF;
END_IF;
IF NOT is_xmax AND (yc >= ymax) THEN
angle_minmax( ab, 0.0, (yc = ymax) AND ymax_in, amin, amax, amin_in
, amax_in );
END_IF;
END_IF;
IF outside THEN
amin := angle(amin + ab);
IF amin = PI THEN
amin := -PI;
END_IF;
amax := angle(amax + ab);
IF amax <= amin THEN
amax := amax + 2.0 * PI;
END_IF;
ELSE
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := FALSE;
END_IF;
IF amin_in THEN
minclo := closed;
END_IF;
IF amax_in THEN
maxclo := closed;
END_IF;
aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
minclo := open;
IF rmin_in THEN
minclo := closed;
END_IF;
IF rmax_exists THEN
maxclo := open;
IF rmax_in THEN
maxclo := closed;
END_IF;
ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
ELSE
ritv := make_real_interval_from_min(rmin, minclo);
END_IF;
RETURN (make_polar_complex_number_region(centre, ritv, aitv));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION enclose_pregion_in_cregion (
prgn : polar_complex_number_region
) : cartesian_complex_number_region;
PROCEDURE nearest_good_direction
(acart : REAL;
aitv : finite_real_interval;
VAR a : REAL;
VAR a_in : BOOLEAN );
a := acart;
a_in := TRUE;
IF a < aitv.min THEN
IF a + 2.0 * PI < aitv.max THEN
RETURN;
END_IF;
IF a + 2.0 * PI = aitv.max THEN
a_in := max_included(aitv);
RETURN;
END_IF;
ELSE
IF a = aitv.min THEN
a_in := min_included(aitv);
RETURN;
ELSE
IF a < aitv.max THEN
RETURN;
ELSE
IF a = aitv.max THEN
a_in := max_included(aitv);
RETURN;
END_IF;
END_IF;
END_IF;
END_IF;
IF COS(acart - aitv.max) >= COS(acart - aitv.min) THEN
a := aitv.max;
a_in := max_included(aitv);
ELSE
a := aitv.min;
a_in := min_included(aitv);
END_IF;
END_PROCEDURE;
LOCAL
xc : REAL := 0.0;
yc : REAL := 0.0;
xmin : REAL := 0.0;
xmax : REAL := 0.0;
ymin : REAL := 0.0;
ymax : REAL := 0.0;
ritv : real_interval;
xitv : real_interval;
yitv : real_interval;
aitv : finite_real_interval;
xmin_exists : BOOLEAN;
xmax_exists : BOOLEAN;
ymin_exists : BOOLEAN;
ymax_exists : BOOLEAN;
xmin_in : BOOLEAN := FALSE;
xmax_in : BOOLEAN := FALSE;
ymin_in : BOOLEAN := FALSE;
ymax_in : BOOLEAN := FALSE;
a : REAL := 0.0;
r : REAL := 0.0;
a_in : BOOLEAN := FALSE;
min_clo : open_closed := open;
max_clo : open_closed := open;
END_LOCAL;
IF NOT EXISTS(prgn) THEN
RETURN (?);
END_IF;
xc := prgn.centre.real_part;
yc := prgn.centre.imag_part;
ritv := prgn.distance_constraint;
aitv := prgn.direction_constraint;
nearest_good_direction( PI, aitv, a, a_in );
IF COS(a) >= 0.0 THEN
xmin_exists := TRUE;
xmin := xc + real_min(ritv) * COS(a);
xmin_in := a_in AND (min_included(ritv) OR (COS(a) = 0.0));
ELSE
IF max_exists(ritv) THEN
xmin_exists := TRUE;
xmin := xc + real_max(ritv) * COS(a);
xmin_in := a_in AND max_included(ritv);
ELSE
xmin_exists := FALSE;
END_IF;
END_IF;
nearest_good_direction( 0.0, aitv, a, a_in );
IF COS(a) <= 0.0 THEN
xmax_exists := TRUE;
xmax := xc + real_min(ritv) * COS(a);
xmax_in := a_in AND (min_included(ritv) OR (COS(a) = 0.0));
ELSE
IF max_exists(ritv) THEN
xmax_exists := TRUE;
xmax := xc + real_max(ritv) * COS(a);
xmax_in := a_in AND max_included(ritv);
ELSE
xmax_exists := FALSE;
END_IF;
END_IF;
nearest_good_direction( -0.5 * PI, aitv, a, a_in );
IF SIN(a) >= 0.0 THEN
ymin_exists := TRUE;
ymin := yc + real_min(ritv) * SIN(a);
ymin_in := a_in AND (min_included(ritv) OR (SIN(a) = 0.0));
ELSE
IF max_exists(ritv) THEN
ymin_exists := TRUE;
ymin := yc + real_max(ritv) * SIN(a);
ymin_in := a_in AND max_included(ritv);
ELSE
ymin_exists := FALSE;
END_IF;
END_IF;
nearest_good_direction( 0.5 * PI, aitv, a, a_in );
IF SIN(a) <= 0.0 THEN
ymax_exists := TRUE;
ymax := yc + real_min(ritv) * SIN(a);
ymax_in := a_in AND (min_included(ritv) OR (SIN(a) = 0.0));
ELSE
IF max_exists(ritv) THEN
ymax_exists := TRUE;
ymax := yc + real_max(ritv) * SIN(a);
ymax_in := a_in AND max_included(ritv);
ELSE
ymax_exists := FALSE;
END_IF;
END_IF;
IF NOT (((xmin_exists OR xmax_exists) OR ymin_exists) OR ymax_exists)
THEN
RETURN (?);
END_IF;
IF xmin_exists THEN
IF xmin_in THEN
min_clo := closed;
ELSE
min_clo := open;
END_IF;
IF xmax_exists THEN
IF xmax_in THEN
max_clo := closed;
ELSE
max_clo := open;
END_IF;
xitv := make_finite_real_interval(xmin, min_clo, xmax, max_clo);
ELSE
xitv := make_real_interval_from_min(xmin, min_clo);
END_IF;
ELSE
IF xmax_exists THEN
IF xmax_in THEN
max_clo := closed;
ELSE
max_clo := open;
END_IF;
xitv := make_real_interval_to_max(xmax, max_clo);
ELSE
xitv := the_reals;
END_IF;
END_IF;
IF ymin_exists THEN
IF ymin_in THEN
min_clo := closed;
ELSE
min_clo := open;
END_IF;
IF ymax_exists THEN
IF ymax_in THEN
max_clo := closed;
ELSE
max_clo := open;
END_IF;
yitv := make_finite_real_interval(ymin, min_clo, ymax, max_clo);
ELSE
yitv := make_real_interval_from_min(ymin, min_clo);
END_IF;
ELSE
IF ymax_exists THEN
IF ymax_in THEN
max_clo := closed;
ELSE
max_clo := open;
END_IF;
yitv := make_real_interval_to_max(ymax, max_clo);
ELSE
yitv := the_reals;
END_IF;
END_IF;
RETURN (make_cartesian_complex_number_region(xitv, yitv));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION enclose_pregion_in_pregion (
prgn : polar_complex_number_region;
centre : complex_number_literal
) : polar_complex_number_region;
FUNCTION angle
(a : REAL ) : REAL;
REPEAT WHILE a > PI;
a := a - 2.0 * PI;
END_REPEAT;
REPEAT WHILE a <= -PI;
a := a + 2.0 * PI;
END_REPEAT;
RETURN (a);
END_FUNCTION;
PROCEDURE angle_range
(VAR amin : REAL;
VAR amax : REAL );
amin := angle(amin);
IF amin = PI THEN
amin := -PI;
END_IF;
amax := angle(amax);
IF amax <= amin THEN
amax := amax + 2.0 * PI;
END_IF;
END_PROCEDURE;
FUNCTION strictly_in
(a : REAL;
aitv : finite_real_interval ) : LOGICAL;
a := angle(a);
RETURN ((aitv.min < a) AND (a < aitv.max) OR (aitv.min < a + 2.0 * PI
) AND (a + 2.0 * PI < aitv.max));
END_FUNCTION;
PROCEDURE find_aminmax
(ab : REAL;
a0 : REAL;
a1 : REAL;
a2 : REAL;
a3 : REAL;
in0 : BOOLEAN;
in1 : BOOLEAN;
in2 : BOOLEAN;
in3 : BOOLEAN;
VAR amin : REAL;
VAR amax : REAL;
VAR amin_in : BOOLEAN;
VAR amax_in : BOOLEAN );
LOCAL
a : REAL;
END_LOCAL;
amin := angle(a0 - ab);
amin_in := in0;
amax := amin;
amax_in := in0;
a := angle(a1 - ab);
IF a = amin THEN
amin_in := amin_in OR in1;
END_IF;
IF a < amin THEN
amin := a;
amin_in := in1;
END_IF;
IF a = amax THEN
amax_in := amax_in OR in1;
END_IF;
IF a > amax THEN
amax := a;
amax_in := in1;
END_IF;
a := angle(a2 - ab);
IF a = amin THEN
amin_in := amin_in OR in2;
END_IF;
IF a < amin THEN
amin := a;
amin_in := in2;
END_IF;
IF a = amax THEN
amax_in := amax_in OR in2;
END_IF;
IF a > amax THEN
amax := a;
amax_in := in2;
END_IF;
a := angle(a3 - ab);
IF a = amin THEN
amin_in := amin_in OR in3;
END_IF;
IF a < amin THEN
amin := a;
amin_in := in3;
END_IF;
IF a = amax THEN
amax_in := amax_in OR in3;
END_IF;
IF a > amax THEN
amax := a;
amax_in := in3;
END_IF;
amin := amin + ab;
amax := amax + ab;
angle_range( amin, amax );
END_PROCEDURE;
LOCAL
ritp : real_interval;
ritv : real_interval;
aitp : finite_real_interval;
aitv : finite_real_interval;
xp : REAL := 0.0;
yp : REAL := 0.0;
xc : REAL := 0.0;
yc : REAL := 0.0;
rmax : REAL := 0.0;
rmin : REAL := 0.0;
amin : REAL := 0.0;
amax : REAL := 0.0;
rc : REAL := 0.0;
acp : REAL := 0.0;
apc : REAL := 0.0;
rmax_in : BOOLEAN := FALSE;
rmin_in : BOOLEAN := FALSE;
amin_in : BOOLEAN := FALSE;
amax_in : BOOLEAN := FALSE;
rmxp : REAL := 0.0;
rmnp : REAL := 0.0;
x : REAL := 0.0;
y : REAL := 0.0;
r : REAL := 0.0;
a : REAL := 0.0;
ab : REAL := 0.0;
r0 : REAL := 0.0;
a0 : REAL := 0.0;
r1 : REAL := 0.0;
a1 : REAL := 0.0;
r2 : REAL := 0.0;
a2 : REAL := 0.0;
r3 : REAL := 0.0;
a3 : REAL := 0.0;
in0 : BOOLEAN := FALSE;
in1 : BOOLEAN := FALSE;
in2 : BOOLEAN := FALSE;
in3 : BOOLEAN := FALSE;
inn : BOOLEAN := FALSE;
minclo : open_closed := open;
maxclo : open_closed := open;
END_LOCAL;
IF NOT EXISTS(prgn) OR NOT EXISTS(centre) THEN
RETURN (?);
END_IF;
xp := prgn.centre.real_part;
yp := prgn.centre.imag_part;
ritp := prgn.distance_constraint;
aitp := prgn.direction_constraint;
xc := centre.real_part;
yc := centre.imag_part;
IF (xc = xp) AND (yc = yp) THEN
RETURN (prgn);
END_IF;
rc := SQRT((xp - xc) ** 2 + (yp - yc) ** 2);
acp := atan2(yp - yc, xp - xc);
apc := atan2(yc - yp, xc - xp);
rmnp := real_min(ritp);
IF max_exists(ritp) THEN
rmxp := real_max(ritp);
IF aitp.max - aitp.min = 2.0 * PI THEN
inn := NOT max_included(aitp);
a := angle(aitp.min);
rmax := rc + rmxp;
rmax_in := max_included(ritp);
IF inn AND (acp = a) THEN
rmax_in := FALSE;
END_IF;
IF rc > rmxp THEN
a0 := ASIN(rmxp / rc);
amin := angle(acp - a0);
amin_in := max_included(ritp);
IF amin = PI THEN
amin := -PI;
END_IF;
amax := angle(acp + a0);
amax_in := amin_in;
IF amax < amin THEN
amax := amax + 2.0 * PI;
END_IF;
rmin := rc - rmxp;
rmin_in := amin_in;
IF inn THEN
IF apc = a THEN
rmin_in := FALSE;
END_IF;
IF angle(amin + 0.5 * PI) = a THEN
amin_in := FALSE;
END_IF;
IF angle(amax - 0.5 * PI) = a THEN
amax_in := FALSE;
END_IF;
END_IF;
ELSE
IF rc = rmxp THEN
amin := angle(acp - 0.5 * PI);
amin_in := FALSE;
IF amin = PI THEN
amin := -PI;
END_IF;
amax := angle(acp + 0.5 * PI);
amax_in := FALSE;
IF amax < amin THEN
amax := amax + 2.0 * PI;
END_IF;
rmin := 0.0;
rmin_in := max_included(ritp);
IF inn AND (apc = a) THEN
rmin_in := FALSE;
END_IF;
ELSE
IF rc > rmnp THEN
IF inn AND (apc = a) THEN
rmin := 0.0;
rmin_in := FALSE;
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
ELSE
rmin := 0.0;
rmin_in := TRUE;
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := TRUE;
END_IF;
ELSE
rmin := rmnp - rc;
rmin_in := min_included(ritp);
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := TRUE;
IF inn THEN
IF apc = a THEN
rmin_in := FALSE;
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
ELSE
IF acp = a THEN
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
ELSE
x := xp + rmxp * COS(aitp.min) - xc;
y := yp + rmxp * SIN(aitp.min) - yc;
r0 := SQRT(x ** 2 + y ** 2);
in0 := max_included(ritp) AND min_included(aitp);
IF r0 <> 0.0 THEN
a0 := atan2(y, x);
END_IF;
x := xp + rmxp * COS(aitp.max) - xc;
y := yp + rmxp * SIN(aitp.max) - yc;
r1 := SQRT(x ** 2 + y ** 2);
in1 := max_included(ritp) AND max_included(aitp);
IF r1 <> 0.0 THEN
a1 := atan2(y, x);
END_IF;
x := xp + rmnp * COS(aitp.max) - xc;
y := yp + rmnp * SIN(aitp.max) - yc;
r2 := SQRT(x ** 2 + y ** 2);
in2 := min_included(ritp) AND max_included(aitp);
IF r2 <> 0.0 THEN
a2 := atan2(y, x);
ELSE
a2 := a1;
in2 := in1;
END_IF;
IF r1 = 0.0 THEN
a1 := a2;
in1 := in2;
END_IF;
x := xp + rmnp * COS(aitp.min) - xc;
y := yp + rmnp * SIN(aitp.min) - yc;
r3 := SQRT(x ** 2 + y ** 2);
in3 := min_included(ritp) AND min_included(aitp);
IF r3 <> 0.0 THEN
a3 := atan2(y, x);
ELSE
a3 := a0;
in3 := in0;
END_IF;
IF r0 = 0.0 THEN
a0 := a3;
in0 := in3;
END_IF;
IF rmnp = 0.0 THEN
in2 := min_included(ritp);
in3 := in2;
END_IF;
IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min)) THEN
in0 := min_included(aitp);
in3 := in0;
ELSE
IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max)) THEN
in1 := max_included(aitp);
in2 := in1;
END_IF;
END_IF;
IF strictly_in(acp, aitp) THEN
rmax := rc + rmxp;
rmax_in := max_included(ritp);
ELSE
rmax := r0;
rmax_in := in0;
IF rmax = r1 THEN
rmax_in := rmax_in OR in1;
END_IF;
IF rmax < r1 THEN
rmax := r1;
rmax_in := in1;
END_IF;
IF rmax = r2 THEN
rmax_in := rmax_in OR in2;
END_IF;
IF rmax < r2 THEN
rmax := r2;
rmax_in := in2;
END_IF;
IF rmax = r3 THEN
rmax_in := rmax_in OR in3;
END_IF;
IF rmax < r3 THEN
rmax := r3;
rmax_in := in3;
END_IF;
END_IF;
IF strictly_in(apc, aitp) THEN
IF rc >= rmxp THEN
rmin := rc - rmxp;
rmin_in := max_included(ritp);
ELSE
IF rc <= rmnp THEN
rmin := rmnp - rc;
rmin_in := min_included(ritp);
ELSE
rmin := 0.0;
rmin_in := TRUE;
END_IF;
END_IF;
ELSE
rmin := r0;
rmin_in := in0;
a := apc - aitp.min;
r := rc * COS(a);
IF (rmnp < r) AND (r < rmxp) THEN
rmin := rc * SIN(ABS(a));
rmin_in := min_included(aitp);
END_IF;
a := apc - aitp.max;
r := rc * COS(a);
IF (rmnp < r) AND (r < rmxp) THEN
r := rc * SIN(ABS(a));
inn := max_included(aitp);
IF r = rmin THEN
rmin_in := rmin_in OR inn;
END_IF;
IF r < rmin THEN
rmin := r;
rmin_in := inn;
END_IF;
END_IF;
IF r1 = rmin THEN
rmin_in := rmin_in OR in1;
END_IF;
IF r1 < rmin THEN
rmin := r1;
rmin_in := in1;
END_IF;
IF r2 = rmin THEN
rmin_in := rmin_in OR in2;
END_IF;
IF r2 < rmin THEN
rmin := r2;
rmin_in := in2;
END_IF;
IF r3 = rmin THEN
rmin_in := rmin_in OR in3;
END_IF;
IF r3 < rmin THEN
rmin := r3;
rmin_in := in3;
END_IF;
END_IF;
IF rc >= rmxp THEN
ab := acp;
find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax,
amin_in, amax_in );
a := ACOS(rmxp / rc);
IF strictly_in(apc - a, aitp) THEN
amin := ab - ASIN(rmxp / rc);
amin_in := max_included(ritp);
END_IF;
IF strictly_in(apc + a, aitp) THEN
amax := ab + ASIN(rmxp / rc);
amax_in := max_included(ritp);
END_IF;
angle_range( amin, amax );
ELSE
IF rc > rmnp THEN
ab := angle(0.5 * (aitp.min + aitp.max));
find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin,
amax, amin_in, amax_in );
ELSE
ab := angle(0.5 * (aitp.min + aitp.max));
a0 := angle(a0 - ab);
a1 := angle(a1 - ab);
a2 := angle(a2 - ab);
a3 := angle(a3 - ab);
IF a3 > a2 THEN
a2 := a2 + 2.0 * PI;
END_IF;
IF a0 > a1 THEN
a0 := a0 + 2.0 * PI;
END_IF;
IF a3 < a0 THEN
amin := a3;
amin_in := in3;
ELSE
amin := a0;
amin_in := in0;
END_IF;
IF a2 > a1 THEN
amax := a2;
amax_in := in2;
ELSE
amax := a1;
amax_in := in1;
END_IF;
IF (amax - amin > 2.0 * PI) OR (amax - amin = 2.0 * PI) AND (
amin_in OR amax_in) THEN
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := TRUE;
ELSE
amin := amin + ab;
amax := amax + ab;
angle_range( amin, amax );
END_IF;
END_IF;
END_IF;
END_IF;
IF rmin_in THEN
minclo := closed;
END_IF;
IF rmax_in THEN
maxclo := closed;
END_IF;
ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
ELSE
IF (rc > rmnp) AND strictly_in(apc, aitp) THEN
RETURN (?);
END_IF;
IF aitp.max - aitp.min = 2.0 * PI THEN
a := angle(aitp.min);
IF rc > rmnp THEN
IF max_included(aitp) THEN
RETURN (?);
END_IF;
rmin := 0.0;
rmin_in := FALSE;
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
ELSE
rmin := rmnp - rc;
rmin_in := min_included(ritp);
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := TRUE;
IF NOT max_included(aitp) THEN
IF apc = a THEN
rmin_in := FALSE;
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
ELSE
IF acp = a THEN
amin := aitp.min;
amin_in := FALSE;
amax := aitp.max;
amax_in := FALSE;
END_IF;
END_IF;
END_IF;
END_IF;
ELSE
a0 := angle(aitp.min);
in0 := FALSE;
a1 := angle(aitp.max);
in1 := FALSE;
x := xp + rmnp * COS(aitp.max) - xc;
y := yp + rmnp * SIN(aitp.max) - yc;
r2 := SQRT(x ** 2 + y ** 2);
in2 := min_included(ritp) AND max_included(aitp);
IF r2 <> 0.0 THEN
a2 := atan2(y, x);
ELSE
a2 := a1;
in2 := in1;
END_IF;
x := xp + rmnp * COS(aitp.min) - xc;
y := yp + rmnp * SIN(aitp.min) - yc;
r3 := SQRT(x ** 2 + y ** 2);
in3 := min_included(ritp) AND min_included(aitp);
IF r3 <> 0.0 THEN
a3 := atan2(y, x);
ELSE
a3 := a0;
in3 := in0;
END_IF;
IF rmnp = 0.0 THEN
in2 := min_included(ritp);
in3 := in2;
END_IF;
IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min)) THEN
in0 := min_included(aitp);
in3 := in0;
ELSE
IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max)) THEN
in1 := max_included(aitp);
in2 := in1;
END_IF;
END_IF;
IF strictly_in(apc, aitp) THEN
rmin := rmnp - rc;
rmin_in := min_included(ritp);
ELSE
rmin := r2;
rmin_in := in2;
a := apc - aitp.min;
r := rc * COS(a);
IF rmnp < r THEN
rmin := rc * SIN(ABS(a));
rmin_in := min_included(aitp);
END_IF;
a := apc - aitp.max;
r := rc * COS(a);
IF rmnp < r THEN
r := rc * SIN(ABS(a));
inn := max_included(aitp);
IF r = rmin THEN
rmin_in := rmin_in OR inn;
END_IF;
IF r < rmin THEN
rmin := r;
rmin_in := inn;
END_IF;
END_IF;
IF r3 = rmin THEN
rmin_in := rmin_in OR in3;
END_IF;
IF r3 < rmin THEN
rmin := r3;
rmin_in := in3;
END_IF;
END_IF;
ab := angle(0.5 * (aitp.min + aitp.max));
IF rc > rmnp THEN
find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax,
amin_in, amax_in );
ELSE
a0 := angle(a0 - ab);
a1 := angle(a1 - ab);
a2 := angle(a2 - ab);
a3 := angle(a3 - ab);
IF a3 > a2 THEN
a2 := a2 + 2.0 * PI;
END_IF;
IF a0 > a1 THEN
a0 := a0 + 2.0 * PI;
END_IF;
IF a3 < a0 THEN
amin := a3;
amin_in := in3;
ELSE
amin := a0;
amin_in := in0;
END_IF;
IF a2 > a1 THEN
amax := a2;
amax_in := in2;
ELSE
amax := a1;
amax_in := in1;
END_IF;
IF (amax - amin > 2.0 * PI) OR (amax - amin = 2.0 * PI) AND (
amin_in OR amax_in) THEN
amin := -PI;
amin_in := FALSE;
amax := PI;
amax_in := TRUE;
IF (rmin = 0.0) AND rmin_in THEN
RETURN (?);
END_IF;
ELSE
amin := amin + ab;
amax := amax + ab;
angle_range( amin, amax );
END_IF;
END_IF;
END_IF;
IF rmin_in THEN
minclo := closed;
END_IF;
ritv := make_real_interval_from_min(rmin, minclo);
END_IF;
minclo := open;
maxclo := open;
IF amin_in THEN
minclo := closed;
END_IF;
IF amax_in THEN
maxclo := closed;
END_IF;
aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
RETURN (make_polar_complex_number_region(centre, ritv, aitv));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION equal_cregion_pregion (
crgn : cartesian_complex_number_region;
prgn : polar_complex_number_region
) : LOGICAL;
LOCAL
arng : REAL;
amin : REAL;
xc : REAL;
yc : REAL;
aitv : real_interval;
xitv : real_interval;
yitv : real_interval;
c_in : BOOLEAN;
END_LOCAL;
IF NOT EXISTS(crgn) OR NOT EXISTS(prgn) THEN
RETURN (FALSE);
END_IF;
IF max_exists(prgn.distance_constraint) THEN
RETURN (FALSE);
END_IF;
IF real_min(prgn.distance_constraint) <> 0.0 THEN
RETURN (FALSE);
END_IF;
c_in := min_included(prgn.distance_constraint);
aitv := prgn.direction_constraint;
amin := aitv.min;
arng := aitv.max - amin;
xc := prgn.centre.real_part;
yc := prgn.centre.imag_part;
xitv := crgn.real_constraint;
yitv := crgn.imag_constraint;
IF arng = 0.5 * PI THEN
IF amin = 0.0 THEN
RETURN ((((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND
min_exists(xitv)) AND min_exists(yitv)) AND (real_min(xitv) = xc)
) AND (real_min(yitv) = yc)) AND ((((((c_in AND min_included(aitv
)) AND max_included(aitv)) AND min_included(xitv)) AND
min_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND
max_included(aitv)) AND min_included(xitv)) AND NOT min_included
(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT
max_included(aitv)) AND NOT min_included(xitv)) AND min_included(
yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT
max_included(aitv)) AND NOT min_included(xitv)) AND NOT
min_included(yitv)));
END_IF;
IF amin = 0.5 * PI THEN
RETURN ((((((max_exists(xitv) AND NOT max_exists(yitv)) AND NOT
min_exists(xitv)) AND min_exists(yitv)) AND (real_max(xitv) = xc)
) AND (real_min(yitv) = yc)) AND ((((((c_in AND min_included(aitv
)) AND max_included(aitv)) AND max_included(xitv)) AND
min_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND
max_included(aitv)) AND max_included(xitv)) AND NOT min_included
(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT
max_included(aitv)) AND NOT max_included(xitv)) AND min_included(
yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT
max_included(aitv)) AND NOT max_included(xitv)) AND NOT
min_included(yitv)));
END_IF;
IF amin = -PI THEN
RETURN ((((((max_exists(xitv) AND max_exists(yitv)) AND NOT
min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(xitv) =
xc)) AND (real_max(yitv) = yc)) AND ((((((c_in AND min_included(
aitv)) AND max_included(aitv)) AND max_included(xitv)) AND
max_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND
max_included(aitv)) AND max_included(xitv)) AND NOT max_included
(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT
max_included(aitv)) AND NOT max_included(xitv)) AND max_included(
yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT
max_included(aitv)) AND NOT max_included(xitv)) AND NOT
max_included(yitv)));
END_IF;
IF amin = -0.5 * PI THEN
RETURN ((((((NOT max_exists(xitv) AND max_exists(yitv)) AND
min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_min(xitv) =
xc)) AND (real_max(yitv) = yc)) AND ((((((c_in AND min_included(
aitv)) AND max_included(aitv)) AND min_included(xitv)) AND
max_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND
max_included(aitv)) AND min_included(xitv)) AND NOT max_included
(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT
max_included(aitv)) AND NOT min_included(xitv)) AND max_included(
yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT
max_included(aitv)) AND NOT min_included(xitv)) AND NOT
max_included(yitv)));
END_IF;
END_IF;
IF arng = PI THEN
IF amin = 0.0 THEN
RETURN (((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND NOT
min_exists(xitv)) AND min_exists(yitv)) AND (real_min(yitv) = yc)
) AND (((c_in AND min_included(aitv)) AND max_included(aitv)) AND
min_included(yitv) OR ((NOT c_in AND NOT min_included(aitv)) AND
NOT max_included(aitv)) AND NOT min_included(yitv)));
END_IF;
IF amin = 0.5 * PI THEN
RETURN (((((max_exists(xitv) AND NOT max_exists(yitv)) AND NOT
min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(xitv) =
xc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv))
AND max_included(xitv) OR ((NOT c_in AND NOT min_included(aitv))
AND NOT max_included(aitv)) AND NOT max_included(xitv)));
END_IF;
IF amin = -PI THEN
RETURN (((((NOT max_exists(xitv) AND max_exists(yitv)) AND NOT
min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(yitv) =
yc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv))
AND max_included(yitv) OR ((NOT c_in AND NOT min_included(aitv))
AND NOT max_included(aitv)) AND NOT max_included(yitv)));
END_IF;
IF amin = -0.5 * PI THEN
RETURN (((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND
min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_min(xitv) =
xc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv))
AND min_included(xitv) OR ((NOT c_in AND NOT min_included(aitv))
AND NOT max_included(aitv)) AND NOT min_included(xitv)));
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION equal_maths_functions (
fun1 : maths_function;
fun2 : maths_function
) : LOGICAL;
LOCAL
cum : LOGICAL;
END_LOCAL;
IF fun1 = fun2 THEN
RETURN (TRUE);
END_IF;
cum := equal_maths_spaces(fun1.domain, fun2.domain);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
cum := cum AND equal_maths_spaces(fun1.range, fun2.range);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION equal_maths_spaces (
spc1 : maths_space;
spc2 : maths_space
) : LOGICAL;
LOCAL
spc1types : SET OF STRING := stripped_typeof(spc1);
spc2types : SET OF STRING := stripped_typeof(spc2);
set1 : SET OF maths_value;
set2 : SET OF maths_value;
cum : LOGICAL := TRUE;
base : maths_space;
expnt : INTEGER;
factors : LIST OF maths_space;
factors2 : LIST OF maths_space;
fs1 : function_space;
fs2 : function_space;
cum2 : LOGICAL;
END_LOCAL;
IF spc1 = spc2 THEN
RETURN (TRUE);
END_IF;
IF 'FINITE_SPACE' IN spc1types THEN
set1 := spc1\finite_space.members;
IF 'FINITE_SPACE' IN spc2types THEN
set2 := spc2\finite_space.members;
REPEAT i := 1 TO SIZEOF(set1);
cum := cum AND member_of(set1[i], spc2);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
IF cum = TRUE THEN
REPEAT i := 1 TO SIZEOF(set2);
cum := cum AND member_of(set2[i], spc1);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN (cum);
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN spc2types THEN
set2 := [];
REPEAT i := spc2\finite_integer_interval.min TO spc2\
finite_integer_interval.max;
set2 := set2 + [ i ];
END_REPEAT;
RETURN (equal_maths_spaces(spc1, make_finite_space(set2)));
END_IF;
END_IF;
IF ('FINITE_INTEGER_INTERVAL' IN spc1types) AND ('FINITE_SPACE' IN
spc2types) THEN
set1 := [];
REPEAT i := spc1\finite_integer_interval.min TO spc1\
finite_integer_interval.max;
set1 := set1 + [ i ];
END_REPEAT;
RETURN (equal_maths_spaces(make_finite_space(set1), spc2));
END_IF;
IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc1types) AND (
'POLAR_COMPLEX_NUMBER_REGION' IN spc2types) THEN
RETURN (equal_cregion_pregion(spc1, spc2));
END_IF;
IF ('POLAR_COMPLEX_NUMBER_REGION' IN spc1types) AND (
'CARTESIAN_COMPLEX_NUMBER_REGION' IN spc2types) THEN
RETURN (equal_cregion_pregion(spc2, spc1));
END_IF;
IF 'UNIFORM_PRODUCT_SPACE' IN spc1types THEN
base := spc1\uniform_product_space.base;
expnt := spc1\uniform_product_space.exponent;
IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
IF expnt <> spc2\uniform_product_space.exponent THEN
RETURN (FALSE);
END_IF;
RETURN (equal_maths_spaces(base, spc2\uniform_product_space.base));
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
factors := spc2\listed_product_space.factors;
IF expnt <> SIZEOF(factors) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO SIZEOF(factors);
cum := cum AND equal_maths_spaces(base, factors[i]);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN spc1types THEN
factors := spc1\listed_product_space.factors;
IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
IF spc2\uniform_product_space.exponent <> SIZEOF(factors) THEN
RETURN (FALSE);
END_IF;
base := spc2\uniform_product_space.base;
REPEAT i := 1 TO SIZEOF(factors);
cum := cum AND equal_maths_spaces(base, factors[i]);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
factors2 := spc2\listed_product_space.factors;
IF SIZEOF(factors) <> SIZEOF(factors2) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO SIZEOF(factors);
cum := cum AND equal_maths_spaces(factors[i], factors2[i]);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
IF ('EXTENDED_TUPLE_SPACE' IN spc1types) AND ('EXTENDED_TUPLE_SPACE' IN
spc2types) THEN
RETURN (equal_maths_spaces(spc1\extended_tuple_space.extender, spc2\
extended_tuple_space.extender) AND equal_maths_spaces(spc1\
extended_tuple_space.base, spc2\extended_tuple_space.base));
END_IF;
IF ('FUNCTION_SPACE' IN spc1types) AND ('FUNCTION_SPACE' IN spc2types)
THEN
fs1 := spc1;
fs2 := spc2;
IF fs1.domain_constraint <> fs2.domain_constraint THEN
IF (fs1.domain_constraint = sc_equal) OR (fs2.domain_constraint =
sc_equal) THEN
RETURN (FALSE);
END_IF;
IF fs1.domain_constraint <> sc_subspace THEN
fs1 := spc2;
fs2 := spc1;
END_IF;
IF (fs1.domain_constraint <> sc_subspace) OR (fs2.domain_constraint
<> sc_member) THEN
RETURN (UNKNOWN);
END_IF;
IF any_space_satisfies(fs1.domain_constraint, fs1.domain_argument)
<> any_space_satisfies(fs2.domain_constraint, fs2.domain_argument
) THEN
RETURN (FALSE);
END_IF;
IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.domain_argument))
THEN
RETURN (FALSE);
END_IF;
IF SIZEOF([ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL' ] *
stripped_typeof(fs1.domain_argument)) = 0 THEN
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_IF;
cum := equal_maths_spaces(fs1.domain_argument, fs2.domain_argument);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
IF fs1.range_constraint <> fs2.range_constraint THEN
IF (fs1.range_constraint = sc_equal) OR (fs2.range_constraint =
sc_equal) THEN
RETURN (FALSE);
END_IF;
IF fs1.range_constraint <> sc_subspace THEN
fs1 := spc2;
fs2 := spc1;
END_IF;
IF (fs1.range_constraint <> sc_subspace) OR (fs2.range_constraint
<> sc_member) THEN
RETURN (UNKNOWN);
END_IF;
IF any_space_satisfies(fs1.range_constraint, fs1.range_argument) <>
any_space_satisfies(fs2.range_constraint, fs2.range_argument)
THEN
RETURN (FALSE);
END_IF;
IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.range_argument)) THEN
RETURN (FALSE);
END_IF;
IF SIZEOF([ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL' ] *
stripped_typeof(fs1.range_argument)) = 0 THEN
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_IF;
cum := cum AND equal_maths_spaces(fs1.range_argument, fs2.
range_argument);
RETURN (cum);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION equal_maths_values (
val1 : maths_value;
val2 : maths_value
) : LOGICAL;
FUNCTION mem_of_vs
(val1 : maths_value;
val2 : maths_value ) : LOGICAL;
IF NOT has_values_space(val2) THEN
RETURN (UNKNOWN);
END_IF;
IF NOT member_of(val1, values_space_of(val2)) THEN
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_FUNCTION;
LOCAL
types1 : SET OF STRING;
types2 : SET OF STRING;
list1 : LIST OF maths_value;
list2 : LIST OF maths_value;
cum : LOGICAL := TRUE;
END_LOCAL;
IF NOT EXISTS(val1) OR NOT EXISTS(val2) THEN
RETURN (FALSE);
END_IF;
IF val1 = val2 THEN
RETURN (TRUE);
END_IF;
types1 := stripped_typeof(val1);
types2 := stripped_typeof(val2);
IF ('MATHS_ATOM' IN types1) OR ('COMPLEX_NUMBER_LITERAL' IN types1)
THEN
IF 'MATHS_ATOM' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'COMPLEX_NUMBER_LITERAL' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'LIST' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'MATHS_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN
RETURN (mem_of_vs(val1, val2));
END_IF;
RETURN (UNKNOWN);
END_IF;
IF ('MATHS_ATOM' IN types2) OR ('COMPLEX_NUMBER_LITERAL' IN types2)
THEN
RETURN (equal_maths_values(val2, val1));
END_IF;
IF 'LIST' IN types1 THEN
IF 'LIST' IN types2 THEN
list1 := val1;
list2 := val2;
IF SIZEOF(list1) <> SIZEOF(list2) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO SIZEOF(list1);
cum := cum AND equal_maths_values(list1[i], list2[i]);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'MATHS_SPACE' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN
RETURN (mem_of_vs(val1, val2));
END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'LIST' IN types2 THEN
RETURN (equal_maths_values(val2, val1));
END_IF;
IF 'MATHS_SPACE' IN types1 THEN
IF 'MATHS_SPACE' IN types2 THEN
RETURN (equal_maths_spaces(val1, val2));
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (FALSE);
END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN
RETURN (mem_of_vs(val1, val2));
END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'MATHS_SPACE' IN types2 THEN
RETURN (equal_maths_values(val2, val1));
END_IF;
IF 'MATHS_FUNCTION' IN types1 THEN
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (equal_maths_functions(val1, val2));
END_IF;
IF 'GENERIC_EXPRESSION' IN types2 THEN
RETURN (mem_of_vs(val1, val2));
END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'MATHS_FUNCTION' IN types2 THEN
RETURN (equal_maths_values(val2, val1));
END_IF;
IF ('GENERIC_EXPRESSION' IN types1) AND ('GENERIC_EXPRESSION' IN types2
) THEN
IF NOT has_values_space(val1) OR NOT has_values_space(val2) THEN
RETURN (UNKNOWN);
END_IF;
IF NOT compatible_spaces(values_space_of(val1), values_space_of(val2)
) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION es_subspace_of_es (
es1 : elementary_space_enumerators;
es2 : elementary_space_enumerators
) : BOOLEAN;
IF NOT EXISTS(es1) OR NOT EXISTS(es2) THEN
RETURN (FALSE);
END_IF;
IF es1 = es2 THEN
RETURN (TRUE);
END_IF;
IF es2 = es_generics THEN
RETURN (TRUE);
END_IF;
IF (es1 = es_booleans) AND (es2 = es_logicals) THEN
RETURN (TRUE);
END_IF;
IF (es2 = es_numbers) AND (((es1 = es_complex_numbers) OR (es1 =
es_reals)) OR (es1 = es_integers)) THEN
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION expression_is_constant (
expr : generic_expression
) : BOOLEAN;
RETURN (bool(SIZEOF(free_variables_of(expr)) = 0));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION external_version_assignment_is_valid (
aia : applied_external_identification_assignment
) : BOOLEAN;
LOCAL
item : external_identification_item;
role : identification_role;
END_LOCAL;
role := aia.role;
IF role.name = 'version' THEN
REPEAT i := LOINDEX(aia\applied_external_identification_assignment.
items) TO HIINDEX(aia\applied_external_identification_assignment.
items);
item := aia\applied_external_identification_assignment.items[i];
IF SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXTERNALLY_DEFINED_GENERAL_PROPERTY'
] * TYPEOF(item)) = 0 THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
ELSE
RETURN (TRUE);
END_IF;
END_FUNCTION; -- 10303-1129: external_properties_mim
FUNCTION extract_factors (
tspace : tuple_space;
m : INTEGER;
n : INTEGER
) : tuple_space;
LOCAL
tsp : tuple_space := the_zero_tuple_space;
END_LOCAL;
REPEAT i := m TO n;
tsp := assoc_product_space(tsp, factor_space(tspace, i));
END_REPEAT;
RETURN (tsp);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION extremal_position_check (
fun : linearized_table_function
) : BOOLEAN;
LOCAL
source_domain : maths_space;
source_interval : finite_integer_interval;
index : INTEGER := 1;
base : INTEGER;
shape : LIST OF positive_integer;
ndim : positive_integer;
slo : INTEGER;
shi : INTEGER;
sublo : LIST OF INTEGER := [];
subhi : LIST OF INTEGER := [];
END_LOCAL;
IF NOT EXISTS(fun) THEN
RETURN (FALSE);
END_IF;
source_domain := factor1(fun.source.domain);
IF schema_prefix + 'TUPLE_SPACE' IN TYPEOF(source_domain) THEN
source_domain := factor1(source_domain);
END_IF;
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(
source_domain)) THEN
RETURN (FALSE);
END_IF;
source_interval := source_domain;
base := fun\explicit_table_function.index_base;
shape := fun\explicit_table_function.shape;
IF schema_prefix + 'STANDARD_TABLE_FUNCTION' IN TYPEOF(fun) THEN
REPEAT j := 1 TO SIZEOF(shape);
index := index * shape[j];
END_REPEAT;
index := fun.first + index - 1;
RETURN (bool((source_interval.min <= index) AND (index <=
source_interval.max)));
END_IF;
IF schema_prefix + 'REGULAR_TABLE_FUNCTION' IN TYPEOF(fun) THEN
ndim := SIZEOF(fun\explicit_table_function.shape);
REPEAT j := 1 TO ndim;
slo := base;
shi := base + shape[j] - 1;
IF fun\regular_table_function.increments[j] >= 0 THEN
INSERT( sublo, slo, j - 1 );
INSERT( subhi, shi, j - 1 );
ELSE
INSERT( sublo, shi, j - 1 );
INSERT( subhi, slo, j - 1 );
END_IF;
END_REPEAT;
index := regular_indexing(sublo, base, shape, fun\
regular_table_function.increments, fun.first);
IF NOT ((source_interval.min <= index) AND (index <= source_interval.
max)) THEN
RETURN (FALSE);
END_IF;
index := regular_indexing(subhi, base, shape, fun\
regular_table_function.increments, fun.first);
IF NOT ((source_interval.min <= index) AND (index <= source_interval.
max)) THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION face_bound_reversed (
a_face_bound : face_bound
) : face_bound;
LOCAL
the_reverse : face_bound;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_OUTER_BOUND' IN
TYPEOF(a_face_bound) THEN
the_reverse := dummy_tri || face_bound(a_face_bound\face_bound.bound,
NOT a_face_bound\face_bound.orientation) || face_outer_bound();
ELSE
the_reverse := dummy_tri || face_bound(a_face_bound.bound, NOT
a_face_bound.orientation);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION face_reversed (
a_face : face
) : oriented_face;
LOCAL
the_reverse : oriented_face;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_FACE' IN
TYPEOF(a_face) THEN
the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.
bounds)) || oriented_face(a_face\oriented_face.face_element, NOT
a_face\oriented_face.orientation);
ELSE
the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.
bounds)) || oriented_face(a_face, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION factor1 (
tspace : tuple_space
) : maths_space;
LOCAL
typenames : SET OF STRING := TYPEOF(tspace);
END_LOCAL;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
RETURN (tspace\uniform_product_space.base);
END_IF;
IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
RETURN (tspace\listed_product_space.factors[1]);
END_IF;
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN typenames THEN
RETURN (factor1(tspace\extended_tuple_space.base));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION factor_space (
tspace : tuple_space;
idx : positive_integer
) : maths_space;
LOCAL
typenames : SET OF STRING := TYPEOF(tspace);
END_LOCAL;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
IF idx <= tspace\uniform_product_space.exponent THEN
RETURN (tspace\uniform_product_space.base);
END_IF;
RETURN (?);
END_IF;
IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
IF idx <= SIZEOF(tspace\listed_product_space.factors) THEN
RETURN (tspace\listed_product_space.factors[idx]);
END_IF;
RETURN (?);
END_IF;
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN typenames THEN
IF idx <= space_dimension(tspace\extended_tuple_space.base) THEN
RETURN (factor_space(tspace\extended_tuple_space.base, idx));
END_IF;
RETURN (tspace\extended_tuple_space.extender);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION first_proj_axis (
z_axis : direction;
arg : direction
) : direction;
LOCAL
x_axis : direction;
v : direction;
z : direction;
x_vec : vector;
END_LOCAL;
IF NOT EXISTS(z_axis) THEN
RETURN (?);
ELSE
z := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF (z.direction_ratios <> [ 1.0, 0.0, 0.0 ]) AND (z.
direction_ratios <> [ -1.0, 0.0, 0.0 ]) THEN
v := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
ELSE
v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
END_IF;
ELSE
IF arg.dim <> 3 THEN
RETURN (?);
END_IF;
IF cross_product(arg, z).magnitude = 0.0 THEN
RETURN (?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v, z), z);
x_axis := vector_difference(v, x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN (x_axis);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION free_variables_of (
expr : generic_expression
) : SET OF generic_variable;
LOCAL
typenames : SET OF STRING := stripped_typeof(expr);
result : SET OF generic_variable := [];
exprs : LIST OF generic_expression := [];
END_LOCAL;
IF 'GENERIC_LITERAL' IN typenames THEN
RETURN (result);
END_IF;
IF 'GENERIC_VARIABLE' IN typenames THEN
result := result + expr;
RETURN (result);
END_IF;
IF 'QUANTIFIER_EXPRESSION' IN typenames THEN
exprs := QUERY (ge <* expr\multiple_arity_generic_expression.operands
| NOT (ge IN expr\quantifier_expression.variables));
REPEAT i := 1 TO SIZEOF(exprs);
result := result + free_variables_of(exprs[i]);
END_REPEAT;
REPEAT i := 1 TO SIZEOF(expr\quantifier_expression.variables);
result := result - expr\quantifier_expression.variables[i];
END_REPEAT;
RETURN (result);
END_IF;
IF 'UNARY_GENERIC_EXPRESSION' IN typenames THEN
RETURN (free_variables_of(expr\unary_generic_expression.operand));
END_IF;
IF 'BINARY_GENERIC_EXPRESSION' IN typenames THEN
result := free_variables_of(expr\binary_generic_expression.operands[1
]);
RETURN (result + free_variables_of(expr\binary_generic_expression.
operands[2]));
END_IF;
IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN typenames THEN
REPEAT i := 1 TO SIZEOF(expr\multiple_arity_generic_expression.
operands);
result := result + free_variables_of(expr\
multiple_arity_generic_expression.operands[i]);
END_REPEAT;
RETURN (result);
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_applicability (
func : maths_function_select;
arguments : LIST [1:?] OF maths_value
) : BOOLEAN;
LOCAL
domain : tuple_space := convert_to_maths_function(func).domain;
domain_types : SET OF STRING := TYPEOF(domain);
narg : positive_integer := SIZEOF(arguments);
arg : generic_expression;
END_LOCAL;
IF schema_prefix + 'PRODUCT_SPACE' IN domain_types THEN
IF space_dimension(domain) <> narg THEN
RETURN (FALSE);
END_IF;
ELSE
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN domain_types THEN
IF space_dimension(domain) > narg THEN
RETURN (FALSE);
END_IF;
ELSE
RETURN (FALSE);
END_IF;
END_IF;
REPEAT i := 1 TO narg;
arg := convert_to_operand(arguments[i]);
IF NOT has_values_space(arg) THEN
RETURN (FALSE);
END_IF;
IF NOT compatible_spaces(factor_space(domain, i), values_space_of(arg
)) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_is_1d_array (
func : maths_function
) : BOOLEAN;
LOCAL
temp : maths_space;
END_LOCAL;
IF NOT EXISTS(func) THEN
RETURN (FALSE);
END_IF;
IF space_dimension(func.domain) <> 1 THEN
RETURN (FALSE);
END_IF;
temp := factor1(func.domain);
IF schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(temp) THEN
IF space_dimension(temp) <> 1 THEN
RETURN (FALSE);
END_IF;
temp := factor1(temp);
END_IF;
IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp) THEN
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_is_1d_table (
func : maths_function
) : BOOLEAN;
LOCAL
temp : maths_space;
itvl : finite_integer_interval;
END_LOCAL;
IF NOT EXISTS(func) THEN
RETURN (FALSE);
END_IF;
IF space_dimension(func.domain) <> 1 THEN
RETURN (FALSE);
END_IF;
temp := factor1(func.domain);
IF schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(temp) THEN
IF space_dimension(temp) <> 1 THEN
RETURN (FALSE);
END_IF;
temp := factor1(temp);
END_IF;
IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp) THEN
itvl := temp;
RETURN (bool((itvl.min = 0) OR (itvl.min = 1)));
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_is_2d_table (
func : maths_function
) : BOOLEAN;
LOCAL
temp : maths_space;
pspace : product_space;
itvl1 : finite_integer_interval;
itvl2 : finite_integer_interval;
END_LOCAL;
IF NOT EXISTS(func) THEN
RETURN (FALSE);
END_IF;
IF space_dimension(func.domain) <> 1 THEN
RETURN (FALSE);
END_IF;
temp := factor1(func.domain);
IF NOT ('PRODUCT_SPACE' IN stripped_typeof(temp)) THEN
RETURN (FALSE);
END_IF;
pspace := temp;
IF space_dimension(pspace) <> 2 THEN
RETURN (FALSE);
END_IF;
temp := factor1(pspace);
IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN
RETURN (FALSE);
END_IF;
itvl1 := temp;
temp := factor_space(pspace, 2);
IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN
RETURN (FALSE);
END_IF;
itvl2 := temp;
RETURN (bool((itvl1.min = itvl2.min) AND ((itvl1.min = 0) OR (itvl1.min
= 1))));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_is_array (
func : maths_function
) : BOOLEAN;
LOCAL
tspace : tuple_space;
temp : maths_space;
END_LOCAL;
IF NOT EXISTS(func) THEN
RETURN (FALSE);
END_IF;
tspace := func.domain;
IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN
TYPEOF(factor1(tspace))) THEN
tspace := factor1(tspace);
END_IF;
IF NOT (schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(tspace)) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO space_dimension(tspace);
temp := factor_space(tspace, i);
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp))
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION function_is_table (
func : maths_function
) : BOOLEAN;
LOCAL
tspace : tuple_space;
temp : maths_space;
base : INTEGER;
END_LOCAL;
IF NOT EXISTS(func) THEN
RETURN (FALSE);
END_IF;
tspace := func.domain;
IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN
TYPEOF(factor1(tspace))) THEN
tspace := factor1(tspace);
END_IF;
IF NOT (schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(tspace)) THEN
RETURN (FALSE);
END_IF;
temp := factor1(tspace);
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
RETURN (FALSE);
END_IF;
base := temp\finite_integer_interval.min;
IF (base <> 0) AND (base <> 1) THEN
RETURN (FALSE);
END_IF;
REPEAT i := 2 TO space_dimension(tspace);
temp := factor_space(tspace, i);
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp))
THEN
RETURN (FALSE);
END_IF;
IF temp\finite_integer_interval.min <> base THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION gbsf_check_curve (
cv : representation_item
) : BOOLEAN;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D' ] *
TYPEOF(cv)) > 1 THEN
RETURN (FALSE);
END_IF;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCLE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELLIPSE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TRIMMED_CURVE' ] *
TYPEOF(cv)) = 1 THEN
RETURN (TRUE);
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE' IN
TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\
b_spline_curve.self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE'
IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR
(cv\composite_curve.self_intersect = UNKNOWN) THEN
RETURN (SIZEOF(QUERY (seg <* cv\composite_curve.segments| NOT
gbsf_check_curve(seg.parent_curve))) = 0);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(cv) THEN
RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
ELSE
IF ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D'
IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect =
FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND
NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE'
IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(cv) THEN
RETURN (gbsf_check_curve(cv\pcurve.reference_to_curve\
representation.items[1]) AND gbsf_check_surface(cv\pcurve
.basis_surface));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE'
IN TYPEOF(cv) THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN (TRUE);
END_IF;
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(cv) THEN
IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE'
IN TYPEOF(cv\surface_curve.associated_geometry[i
]) THEN
IF NOT gbsf_check_surface(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE'
IN TYPEOF(cv\surface_curve.associated_geometry
[i]) THEN
IF NOT gbsf_check_curve(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION gbsf_check_point (
pnt : point
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(pnt) THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE' IN
TYPEOF(pnt) THEN
RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE'
IN TYPEOF(pnt) THEN
RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface));
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DEGENERATE_PCURVE'
IN TYPEOF(pnt) THEN
RETURN (gbsf_check_curve(pnt\degenerate_pcurve.
reference_to_curve\representation.items[1]) AND
gbsf_check_surface(pnt\degenerate_pcurve.basis_surface));
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION gbsf_check_surface (
sf : surface
) : BOOLEAN;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE' IN
TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\
b_spline_surface.self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SPHERICAL_SURFACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOROIDAL_SURFACE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_BOUNDED_SURFACE'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_TRIMMED_SURFACE'
] * TYPEOF(sf)) = 1 THEN
RETURN (TRUE);
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_SURFACE' IN
TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (
sf\offset_surface.self_intersect = UNKNOWN) THEN
RETURN (gbsf_check_surface(sf\offset_surface.basis_surface));
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RECTANGULAR_COMPOSITE_SURFACE'
IN TYPEOF(sf) THEN
REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.
segments);
REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.
segments[i]);
IF NOT gbsf_check_surface(sf\rectangular_composite_surface.
segments[i][j].parent_surface) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (TRUE);
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_REPLICA'
IN TYPEOF(sf) THEN
RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)
);
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_OF_REVOLUTION'
IN TYPEOF(sf) THEN
RETURN (gbsf_check_curve(sf\swept_surface.swept_curve));
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION geometric_dimensionalities_in_contexts (
grcs : SET [1:?] OF geometric_representation_context
) : INTEGER;
LOCAL
grcs_1d : INTEGER := 0;
grcs_2d : INTEGER := 0;
grcs_3d : INTEGER := 0;
END_LOCAL;
IF SIZEOF(grcs) = 1 THEN
RETURN (grcs[1]\geometric_representation_context.
coordinate_space_dimension);
ELSE
REPEAT i := 1 TO HIINDEX(grcs);
IF grcs[i]\geometric_representation_context.
coordinate_space_dimension = 1 THEN
grcs_1d := grcs_1d + 1;
ELSE
IF grcs[i]\geometric_representation_context.
coordinate_space_dimension = 2 THEN
grcs_2d := grcs_2d + 1;
ELSE
IF grcs[i]\geometric_representation_context.
coordinate_space_dimension = 3 THEN
grcs_3d := grcs_3d + 1;
END_IF;
END_IF;
END_IF;
END_REPEAT;
END_IF;
IF grcs_1d + grcs_2d = 0 THEN
RETURN (3);
ELSE
IF grcs_1d + grcs_3d = 0 THEN
RETURN (2);
ELSE
IF grcs_2d + grcs_3d = 0 THEN
RETURN (1);
ELSE
RETURN (0);
END_IF;
END_IF;
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION get_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : SET OF action_property;
RETURN (bag_to_set(QUERY (ap <* USEDIN(cad,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY.DEFINITION'
)| ap.name = prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_aggregate_id_value (
obj : id_attribute_select
) : identifier;
LOCAL
aggregate_id_bag : BAG OF aggregate_id_attribute := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AGGREGATE_ID_ATTRIBUTE.IDENTIFIED_ITEM'
);
END_LOCAL;
IF SIZEOF(aggregate_id_bag) = 1 THEN
RETURN (aggregate_id_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_basis_surface (
c : curve_on_surface
) : SET [0:2] OF surface;
LOCAL
surfs : SET [0:2] OF surface;
n : INTEGER;
END_LOCAL;
surfs := [];
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN TYPEOF(c)
THEN
surfs := [ c\pcurve.basis_surface ];
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE' IN
TYPEOF(c) THEN
n := SIZEOF(c\surface_curve.associated_geometry);
REPEAT i := 1 TO n;
surfs := surfs + associated_surface(c\surface_curve.
associated_geometry[i]);
END_REPEAT;
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE_ON_SURFACE'
IN TYPEOF(c) THEN
n := SIZEOF(c\composite_curve.segments);
surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve
);
IF n > 1 THEN
REPEAT i := 2 TO n;
surfs := surfs * get_basis_surface(c\composite_curve.segments[i].
parent_curve);
END_REPEAT;
END_IF;
END_IF;
RETURN (surfs);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION get_coordinate_values (
source : tessellated_surface_item
) : coordinates_list;
LOCAL
coordinate_values : coordinates_list;
max : INTEGER;
END_LOCAL;
CASE TRUE OF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_FACE' IN
TYPEOF(source) :
BEGIN
coordinate_values := source\tessellated_face.coordinates;
RETURN (coordinate_values);
END;
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SURFACE_SET'
IN TYPEOF(source) :
BEGIN
coordinate_values := source\tessellated_surface_set.coordinates
;
RETURN (coordinate_values);
END;
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SOLID' IN
TYPEOF(source) :
BEGIN
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_FACE'
IN TYPEOF(source\tessellated_solid.items[1]) THEN
coordinate_values := source\tessellated_solid.items[1]\
tessellated_face.coordinates;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_EDGE'
IN TYPEOF(source\tessellated_solid.items[1]) THEN
coordinate_values := source\tessellated_solid.items[1]\
tessellated_edge.coordinates;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_VERTEX'
IN TYPEOF(source\tessellated_solid.items[1]) THEN
coordinate_values := source\tessellated_solid.items[1]\
tessellated_vertex.coordinates;
END_IF;
max := SIZEOF(source\tessellated_solid.items);
IF max = 1 THEN
RETURN (coordinate_values);
ELSE
REPEAT i := 2 TO max;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_FACE'
IN TYPEOF(source\tessellated_solid.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_solid.
items[i]\tessellated_face.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_EDGE'
IN TYPEOF(source\tessellated_solid.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_solid.
items[i]\tessellated_edge.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_VERTEX'
IN TYPEOF(source\tessellated_solid.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_solid.
items[i]\tessellated_vertex.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
END_REPEAT;
RETURN (coordinate_values);
END_IF;
END;
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_SHELL' IN
TYPEOF(source) :
BEGIN
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_FACE'
IN TYPEOF(source\tessellated_shell.items[1]) THEN
coordinate_values := source\tessellated_shell.items[1]\
tessellated_face.coordinates;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_EDGE'
IN TYPEOF(source\tessellated_shell.items[1]) THEN
coordinate_values := source\tessellated_shell.items[1]\
tessellated_edge.coordinates;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_VERTEX'
IN TYPEOF(source\tessellated_shell.items[1]) THEN
coordinate_values := source\tessellated_shell.items[1]\
tessellated_vertex.coordinates;
END_IF;
max := SIZEOF(source\tessellated_shell.items);
IF max = 1 THEN
RETURN (coordinate_values);
ELSE
REPEAT i := 2 TO max;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_FACE'
IN TYPEOF(source\tessellated_shell.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_shell.
items[i]\tessellated_face.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_EDGE'
IN TYPEOF(source\tessellated_shell.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_shell.
items[i]\tessellated_edge.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TESSELLATED_VERTEX'
IN TYPEOF(source\tessellated_shell.items[i]) THEN
IF NOT (coordinate_values :=: source\tessellated_shell.
items[i]\tessellated_vertex.coordinates) THEN
RETURN (?);
END_IF;
END_IF;
END_REPEAT;
RETURN (coordinate_values);
END_IF;
END;
END_CASE;
END_FUNCTION; -- 10303-46: presentation_appearance_schema
FUNCTION get_count_of_relating_amr (
am : action_method;
amr_types : SET OF STRING
) : INTEGER;
RETURN (SIZEOF(QUERY (amr <* get_relating_amr(am)| SIZEOF(amr_types *
TYPEOF(amr)) = SIZEOF(amr_types))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_count_of_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
) : INTEGER;
RETURN (SIZEOF(QUERY (amr <* get_relating_amr(am)| (amr.name = amr_name
) AND (SIZEOF(amr_types * TYPEOF(amr)) = SIZEOF(amr_types)))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_descendant_occurrences (
input : product_definition_occurrence
) : SET [0:?] OF product_definition_specified_occurrence;
LOCAL
result : SET OF product_definition_specified_occurrence := input.
child_occurrences;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(input.child_occurrences) BY 1;
result := result + get_descendant_occurrences(input.child_occurrences
[i]);
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-44: product_structure_schema
FUNCTION get_description_value (
obj : description_attribute_select
) : text;
LOCAL
description_bag : BAG OF description_attribute := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'
);
END_LOCAL;
IF SIZEOF(description_bag) = 1 THEN
RETURN (description_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_directed_link (
nodes : LIST OF representation;
undirected_link : LIST OF chained_representation_link
) : LIST OF representation_relationship;
LOCAL
directed_link : LIST OF representation_relationship := [];
END_LOCAL;
IF (SIZEOF(nodes) <> SIZEOF(undirected_link) + 1) OR (VALUE_UNIQUE(
nodes) = FALSE) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(undirected_link);
CASE TRUE OF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_CONTEXT'
IN TYPEOF(undirected_link[i]) :
BEGIN
IF (nodes[i]\representation.context_of_items :=:
undirected_link[i]) AND (nodes[(i + 1)]\representation.
context_of_items :=: undirected_link[i]) THEN
INSERT( directed_link, representation_relationship('', '',
nodes[(i + 1)], nodes[i]), i - 1 );
ELSE
RETURN (?);
END_IF;
END;
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_RELATIONSHIP'
IN TYPEOF(undirected_link[i]) :
BEGIN
IF (nodes[i] :=: undirected_link[i]\
representation_relationship.rep_1) AND (nodes[(i + 1)] :=:
undirected_link[i]\representation_relationship.rep_2) OR (
nodes[i] :=: undirected_link[i]\representation_relationship
.rep_2) AND (nodes[(i + 1)] :=: undirected_link[i]\
representation_relationship.rep_1) THEN
INSERT( directed_link, representation_relationship('', '',
nodes[(i + 1)], nodes[i]), i - 1 );
ELSE
RETURN (?);
END_IF;
END;
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAPPED_ITEM' IN TYPEOF
(undirected_link[i]) :
BEGIN
IF (nodes[i] IN using_representations(undirected_link[i]))
AND (nodes[(i + 1)] :=: undirected_link[i]\mapped_item.
mapping_source\representation_map.mapped_representation)
THEN
INSERT( directed_link, representation_relationship('', '',
nodes[(i + 1)], nodes[i]), i - 1 );
ELSE
RETURN (?);
END_IF;
END;
OTHERWISE :
RETURN (?);
END_CASE;
END_REPEAT;
IF VALUE_UNIQUE(directed_link) = FALSE THEN
RETURN (?);
END_IF;
RETURN (directed_link);
END_FUNCTION; -- 10303-41: product_property_representation_schema
FUNCTION get_id_value (
obj : id_attribute_select
) : identifier;
LOCAL
id_bag : BAG OF id_attribute := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM'
);
END_LOCAL;
IF SIZEOF(id_bag) = 1 THEN
RETURN (id_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_kinematic_joints_from_kinematic_loops (
kls : SET OF kinematic_loop
) : SET OF kinematic_joint;
LOCAL
result : SET OF oriented_joint := [];
END_LOCAL;
IF SIZEOF(kls) > 0 THEN
REPEAT i := 1 TO HIINDEX(kls);
result := result + kls[i].edge_list;
END_REPEAT;
END_IF;
RETURN (get_kinematic_joints_from_oriented_joints(result));
END_FUNCTION; -- 10303-105: kinematic_topology_schema
FUNCTION get_kinematic_joints_from_oriented_joints (
ors : SET OF oriented_joint
) : SET OF kinematic_joint;
LOCAL
result : SET OF kinematic_joint := [];
END_LOCAL;
IF SIZEOF(ors) > 0 THEN
REPEAT i := 1 TO HIINDEX(ors);
result := result + ors[i].edge_element;
END_REPEAT;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-105: kinematic_topology_schema
FUNCTION get_name_value (
obj : name_attribute_select
) : label;
LOCAL
name_bag : BAG OF name_attribute := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM'
);
END_LOCAL;
IF SIZEOF(name_bag) = 1 THEN
RETURN (name_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_product_definition_shape (
current : constituent_shape_aspect
) : product_definition_shape;
REPEAT WHILE
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONSTITUENT_SHAPE_ASPECT'
IN TYPEOF(current.parent);
current := current.parent;
END_REPEAT;
RETURN (current.parent\shape_aspect.of_shape);
END_FUNCTION; -- 10303-41: product_property_definition_schema
FUNCTION get_property_definition_representations (
c_def_instance : characterized_definition
) : 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(c_def_instance,
'MODEL_BASED_INTEGRATED_MANUFACTURING_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 + bag_to_set(USEDIN(pd_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
));
END_REPEAT;
RETURN (pdr_set);
END_FUNCTION; -- 10303-41: product_property_representation_schema
FUNCTION get_relating_amr (
am : action_method
) : SET OF action_method_relationship;
RETURN (bag_to_set(USEDIN(am,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD'
)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_representations_for_items (
input : SET OF founded_item_select
) : SET OF representation;
LOCAL
r_set : SET OF representation := [];
END_LOCAL;
REPEAT i := LOINDEX(input) TO HIINDEX(input);
r_set := r_set + using_representations(input[i]);
END_REPEAT;
RETURN (r_set);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION get_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : SET OF resource_property;
RETURN (bag_to_set(QUERY (rp <* USEDIN(crd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY.RESOURCE'
)| rp.name = prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_role (
obj : role_select
) : object_role;
LOCAL
role_bag : BAG OF role_association := USEDIN(obj,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'
);
END_LOCAL;
IF SIZEOF(role_bag) = 1 THEN
RETURN (role_bag[1].role);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
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,
'MODEL_BASED_INTEGRATED_MANUFACTURING_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],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_DEFINITION_REPRESENTATION'
IN TYPEOF(pdr)));
END_REPEAT;
RETURN (pdr_set);
END_FUNCTION; -- 10303-1051: geometric_tolerance_mim
FUNCTION get_shape_aspects (
c_def_instance : characterized_definition
) : SET OF shape_aspect;
LOCAL
pd_set : SET OF product_definition_shape := [];
pdr_set : SET OF shape_aspect := [];
END_LOCAL;
pd_set := bag_to_set(QUERY (pd <* USEDIN(c_def_instance,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)|
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd)));
IF SIZEOF(pd_set) < 1 THEN
RETURN (pdr_set);
END_IF;
REPEAT i := 1 TO HIINDEX(pd_set);
pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
));
END_REPEAT;
RETURN (pdr_set);
END_FUNCTION; -- 10303-41: product_property_definition_schema
FUNCTION get_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : SET OF representation_item;
LOCAL
props : SET OF resource_property;
preps : SET OF resource_property_representation;
items : SET OF representation_item;
END_LOCAL;
props := get_resource_property(mt, 'tool body');
REPEAT i := 1 TO HIINDEX(props);
preps := preps + USEDIN(props[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(preps);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_BODY_REPRESENTATION'
IN TYPEOF(preps[i].representation) THEN
items := items + preps[i].representation.items;
END_IF;
END_REPEAT;
RETURN (bag_to_set(QUERY (it <* items| it.name = prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION get_tri_for_pd (
def_instance : product_definition
) : SET OF topological_representation_item;
LOCAL
pd1_set : SET OF property_definition := bag_to_set(USEDIN(def_instance,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
));
pd2_set : SET OF property_definition := [];
pdr_set : SET OF property_definition_representation := [];
pds_set : SET OF product_definition_shape := [];
r_set : SET OF representation := [];
sa_set : SET OF shape_aspect := [];
tri_set : SET OF topological_representation_item := [];
END_LOCAL;
IF SIZEOF(pd1_set) < 1 THEN
RETURN (?);
END_IF;
REPEAT i := LOINDEX(pd1_set) TO HIINDEX(pd1_set);
pdr_set := pdr_set + bag_to_set(USEDIN(pd1_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
));
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(pd1_set[i]) THEN
pds_set := pds_set + pd1_set[i];
END_IF;
END_REPEAT;
REPEAT i := LOINDEX(pds_set) TO HIINDEX(pds_set);
sa_set := sa_set + bag_to_set(USEDIN(pds_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT.OF_SHAPE'
));
END_REPEAT;
REPEAT i := LOINDEX(sa_set) TO HIINDEX(sa_set);
pd2_set := pd2_set + bag_to_set(USEDIN(sa_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
));
END_REPEAT;
IF SIZEOF(pd2_set) > 0 THEN
BEGIN
REPEAT i := LOINDEX(pd2_set) TO HIINDEX(pd2_set);
pdr_set := pdr_set + bag_to_set(USEDIN(pd2_set[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
));
END_REPEAT;
END;
END_IF;
IF SIZEOF(pdr_set) < 1 THEN
RETURN (?);
END_IF;
REPEAT i := LOINDEX(pdr_set) TO HIINDEX(pdr_set);
r_set := r_set + pdr_set[i]\property_definition_representation.
used_representation;
END_REPEAT;
IF SIZEOF(r_set) < 1 THEN
RETURN (?);
END_IF;
REPEAT i := LOINDEX(r_set) TO HIINDEX(r_set);
REPEAT j := LOINDEX(r_set[i]\representation.items) TO HIINDEX(r_set[i
]\representation.items);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOPOLOGICAL_REPRESENTATION_ITEM'
IN TYPEOF(r_set[i]\representation.items[j]) THEN
tri_set := tri_set + r_set[i]\representation.items[j];
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (tri_set);
END_FUNCTION; -- 10303-113: mechanical_design_schema
FUNCTION get_tri_in_representations (
members : SET OF representation
) : SET OF topological_representation_item;
LOCAL
tri_set : SET OF topological_representation_item := [];
END_LOCAL;
IF SIZEOF(members) = 0 THEN
RETURN (?);
END_IF;
REPEAT i := LOINDEX(members) TO HIINDEX(members);
REPEAT j := LOINDEX(members[i]\representation.items) TO HIINDEX(
members[i]\representation.items);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOPOLOGICAL_REPRESENTATION_ITEM'
IN TYPEOF(members[i]\representation.items[j]) THEN
tri_set := tri_set + members[i]\representation.items[j];
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (tri_set);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION has_values_space (
expr : generic_expression
) : BOOLEAN;
LOCAL
typenames : SET OF STRING := stripped_typeof(expr);
END_LOCAL;
IF 'EXPRESSION' IN typenames THEN
RETURN (bool((('NUMERIC_EXPRESSION' IN typenames) OR (
'STRING_EXPRESSION' IN typenames)) OR ('BOOLEAN_EXPRESSION' IN
typenames)));
END_IF;
IF 'MATHS_FUNCTION' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'FUNCTION_APPLICATION' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'MATHS_SPACE' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'MATHS_VARIABLE' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'DEPENDENT_VARIABLE_DEFINITION' IN typenames THEN
RETURN (has_values_space(expr\unary_generic_expression.operand));
END_IF;
IF 'COMPLEX_NUMBER_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'LOGICAL_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'BINARY_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'MATHS_ENUM_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'REAL_TUPLE_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'INTEGER_TUPLE_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'ATOM_BASED_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'MATHS_TUPLE_LITERAL' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames THEN
RETURN (TRUE);
END_IF;
IF 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames THEN
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION increasing_values_in_list (
values : LIST [2:?] OF REAL
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
limit : INTEGER := SIZEOF(values);
END_LOCAL;
REPEAT i := 2 TO limit;
IF values[i] <= values[(i - 1)] THEN
result := FALSE;
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION is_acyclic (
arg : generic_expression
) : BOOLEAN;
RETURN (acyclic(arg, []));
END_FUNCTION; -- 13584-20: iso13584_generic_expressions_schema
FUNCTION is_int_expr (
arg : numeric_expression
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_LITERAL' IN TYPEOF(
arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_LITERAL' IN TYPEOF
(arg) THEN
RETURN (FALSE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_NUMERIC_VARIABLE'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_NUMERIC_VARIABLE'
IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ABS_FUNCTION' IN TYPEOF
(arg) THEN
RETURN (is_int_expr(arg\unary_numeric_expression.operand));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINUS_FUNCTION' IN
TYPEOF(arg) THEN
RETURN (is_int_expr(arg\unary_numeric_expression.operand));
END_IF;
IF (((((((((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIN_FUNCTION'
IN TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COS_FUNCTION' IN TYPEOF(
arg))) OR ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAN_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ASIN_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACOS_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ATAN_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXP_FUNCTION' IN TYPEOF(
arg))) OR ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG2_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG10_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_ROOT_FUNCTION' IN
TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLUS_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MULT_EXPRESSION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAXIMUM_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINIMUM_FUNCTION' IN
TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.
operands);
IF NOT is_int_expr(arg\multiple_arity_numeric_expression.operands[i
]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINUS_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POWER_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) AND
is_int_expr(arg\binary_numeric_expression.operands[2]));
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIV_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MOD_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLASH_EXPRESSION' IN
TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_FUNCTION' IN
TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_FUNCTION' IN
TYPEOF(arg) THEN
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_VALUE_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INTEGER_DEFINED_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_DEFINED_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_DEFINED_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_DEFINED_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 13584-20: iso13584_expressions_schema
FUNCTION is_sql_mappable (
arg : expression
) : BOOLEAN;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIMPLE_NUMERIC_EXPRESSION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQL_MAPPABLE_DEFINED_FUNCTION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINUS_FUNCTION' IN
TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\unary_numeric_expression.operand));
END_IF;
IF (((((((((((((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ABS_FUNCTION' IN TYPEOF(
arg)) OR ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIN_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COS_FUNCTION' IN TYPEOF(
arg))) OR ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TAN_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ASIN_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACOS_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ATAN_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXP_FUNCTION' IN TYPEOF(
arg))) OR ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG2_FUNCTION' IN TYPEOF
(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LOG10_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_ROOT_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_FUNCTION' IN
TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLUS_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MULT_EXPRESSION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAXIMUM_FUNCTION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINIMUM_FUNCTION' IN
TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.
operands);
IF NOT is_sql_mappable(arg\multiple_arity_numeric_expression.
operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MINUS_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SLASH_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (is_sql_mappable(arg\binary_numeric_expression.operands[1])
AND is_sql_mappable(arg\binary_numeric_expression.operands[2]));
END_IF;
IF (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIV_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MOD_EXPRESSION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POWER_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIMPLE_BOOLEAN_EXPRESSION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NOT_EXPRESSION' IN
TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\unary_generic_expression.operand));
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ODD_FUNCTION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.XOR_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AND_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OR_EXPRESSION' IN TYPEOF
(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.
operands);
IF NOT is_sql_mappable(arg\multiple_arity_boolean_expression.
operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EQUALS_EXPRESSION' IN
TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\binary_generic_expression.operands[1])
AND is_sql_mappable(arg\binary_generic_expression.operands[2]));
END_IF;
IF (((((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_EQUAL'
IN TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_GREATER' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_GREATER_EQUAL'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_LESS' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_LESS_EQUAL'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPARISON_NOT_EQUAL' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIKE_EXPRESSION' IN
TYPEOF(arg)) THEN
RETURN (is_sql_mappable(arg\comparison_expression.operands[1]) AND
is_sql_mappable(arg\comparison_expression.operands[2]));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INTERVAL_EXPRESSION' IN
TYPEOF(arg) THEN
RETURN ((is_sql_mappable(arg\interval_expression.interval_low) AND
is_sql_mappable(arg\interval_expression.interval_high)) AND
is_sql_mappable(arg\interval_expression.interval_item));
END_IF;
IF ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_DEFINED_FUNCTION'
IN TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_DEFINED_FUNCTION'
IN TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRING_DEFINED_FUNCTION'
IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SIMPLE_STRING_EXPRESSION'
IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INDEX_EXPRESSION' IN
TYPEOF(arg)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SUBSTRING_EXPRESSION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCAT_EXPRESSION' IN
TYPEOF(arg))) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FORMAT_FUNCTION' IN
TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 13584-20: iso13584_expressions_schema
FUNCTION item_in_context (
item : representation_item;
cntxt : representation_context
) : BOOLEAN;
LOCAL
y : BAG OF representation_item;
END_LOCAL;
IF SIZEOF(USEDIN(item,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION.ITEMS') *
cntxt.representations_in_context) > 0 THEN
RETURN (TRUE);
ELSE
y := QUERY (z <* USEDIN(item, '')|
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM'
IN TYPEOF(z));
IF SIZEOF(y) > 0 THEN
REPEAT i := 1 TO HIINDEX(y);
IF item_in_context(y[i], cntxt) THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION leap_year (
year : year_number
) : BOOLEAN;
IF (year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION list_face_loops (
f : face
) : LIST [0:?] OF loop;
LOCAL
loops : LIST [0:?] OF loop := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(f.bounds);
loops := loops + f.bounds[i].bound;
END_REPEAT;
RETURN (loops);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION list_of_topology_reversed (
a_list : list_of_reversible_topology_item
) : list_of_reversible_topology_item;
LOCAL
the_reverse : list_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_list);
the_reverse := topology_reversed(a_list[i]) + the_reverse;
END_REPEAT;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION list_selected_components (
aggr : AGGREGATE OF LIST OF maths_value;
k : positive_integer
) : LIST OF maths_value;
LOCAL
result : LIST OF maths_value := [];
j : INTEGER := 0;
END_LOCAL;
REPEAT i := LOINDEX(aggr) TO HIINDEX(aggr);
IF k <= SIZEOF(aggr[i]) THEN
INSERT( result, aggr[i][k], j );
j := j + 1;
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION list_to_array (
lis : LIST [0:?] OF GENERIC : T;
low : INTEGER;
u : INTEGER
) : ARRAY [low:u] OF GENERIC : T;
LOCAL
n : INTEGER;
res : ARRAY [low:u] OF GENERIC : T;
END_LOCAL;
n := SIZEOF(lis);
IF n <> u - low + 1 THEN
RETURN (?);
ELSE
res := [ lis[1] ];
REPEAT i := 2 TO n;
res[(low + i - 1)] := lis[i];
END_REPEAT;
RETURN (res);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION list_to_set (
l : LIST [0:?] OF GENERIC : T
) : SET OF GENERIC : T;
LOCAL
s : SET OF GENERIC : T := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(l);
s := s + l[i];
END_REPEAT;
RETURN (s);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION make_array_of_array (
lis : LIST [1:?] OF LIST [1:?] OF GENERIC : T;
low1 : INTEGER;
u1 : INTEGER;
low2 : INTEGER;
u2 : INTEGER
) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
LOCAL
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
END_LOCAL;
IF u1 - low1 + 1 <> SIZEOF(lis) THEN
RETURN (?);
END_IF;
IF u2 - low2 + 1 <> SIZEOF(lis[1]) THEN
RETURN (?);
END_IF;
res := [ list_to_array(lis[1], low2, u2) ];
REPEAT i := 2 TO HIINDEX(lis);
IF u2 - low2 + 1 <> SIZEOF(lis[i]) THEN
RETURN (?);
END_IF;
res[(low1 + i - 1)] := list_to_array(lis[i], low2, u2);
END_REPEAT;
RETURN (res);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION make_array_of_array_of_array (
lis : LIST [1:?] OF LIST [1:?] OF LIST [1:?] OF GENERIC : T;
low1 : INTEGER;
u1 : INTEGER;
low2 : INTEGER;
u2 : INTEGER;
low3 : INTEGER;
u3 : INTEGER
) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF ARRAY [low3:u3] OF GENERIC : T;
LOCAL
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF ARRAY [low3:u3] OF GENERIC
: T;
END_LOCAL;
IF u1 - low1 + 1 <> SIZEOF(lis) THEN
RETURN (?);
END_IF;
IF u2 - low2 + 1 <> SIZEOF(lis[1]) THEN
RETURN (?);
END_IF;
res := [ make_array_of_array(lis[1], low2, u2, low3, u3) ];
REPEAT i := 2 TO HIINDEX(lis);
IF u2 - low2 + 1 <> SIZEOF(lis[i]) THEN
RETURN (?);
END_IF;
res[(low1 + i - 1)] := make_array_of_array(lis[i], low2, u2, low3, u3
);
END_REPEAT;
RETURN (res);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION make_atom_based_literal (
lit_value : atom_based_value
) : atom_based_literal;
RETURN (atom_based_literal(lit_value) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_binary_literal (
lit_value : BINARY
) : binary_literal;
RETURN (binary_literal(lit_value) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_boolean_literal (
lit_value : BOOLEAN
) : boolean_literal;
RETURN (boolean_literal(lit_value) || simple_boolean_expression() ||
boolean_expression() || expression() || generic_expression() ||
simple_generic_expression() || generic_literal());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_cartesian_complex_number_region (
real_constraint : real_interval;
imag_constraint : real_interval
) : cartesian_complex_number_region;
RETURN (cartesian_complex_number_region(real_constraint,
imag_constraint) || maths_space() || generic_expression() ||
generic_literal() || simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_complex_number_literal (
rpart : REAL;
ipart : REAL
) : complex_number_literal;
RETURN (complex_number_literal(rpart, ipart) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_elementary_function (
func_id : elementary_function_enumerators
) : elementary_function;
RETURN (elementary_function(func_id) || maths_function() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_elementary_space (
space_id : elementary_space_enumerators
) : elementary_space;
RETURN (elementary_space(space_id) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_extended_tuple_space (
base : tuple_space;
extender : maths_space
) : extended_tuple_space;
RETURN (extended_tuple_space(base, extender) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_finite_integer_interval (
min : INTEGER;
max : INTEGER
) : finite_integer_interval;
RETURN (finite_integer_interval(min, max) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_finite_real_interval (
min : REAL;
minclo : open_closed;
max : REAL;
maxclo : open_closed
) : finite_real_interval;
RETURN (finite_real_interval(min, minclo, max, maxclo) || maths_space()
|| generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_finite_space (
members : SET OF maths_value
) : finite_space;
RETURN (finite_space(members) || maths_space() || generic_expression()
|| generic_literal() || simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_function_application (
afunction : maths_function_select;
arguments : LIST [1:?] OF maths_value
) : function_application;
RETURN (function_application(afunction, arguments) ||
multiple_arity_generic_expression((convert_to_maths_function(
afunction) + convert_to_operands(arguments))) || generic_expression()
);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_function_space (
domain_constraint : space_constraint_type;
domain_argument : maths_space;
range_constraint : space_constraint_type;
range_argument : maths_space
) : function_space;
RETURN (function_space(domain_constraint, domain_argument,
range_constraint, range_argument) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_int_literal (
lit_value : INTEGER
) : int_literal;
RETURN (int_literal() || literal_number(lit_value) ||
simple_numeric_expression() || numeric_expression() || expression()
|| generic_expression() || simple_generic_expression() ||
generic_literal());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_listed_product_space (
factors : LIST OF maths_space
) : listed_product_space;
RETURN (listed_product_space(factors) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_logical_literal (
lit_value : LOGICAL
) : logical_literal;
RETURN (logical_literal(lit_value) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_maths_enum_literal (
lit_value : maths_enum_atom
) : maths_enum_literal;
RETURN (maths_enum_literal(lit_value) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_maths_tuple_literal (
lit_value : LIST OF maths_value
) : maths_tuple_literal;
RETURN (maths_tuple_literal(lit_value) || generic_literal() ||
simple_generic_expression() || generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_parallel_composed_function (
srcdom : maths_space_or_function;
prepfuncs : LIST [2:?] OF maths_function;
finfunc : maths_function_select
) : parallel_composed_function;
RETURN (parallel_composed_function(srcdom, prepfuncs, finfunc) ||
maths_function() || generic_expression() ||
multiple_arity_generic_expression(convert_to_operands_prcmfn(srcdom,
prepfuncs, finfunc)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_polar_complex_number_region (
centre : complex_number_literal;
dis_constraint : real_interval;
dir_constraint : finite_real_interval
) : polar_complex_number_region;
RETURN (polar_complex_number_region(centre, dis_constraint,
dir_constraint) || maths_space() || generic_expression() ||
generic_literal() || simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_real_interval_from_min (
min : REAL;
minclo : open_closed
) : real_interval_from_min;
RETURN (real_interval_from_min(min, minclo) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_real_interval_to_max (
max : REAL;
maxclo : open_closed
) : real_interval_to_max;
RETURN (real_interval_to_max(max, maxclo) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_real_literal (
lit_value : REAL
) : real_literal;
RETURN (real_literal() || literal_number(lit_value) ||
simple_numeric_expression() || numeric_expression() || expression()
|| generic_expression() || simple_generic_expression() ||
generic_literal());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_string_literal (
lit_value : STRING
) : string_literal;
RETURN (string_literal(lit_value) || simple_string_expression() ||
string_expression() || expression() || generic_expression() ||
simple_generic_expression() || generic_literal());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION make_uniform_product_space (
base : maths_space;
exponent : positive_integer
) : uniform_product_space;
RETURN (uniform_product_space(base, exponent) || maths_space() ||
generic_expression() || generic_literal() ||
simple_generic_expression());
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION max_exists (
spc : maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
RETURN (bool((((schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR
(schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types)) OR (
schema_prefix + 'FINITE_REAL_INTERVAL' IN types)) OR (schema_prefix +
'REAL_INTERVAL_TO_MAX' IN types)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION max_included (
spc : maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
IF (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (
schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types) THEN
RETURN (TRUE);
END_IF;
IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
RETURN (bool(spc\finite_real_interval.max_closure = closed));
END_IF;
IF schema_prefix + 'REAL_INTERVAL_TO_MAX' IN types THEN
RETURN (bool(spc\real_interval_to_max.max_closure = closed));
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION md_pmi_name_and_type_correlation (
input : annotation_placeholder_occurrence
) : BOOLEAN;
LOCAL
pmi_role : STRING := input\annotation_placeholder_occurrence.item\
representation_item.name;
dmiawps : SET OF draughting_model_item_association_with_placeholder :=
input\annotation_placeholder_occurrence.
the_draughting_model_item_association_with_placeholders;
v : SET OF STRING := [];
END_LOCAL;
IF SIZEOF(dmiawps) = 1 THEN
v := TYPEOF(dmiawps[1]\draughting_model_item_association.definition);
ELSE
RETURN (FALSE);
END_IF;
IF NOT (pmi_role IN [ 'angular dimension', 'angularity',
'circular runout', 'circularity', 'coaxiality', 'concentricity',
'curve dimension', 'cylindricity', 'datum', 'datum target',
'diameter dimension', 'flatness', 'general dimension', 'general note'
, 'general tolerance', 'label', 'linear dimension', 'note',
'ordinate dimension', 'parallelism', 'perpendicularity', 'position',
'profile of line', 'profile of surface', 'radial dimension',
'roundness', 'runout', 'straightness', 'surface roughness',
'symmetry', 'total runout' ]) THEN
RETURN (?);
END_IF;
CASE pmi_role OF
'angular dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULAR_LOCATION'
IN v THEN
RETURN (TRUE);
END_IF;
'angularity' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANGULARITY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'circular runout' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCULAR_RUNOUT_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'circularity' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDNESS_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'coaxiality' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COAXIALITY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'concentricity' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONCENTRICITY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'curve dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN v THEN
RETURN (TRUE);
END_IF;
'cylindricity' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CYLINDRICITY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'datum' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM' IN v THEN
RETURN (TRUE);
END_IF;
'datum target' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DATUM_TARGET' IN
v THEN
RETURN (TRUE);
END_IF;
'diameter dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN v THEN
RETURN (TRUE);
END_IF;
'flatness' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FLATNESS_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'general dimension' :
IF SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_LOCATION'
] * v) = 1 THEN
RETURN (TRUE);
END_IF;
'general note' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION'
IN v THEN
RETURN (TRUE);
END_IF;
'general tolerance' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GEOMETRIC_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'label' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION'
IN v THEN
RETURN (TRUE);
END_IF;
'linear dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN v THEN
RETURN (TRUE);
END_IF;
'note' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION'
IN v THEN
RETURN (TRUE);
END_IF;
'ordinate dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN v THEN
RETURN (TRUE);
END_IF;
'parallelism' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARALLELISM_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'perpendicularity' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PERPENDICULARITY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'position' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITION_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'profile of line' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE_PROFILE_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'profile of surface' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_PROFILE_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'radial dimension' :
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE'
IN v THEN
RETURN (TRUE);
END_IF;
'roundness' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDNESS_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'runout' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOTAL_RUNOUT_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'straightness' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.STRAIGHTNESS_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'surface roughness' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION'
IN v THEN
RETURN (TRUE);
END_IF;
'symmetry' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SYMMETRY_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
'total runout' :
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TOTAL_RUNOUT_TOLERANCE'
IN v THEN
RETURN (TRUE);
END_IF;
OTHERWISE :
RETURN (FALSE);
END_CASE;
END_FUNCTION; -- 10303-113: mechanical_design_schema
FUNCTION md_valid_content_in_geometric_set_for_placeholder (
input : geometric_set
) : BOOLEAN;
LOCAL
pass : BOOLEAN := TRUE;
boxes : BAG OF planar_box := [];
texts : BAG OF annotation_text := [];
placements : BAG OF placement := [];
points : BAG OF point := [];
END_LOCAL;
REPEAT i := LOINDEX(input\geometric_set.elements) TO HIINDEX(input\
geometric_set.elements);
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT' IN TYPEOF(
input\geometric_set.elements[i])) AND NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_SURFACE' ] *
TYPEOF(input\geometric_set.elements[i])) = 1) THEN
pass := FALSE;
ELSE
points := points + input\geometric_set.elements[i];
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANAR_BOX' IN TYPEOF
(input\geometric_set.elements[i]) THEN
boxes := boxes + input\geometric_set.elements[i];
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ANNOTATION_TEXT' IN
TYPEOF(input\geometric_set.elements[i]) THEN
texts := texts + input\geometric_set.elements[i];
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN TYPEOF(
input\geometric_set.elements[i]) THEN
placements := placements + input\geometric_set.elements[i];
END_IF;
END_REPEAT;
IF SIZEOF(boxes) > 1 THEN
pass := FALSE;
END_IF;
IF SIZEOF(texts) > 1 THEN
pass := FALSE;
END_IF;
IF SIZEOF(placements) <> 1 THEN
pass := FALSE;
END_IF;
RETURN (pass);
END_FUNCTION; -- 10303-113: mechanical_design_schema
FUNCTION member_of (
val : GENERIC : G;
spc : maths_space
) : LOGICAL;
FUNCTION fedex
(val : AGGREGATE OF GENERIC : x;
i : INTEGER ) : GENERIC : x;
RETURN (val[i]);
END_FUNCTION;
LOCAL
v : maths_value := simplify_maths_value(convert_to_maths_value(val));
vtypes : SET OF STRING := stripped_typeof(v);
s : maths_space := simplify_maths_space(spc);
stypes : SET OF STRING := stripped_typeof(s);
tmp_int : INTEGER;
tmp_real : REAL;
tmp_cmplx : complex_number_literal;
lgcl : LOGICAL;
cum : LOGICAL;
vspc : maths_space;
sspc : maths_space;
smem : SET OF maths_value;
factors : LIST OF maths_space;
END_LOCAL;
IF NOT EXISTS(s) THEN
RETURN (FALSE);
END_IF;
IF NOT EXISTS(v) THEN
RETURN (s = the_generics);
END_IF;
IF ((('GENERIC_EXPRESSION' IN vtypes) AND NOT ('MATHS_SPACE' IN vtypes)
) AND NOT ('MATHS_FUNCTION' IN vtypes)) AND NOT (
'COMPLEX_NUMBER_LITERAL' IN vtypes) THEN
IF has_values_space(v) THEN
vspc := values_space_of(v);
IF subspace_of(vspc, s) THEN
RETURN (TRUE);
END_IF;
IF NOT compatible_spaces(vspc, s) THEN
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_IF;
RETURN (UNKNOWN);
END_IF;
IF 'ELEMENTARY_SPACE' IN stypes THEN
CASE s\elementary_space.space_id OF
es_numbers :
RETURN (('NUMBER' IN vtypes) OR ('COMPLEX_NUMBER_LITERAL' IN
vtypes));
es_complex_numbers :
RETURN ('COMPLEX_NUMBER_LITERAL' IN vtypes);
es_reals :
RETURN (('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes));
es_integers :
RETURN ('INTEGER' IN vtypes);
es_logicals :
RETURN ('LOGICAL' IN vtypes);
es_booleans :
RETURN ('BOOLEAN' IN vtypes);
es_strings :
RETURN ('STRING' IN vtypes);
es_binarys :
RETURN ('BINARY' IN vtypes);
es_maths_spaces :
RETURN ('MATHS_SPACE' IN vtypes);
es_maths_functions :
RETURN ('MATHS_FUNCTION' IN vtypes);
es_generics :
RETURN (TRUE);
END_CASE;
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN stypes THEN
IF 'INTEGER' IN vtypes THEN
tmp_int := v;
RETURN ((s\finite_integer_interval.min <= tmp_int) AND (tmp_int <=
s\finite_integer_interval.max));
END_IF;
RETURN (FALSE);
END_IF;
IF 'INTEGER_INTERVAL_FROM_MIN' IN stypes THEN
IF 'INTEGER' IN vtypes THEN
tmp_int := v;
RETURN (s\integer_interval_from_min.min <= tmp_int);
END_IF;
RETURN (FALSE);
END_IF;
IF 'INTEGER_INTERVAL_TO_MAX' IN stypes THEN
IF 'INTEGER' IN vtypes THEN
tmp_int := v;
RETURN (tmp_int <= s\integer_interval_to_max.max);
END_IF;
RETURN (FALSE);
END_IF;
IF 'FINITE_REAL_INTERVAL' IN stypes THEN
IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
tmp_real := v;
IF s\finite_real_interval.min_closure = closed THEN
IF s\finite_real_interval.max_closure = closed THEN
RETURN ((s\finite_real_interval.min <= tmp_real) AND (tmp_real
<= s\finite_real_interval.max));
ELSE
RETURN ((s\finite_real_interval.min <= tmp_real) AND (tmp_real
< s\finite_real_interval.max));
END_IF;
ELSE
IF s\finite_real_interval.max_closure = closed THEN
RETURN ((s\finite_real_interval.min < tmp_real) AND (tmp_real
<= s\finite_real_interval.max));
ELSE
RETURN ((s\finite_real_interval.min < tmp_real) AND (tmp_real <
s\finite_real_interval.max));
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'REAL_INTERVAL_FROM_MIN' IN stypes THEN
IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
tmp_real := v;
IF s\real_interval_from_min.min_closure = closed THEN
RETURN (s\real_interval_from_min.min <= tmp_real);
ELSE
RETURN (s\real_interval_from_min.min < tmp_real);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'REAL_INTERVAL_TO_MAX' IN stypes THEN
IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
tmp_real := v;
IF s\real_interval_to_max.max_closure = closed THEN
RETURN (tmp_real <= s\real_interval_to_max.max);
ELSE
RETURN (tmp_real < s\real_interval_to_max.max);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN stypes THEN
IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
RETURN (member_of(v\complex_number_literal.real_part, s\
cartesian_complex_number_region.real_constraint) AND member_of(v\
complex_number_literal.imag_part, s\
cartesian_complex_number_region.imag_constraint));
END_IF;
RETURN (FALSE);
END_IF;
IF 'POLAR_COMPLEX_NUMBER_REGION' IN stypes THEN
IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
tmp_cmplx := v;
tmp_cmplx.real_part := tmp_cmplx.real_part - s\
polar_complex_number_region.centre.real_part;
tmp_cmplx.imag_part := tmp_cmplx.imag_part - s\
polar_complex_number_region.centre.imag_part;
tmp_real := SQRT(tmp_cmplx.real_part ** 2 + tmp_cmplx.imag_part **
2);
IF NOT member_of(tmp_real, s\polar_complex_number_region.
distance_constraint) THEN
RETURN (FALSE);
END_IF;
IF tmp_real = 0.0 THEN
RETURN (TRUE);
END_IF;
tmp_real := atan2(tmp_cmplx.imag_part, tmp_cmplx.real_part);
RETURN (member_of(tmp_real, s\polar_complex_number_region.
direction_constraint) OR member_of(tmp_real + 2.0 * PI, s\
polar_complex_number_region.direction_constraint));
END_IF;
RETURN (FALSE);
END_IF;
IF 'FINITE_SPACE' IN stypes THEN
smem := s\finite_space.members;
cum := FALSE;
REPEAT i := 1 TO SIZEOF(smem);
cum := cum OR equal_maths_values(v, smem[i]);
IF cum = TRUE THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
IF 'LIST' IN vtypes THEN
IF SIZEOF(v) = s\uniform_product_space.exponent THEN
sspc := s\uniform_product_space.base;
cum := TRUE;
REPEAT i := 1 TO SIZEOF(v);
cum := cum AND member_of(v[i], sspc);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
IF 'LIST' IN vtypes THEN
factors := s\listed_product_space.factors;
IF SIZEOF(v) = SIZEOF(factors) THEN
cum := TRUE;
REPEAT i := 1 TO SIZEOF(v);
cum := cum AND member_of(v[i], factors[i]);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
IF 'LIST' IN vtypes THEN
sspc := s\extended_tuple_space.base;
tmp_int := space_dimension(sspc);
IF SIZEOF(v) >= tmp_int THEN
cum := TRUE;
REPEAT i := 1 TO tmp_int;
cum := cum AND member_of(v[i], factor_space(sspc, i));
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
sspc := s\extended_tuple_space.extender;
REPEAT i := tmp_int + 1 TO SIZEOF(v);
cum := cum AND member_of(v[i], sspc);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'FUNCTION_SPACE' IN stypes THEN
IF 'MATHS_FUNCTION' IN vtypes THEN
vspc := v\maths_function.domain;
sspc := s\function_space.domain_argument;
CASE s\function_space.domain_constraint OF
sc_equal :
cum := equal_maths_spaces(vspc, sspc);
sc_subspace :
cum := subspace_of(vspc, sspc);
sc_member :
cum := member_of(vspc, sspc);
END_CASE;
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
vspc := v\maths_function.range;
sspc := s\function_space.range_argument;
CASE s\function_space.range_constraint OF
sc_equal :
cum := cum AND equal_maths_spaces(vspc, sspc);
sc_subspace :
cum := cum AND subspace_of(vspc, sspc);
sc_member :
cum := cum AND member_of(vspc, sspc);
END_CASE;
RETURN (cum);
END_IF;
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION min_exists (
spc : maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
RETURN (bool((((schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR
(schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types)) OR (
schema_prefix + 'FINITE_REAL_INTERVAL' IN types)) OR (schema_prefix +
'REAL_INTERVAL_FROM_MIN' IN types)));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION min_included (
spc : maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
IF (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (
schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types) THEN
RETURN (TRUE);
END_IF;
IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
RETURN (bool(spc\finite_real_interval.min_closure = closed));
END_IF;
IF schema_prefix + 'REAL_INTERVAL_FROM_MIN' IN types THEN
RETURN (bool(spc\real_interval_from_min.min_closure = closed));
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION mixed_loop_type_set (
l : SET [0:?] OF loop
) : LOGICAL;
LOCAL
poly_loop_type : LOGICAL;
END_LOCAL;
IF SIZEOF(l) <= 1 THEN
RETURN (FALSE);
END_IF;
poly_loop_type :=
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLY_LOOP' IN TYPEOF(l[1
]);
REPEAT i := 2 TO SIZEOF(l);
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLY_LOOP' IN TYPEOF
(l[i])) <> poly_loop_type THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
RETURN (FALSE);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION msb_shells (
brep : manifold_solid_brep
) : SET [1:?] OF closed_shell;
LOCAL
return_set : SET [1:?] OF closed_shell := [ brep.outer ];
END_LOCAL;
IF SIZEOF(QUERY (msbtype <* TYPEOF(brep)| msbtype LIKE
'*BREP_WITH_VOIDS')) >= 1 THEN
return_set := return_set + brep\brep_with_voids.voids;
END_IF;
RETURN (return_set);
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION msf_curve_check (
cv : representation_item
) : BOOLEAN;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D' ] *
TYPEOF(cv)) > 1 THEN
RETURN (FALSE);
END_IF;
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE' IN
TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\
b_spline_curve.self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE' ] * TYPEOF(cv))
= 1 THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(cv) THEN
RETURN (msf_curve_check(cv\curve_replica.parent_curve));
ELSE
IF ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D'
IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE)
OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' IN
TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(cv) THEN
RETURN (msf_curve_check(cv\pcurve.reference_to_curve\
representation.items[1]) AND msf_surface_check(cv\pcurve.
basis_surface));
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(cv) THEN
IF msf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE'
IN TYPEOF(cv\surface_curve.associated_geometry[i])
THEN
IF NOT msf_surface_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE'
IN TYPEOF(cv\surface_curve.associated_geometry[i])
THEN
IF NOT msf_curve_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE'
IN TYPEOF(cv) THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
FUNCTION msf_surface_check (
surf : surface
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE' IN
TYPEOF(surf) THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_SURFACE' IN
TYPEOF(surf) THEN
RETURN (msf_curve_check(surf\swept_surface.swept_curve));
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_SURFACE' IN
TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE)
OR (surf\offset_surface.self_intersect = UNKNOWN) THEN
RETURN (msf_surface_check(surf\offset_surface.basis_surface));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_REPLICA'
IN TYPEOF(surf) THEN
RETURN (msf_surface_check(surf\surface_replica.parent_surface))
;
ELSE
IF (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE'
IN TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect =
FALSE) OR (surf\b_spline_surface.self_intersect = UNKNOWN)
THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
FUNCTION nmsf_curve_check (
cv : representation_item
) : BOOLEAN;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D' ] *
TYPEOF(cv)) > 1 THEN
RETURN (FALSE);
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE' IN
TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\
b_spline_curve.self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE' ] * TYPEOF(cv)
) = 1 THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(cv) THEN
RETURN (nmsf_curve_check(cv\curve_replica.parent_curve));
ELSE
IF ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D'
IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect =
FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND
NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE'
IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE' IN
TYPEOF(cv) THEN
RETURN (nmsf_curve_check(cv\pcurve.reference_to_curve\
representation.items[1]) AND nmsf_surface_check(cv\pcurve
.basis_surface));
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_CURVE'
IN TYPEOF(cv) THEN
IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry);
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE'
IN TYPEOF(cv\surface_curve.associated_geometry[i])
THEN
IF NOT nmsf_surface_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PCURVE'
IN TYPEOF(cv\surface_curve.associated_geometry[i
]) THEN
IF NOT nmsf_curve_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE'
IN TYPEOF(cv) THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-508: aic_non_manifold_surface
FUNCTION nmsf_surface_check (
surf : surface
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE' IN
TYPEOF(surf) THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SWEPT_SURFACE' IN
TYPEOF(surf) THEN
RETURN (nmsf_curve_check(surf\swept_surface.swept_curve));
ELSE
IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_SURFACE' IN
TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE)
OR (surf\offset_surface.self_intersect = UNKNOWN) THEN
RETURN (nmsf_surface_check(surf\offset_surface.basis_surface));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SURFACE_REPLICA'
IN TYPEOF(surf) THEN
RETURN (nmsf_surface_check(surf\surface_replica.parent_surface)
);
ELSE
IF (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_SURFACE'
IN TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect =
FALSE) OR (surf\b_spline_surface.self_intersect = UNKNOWN)
THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-508: aic_non_manifold_surface
FUNCTION no_cyclic_domain_reference (
ref : maths_space_or_function;
used : SET OF maths_function
) : BOOLEAN;
LOCAL
typenames : SET OF STRING := TYPEOF(ref);
func : maths_function;
END_LOCAL;
IF NOT EXISTS(ref) OR NOT EXISTS(used) THEN
RETURN (FALSE);
END_IF;
IF schema_prefix + 'MATHS_SPACE' IN typenames THEN
RETURN (TRUE);
END_IF;
func := ref;
IF func IN used THEN
RETURN (FALSE);
END_IF;
IF schema_prefix + 'CONSTANT_FUNCTION' IN typenames THEN
RETURN (no_cyclic_domain_reference(func\constant_function.
source_of_domain, used + [ func ]));
END_IF;
IF schema_prefix + 'SELECTOR_FUNCTION' IN typenames THEN
RETURN (no_cyclic_domain_reference(func\selector_function.
source_of_domain, used + [ func ]));
END_IF;
IF schema_prefix + 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
RETURN (no_cyclic_domain_reference(func\parallel_composed_function.
source_of_domain, used + [ func ]));
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION no_cyclic_space_reference (
spc : maths_space;
refs : SET OF maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING;
refs_plus : SET OF maths_space;
END_LOCAL;
IF spc IN refs THEN
RETURN (FALSE);
END_IF;
types := TYPEOF(spc);
refs_plus := refs + spc;
IF schema_prefix + 'FINITE_SPACE' IN types THEN
RETURN (bool(SIZEOF(QUERY (sp <* QUERY (mem <* spc\finite_space.
members| (schema_prefix + 'MATHS_SPACE' IN TYPEOF(mem)))| NOT
no_cyclic_space_reference(sp, refs_plus))) = 0));
END_IF;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN types THEN
RETURN (no_cyclic_space_reference(spc\uniform_product_space.base,
refs_plus));
END_IF;
IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN types THEN
RETURN (bool(SIZEOF(QUERY (fac <* spc\listed_product_space.factors|
NOT no_cyclic_space_reference(fac, refs_plus))) = 0));
END_IF;
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
RETURN (no_cyclic_space_reference(spc\extended_tuple_space.base,
refs_plus) AND no_cyclic_space_reference(spc\extended_tuple_space.
extender, refs_plus));
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION nondecreasing (
lr : LIST OF REAL
) : BOOLEAN;
IF NOT EXISTS(lr) THEN
RETURN (FALSE);
END_IF;
REPEAT j := 2 TO SIZEOF(lr);
IF lr[j] < lr[(j - 1)] THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION normalise (
arg : vector_or_direction
) : vector_or_direction;
LOCAL
ndim : INTEGER;
v : direction := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
result : vector_or_direction;
vec : vector := dummy_gri || vector(v, 1.0);
mag : REAL;
END_LOCAL;
IF NOT EXISTS(arg) THEN
result := ?;
ELSE
ndim := arg.dim;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(arg
) THEN
BEGIN
v := dummy_gri || direction(arg\vector.orientation.
direction_ratios);
IF arg\vector.magnitude = 0.0 THEN
RETURN (?);
ELSE
vec := dummy_gri || vector(v, 1.0);
END_IF;
END;
ELSE
v := dummy_gri || direction(arg.direction_ratios);
END_IF;
mag := 0.0;
REPEAT i := 1 TO ndim;
mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
mag := SQRT(mag);
REPEAT i := 1 TO ndim;
v.direction_ratios[i] := v.direction_ratios[i] / mag;
END_REPEAT;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(
arg) THEN
vec.orientation := v;
result := vec;
ELSE
result := v;
END_IF;
ELSE
RETURN (?);
END_IF;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION number_superspace_of (
spc : maths_space
) : elementary_space;
IF subspace_of_es(spc, es_integers) THEN
RETURN (the_integers);
END_IF;
IF subspace_of_es(spc, es_reals) THEN
RETURN (the_reals);
END_IF;
IF subspace_of_es(spc, es_complex_numbers) THEN
RETURN (the_complex_numbers);
END_IF;
IF subspace_of_es(spc, es_numbers) THEN
RETURN (the_numbers);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION number_tuple_subspace_check (
spc : maths_space
) : LOGICAL;
LOCAL
types : SET OF STRING := stripped_typeof(spc);
factors : LIST OF maths_space;
cum : LOGICAL := TRUE;
END_LOCAL;
IF 'UNIFORM_PRODUCT_SPACE' IN types THEN
RETURN (subspace_of_es(spc\uniform_product_space.base, es_numbers));
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN types THEN
factors := spc\listed_product_space.factors;
REPEAT i := 1 TO SIZEOF(factors);
cum := cum AND subspace_of_es(factors[i], es_numbers);
END_REPEAT;
RETURN (cum);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types THEN
cum := subspace_of_es(spc\extended_tuple_space.extender, es_numbers);
cum := cum AND number_tuple_subspace_check(spc\extended_tuple_space.
base);
RETURN (cum);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION one_tuples_of (
spc : maths_space
) : tuple_space;
RETURN (make_uniform_product_space(spc, 1));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION open_shell_reversed (
a_shell : open_shell
) : oriented_open_shell;
LOCAL
the_reverse : oriented_open_shell;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_OPEN_SHELL' IN
TYPEOF(a_shell) THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell\oriented_open_shell.open_shell_element,
NOT a_shell\oriented_open_shell.orientation);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION orthogonal_complement (
vec : direction
) : direction;
LOCAL
result : direction;
END_LOCAL;
IF (vec.dim <> 2) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
result := dummy_gri || direction([ -vec.direction_ratios[2], vec.
direction_ratios[1] ]);
RETURN (result);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION parallel_composed_function_composability_check (
funcs : LIST OF maths_function;
final : maths_function_select
) : BOOLEAN;
LOCAL
tplsp : tuple_space := the_zero_tuple_space;
finfun : maths_function := convert_to_maths_function(final);
END_LOCAL;
REPEAT i := 1 TO SIZEOF(funcs);
tplsp := assoc_product_space(tplsp, funcs[i].range);
END_REPEAT;
RETURN (compatible_spaces(tplsp, finfun.domain));
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION parallel_composed_function_domain_check (
comdom : tuple_space;
funcs : LIST OF maths_function
) : BOOLEAN;
REPEAT i := 1 TO SIZEOF(funcs);
IF NOT compatible_spaces(comdom, funcs[i].domain) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION parse_express_identifier (
s : STRING;
i : positive_integer
) : positive_integer;
LOCAL
k : positive_integer;
END_LOCAL;
k := i;
IF i <= LENGTH(s) THEN
IF s[i] LIKE '@' THEN
REPEAT UNTIL (k > LENGTH(s)) OR ((s[k] <> '_') AND NOT (s[k] LIKE
'@')) AND NOT (s[k] LIKE '#');
k := k + 1;
END_REPEAT;
END_IF;
END_IF;
RETURN (k);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION partial_derivative_check (
domain : tuple_space;
d_vars : LIST [1:?] OF input_selector
) : BOOLEAN;
LOCAL
domn : tuple_space := domain;
fspc : maths_space;
dim : INTEGER;
k : INTEGER;
END_LOCAL;
IF (space_dimension(domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN
TYPEOF(factor1(domain))) THEN
domn := factor1(domain);
END_IF;
dim := space_dimension(domn);
REPEAT i := 1 TO SIZEOF(d_vars);
k := d_vars[i];
IF k > dim THEN
RETURN (FALSE);
END_IF;
fspc := factor_space(domn, k);
IF NOT subspace_of_es(fspc, es_reals) AND NOT subspace_of_es(fspc,
es_complex_numbers) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION path_head_to_tail (
a_path : path
) : LOGICAL;
LOCAL
n : INTEGER;
p : LOGICAL := TRUE;
END_LOCAL;
n := SIZEOF(a_path.edge_list);
REPEAT i := 2 TO n;
p := p AND (a_path.edge_list[(i - 1)].edge_end :=: a_path.edge_list[i
].edge_start);
END_REPEAT;
RETURN (p);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION path_reversed (
a_path : path
) : oriented_path;
LOCAL
the_reverse : oriented_path;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ORIENTED_PATH' IN
TYPEOF(a_path) THEN
the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.
edge_list)) || oriented_path(a_path\oriented_path.path_element, NOT
a_path\oriented_path.orientation);
ELSE
the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.
edge_list)) || oriented_path(a_path, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION plane_angle_for_pair_in_radian (
pair : kinematic_pair;
angle : plane_angle_measure
) : plane_angle_measure;
LOCAL
converted_angle : plane_angle_measure := angle;
link_rep : kinematic_link_representation := representation_of_link(pair
.joint.edge_start);
link_cntxt : representation_context;
pa_units : SET OF unit := [];
pau : unit;
END_LOCAL;
link_cntxt := link_rep\representation.context_of_items;
IF NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT'
IN TYPEOF(link_cntxt)) THEN
RETURN (?);
END_IF;
pa_units := QUERY (unit <* link_cntxt\global_unit_assigned_context.
units| 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_UNIT'
IN TYPEOF(unit));
IF SIZEOF(pa_units) <> 1 THEN
RETURN (?);
END_IF;
pau := pa_units[1];
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SI_UNIT' IN TYPEOF
(pau)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONVERSION_BASED_UNIT'
IN TYPEOF(pau)) THEN
RETURN (?);
END_IF;
REPEAT WHILE
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONVERSION_BASED_UNIT'
IN TYPEOF(pau);
converted_angle := converted_angle * pau\conversion_based_unit.
conversion_factor.value_component;
pau := pau\conversion_based_unit.conversion_factor.unit_component;
IF NOT ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SI_UNIT' IN
TYPEOF(pau)) AND NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONVERSION_BASED_UNIT'
IN TYPEOF(pau)) OR NOT (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_UNIT' IN
TYPEOF(pau)) THEN
RETURN (?);
END_IF;
END_REPEAT;
IF pau\si_unit.name <> si_unit_name.radian THEN
RETURN (?);
END_IF;
CASE pau\si_unit.prefix OF
si_prefix.exa :
RETURN (1.0E+018 * converted_angle);
si_prefix.peta :
RETURN (1.0E+015 * converted_angle);
si_prefix.tera :
RETURN (1.0E+012 * converted_angle);
si_prefix.giga :
RETURN (1.0E+009 * converted_angle);
si_prefix.mega :
RETURN (1.0E+006 * converted_angle);
si_prefix.kilo :
RETURN (1000.00 * converted_angle);
si_prefix.hecto :
RETURN (100.000 * converted_angle);
si_prefix.deca :
RETURN (10.0 * converted_angle);
si_prefix.deci :
RETURN (0.100000 * converted_angle);
si_prefix.centi :
RETURN (0.0100000 * converted_angle);
si_prefix.milli :
RETURN (0.00100000 * converted_angle);
si_prefix.micro :
RETURN (1.0E-006 * converted_angle);
si_prefix.nano :
RETURN (1.0E-009 * converted_angle);
si_prefix.pico :
RETURN (1.0E-012 * converted_angle);
si_prefix.femto :
RETURN (1.0E-015 * converted_angle);
si_prefix.atto :
RETURN (1.0E-018 * converted_angle);
OTHERWISE :
RETURN (converted_angle);
END_CASE;
END_FUNCTION; -- 10303-105: kinematic_structure_schema
FUNCTION real_max (
spc : maths_space
) : REAL;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types THEN
RETURN (spc\finite_integer_interval.max);
END_IF;
IF schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types THEN
RETURN (spc\integer_interval_to_max.max);
END_IF;
IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
RETURN (spc\finite_real_interval.max);
END_IF;
IF schema_prefix + 'REAL_INTERVAL_TO_MAX' IN types THEN
RETURN (spc\real_interval_to_max.max);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION real_min (
spc : maths_space
) : REAL;
LOCAL
types : SET OF STRING := TYPEOF(spc);
END_LOCAL;
IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types THEN
RETURN (spc\finite_integer_interval.min);
END_IF;
IF schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types THEN
RETURN (spc\integer_interval_from_min.min);
END_IF;
IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
RETURN (spc\finite_real_interval.min);
END_IF;
IF schema_prefix + 'REAL_INTERVAL_FROM_MIN' IN types THEN
RETURN (spc\real_interval_from_min.min);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION regular_indexing (
sub : LIST OF INTEGER;
base : zero_or_one;
shape : LIST [1:?] OF positive_integer;
inc : LIST [1:?] OF INTEGER;
first : INTEGER
) : INTEGER;
LOCAL
k : INTEGER;
index : INTEGER;
END_LOCAL;
IF (((NOT EXISTS(sub) OR NOT EXISTS(base)) OR NOT EXISTS(shape)) OR NOT
EXISTS(inc)) OR NOT EXISTS(first) THEN
RETURN (?);
END_IF;
IF (SIZEOF(sub) <> SIZEOF(inc)) OR (SIZEOF(sub) <> SIZEOF(shape)) THEN
RETURN (?);
END_IF;
index := first;
REPEAT j := 1 TO SIZEOF(sub);
IF NOT EXISTS(sub[j]) OR NOT EXISTS(inc[j]) THEN
RETURN (?);
END_IF;
k := sub[j] - base;
IF NOT ((0 <= k) AND (k < shape[j])) THEN
RETURN (?);
END_IF;
index := index + k * inc[j];
END_REPEAT;
RETURN (index);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION remove_first (
alist : LIST OF GENERIC : GEN
) : LIST OF GENERIC : GEN;
LOCAL
blist : LIST OF GENERIC : GEN := alist;
END_LOCAL;
IF SIZEOF(blist) > 0 THEN
REMOVE( blist, 1 );
END_IF;
RETURN (blist);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION repackage (
tspace : tuple_space;
repckg : repackage_options
) : tuple_space;
CASE repckg OF
ro_nochange :
RETURN (tspace);
ro_wrap_as_tuple :
RETURN (one_tuples_of(tspace));
ro_unwrap_tuple :
RETURN (factor1(tspace));
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION representation_of_link (
link : kinematic_link
) : kinematic_link_representation;
RETURN (?);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
FUNCTION same_side (
plane_pts : LIST [3:3] OF cartesian_point;
test_points : LIST [2:?] OF cartesian_point
) : BOOLEAN;
LOCAL
val1 : REAL;
val2 : REAL;
n : INTEGER;
END_LOCAL;
IF (plane_pts[1].dim = 2) OR (test_points[1].dim = 2) THEN
RETURN (?);
END_IF;
n := SIZEOF(test_points);
val1 := above_plane(plane_pts[1], plane_pts[2], plane_pts[3],
test_points[1]);
REPEAT i := 2 TO n;
val2 := above_plane(plane_pts[1], plane_pts[2], plane_pts[3],
test_points[i]);
IF val1 * val2 <= 0.0 THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION scalar_times_vector (
scalar : REAL;
vec : vector_or_direction
) : vector;
LOCAL
v : direction;
mag : REAL;
result : vector;
END_LOCAL;
IF NOT EXISTS(scalar) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(vec
) THEN
v := dummy_gri || direction(vec\vector.orientation.direction_ratios
);
mag := scalar * vec\vector.magnitude;
ELSE
v := dummy_gri || direction(vec.direction_ratios);
mag := scalar;
END_IF;
IF mag < 0.0 THEN
REPEAT i := 1 TO SIZEOF(v.direction_ratios);
v.direction_ratios[i] := -v.direction_ratios[i];
END_REPEAT;
mag := -mag;
END_IF;
result := dummy_gri || vector(normalise(v), mag);
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION second_proj_axis (
z_axis : direction;
x_axis : direction;
arg : direction
) : direction;
LOCAL
y_axis : vector;
v : direction;
temp : vector;
END_LOCAL;
IF NOT EXISTS(arg) THEN
v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
ELSE
v := arg;
END_IF;
temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
y_axis := vector_difference(v, temp);
temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
y_axis := vector_difference(y_axis, temp);
y_axis := normalise(y_axis);
RETURN (y_axis.orientation);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION set_of_topology_reversed (
a_set : set_of_reversible_topology_item
) : set_of_reversible_topology_item;
LOCAL
the_reverse : set_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_set);
the_reverse := the_reverse + topology_reversed(a_set[i]);
END_REPEAT;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION shape_of_array (
func : maths_function
) : LIST OF positive_integer;
LOCAL
tspace : tuple_space;
temp : maths_space;
result : LIST OF positive_integer := [];
END_LOCAL;
IF schema_prefix + 'EXPLICIT_TABLE_FUNCTION' IN TYPEOF(func) THEN
RETURN (func\explicit_table_function.shape);
END_IF;
tspace := func.domain;
IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN
TYPEOF(factor1(tspace))) THEN
tspace := factor1(tspace);
END_IF;
REPEAT i := 1 TO space_dimension(tspace);
temp := factor_space(tspace, i);
IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp))
THEN
RETURN (?);
END_IF;
INSERT( result, temp\finite_integer_interval.size, i - 1 );
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION shell_reversed (
a_shell : shell
) : shell;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_SHELL' IN TYPEOF(
a_shell) THEN
RETURN (open_shell_reversed(a_shell));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CLOSED_SHELL' IN
TYPEOF(a_shell) THEN
RETURN (closed_shell_reversed(a_shell));
ELSE
RETURN (?);
END_IF;
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION simplify_function_application (
expr : function_application
) : maths_value;
FUNCTION ctmv
(x : GENERIC : G ) : maths_value;
RETURN (convert_to_maths_value(x));
END_FUNCTION;
PROCEDURE parts
(c : complex_number_literal;
VAR x : REAL;
VAR y : REAL );
x := c.real_part;
y := c.imag_part;
END_PROCEDURE;
FUNCTION makec
(x : REAL;
y : REAL ) : complex_number_literal;
RETURN (make_complex_number_literal(x, y));
END_FUNCTION;
FUNCTION good_t
(v : maths_value;
tn : STRING ) : BOOLEAN;
LOCAL
tpl : LIST OF maths_value;
END_LOCAL;
IF 'LIST' IN TYPEOF(v) THEN
tpl := v;
REPEAT i := 1 TO SIZEOF(tpl);
IF NOT (tn IN TYPEOF(tpl[i])) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION;
CONSTANT
cnlit : STRING := schema_prefix + 'COMPLEX_NUMBER_LITERAL';
END_CONSTANT;
LOCAL
types : SET OF STRING := stripped_typeof(expr.func);
ef_val : elementary_function_enumerators;
is_elementary : BOOLEAN := FALSE;
v : maths_value;
v1 : maths_value;
v2 : maths_value;
v3 : maths_value;
vlist : LIST OF maths_value := [];
gexpr : generic_expression;
pairs : SET [1:?] OF LIST [2:2] OF maths_value;
boo : BOOLEAN;
lgc : LOGICAL;
cum : LOGICAL;
j : INTEGER;
k : INTEGER;
n : INTEGER;
p : REAL;
q : REAL;
r : REAL;
s : REAL;
T : REAL;
u : REAL;
str : STRING;
st2 : STRING;
bin : BINARY;
bi2 : BINARY;
tpl : LIST OF maths_value;
tp2 : LIST OF maths_value;
mem : SET OF maths_value := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(expr.arguments);
v := simplify_maths_value(expr.arguments[i]);
INSERT( vlist, v, i - 1 );
END_REPEAT;
IF SIZEOF(vlist) >= 1 THEN
v1 := vlist[1];
END_IF;
IF SIZEOF(vlist) >= 2 THEN
v2 := vlist[2];
END_IF;
IF SIZEOF(vlist) >= 3 THEN
v3 := vlist[3];
END_IF;
IF 'ELEMENTARY_FUNCTION_ENUMERATORS' IN types THEN
ef_val := expr.func;
is_elementary := TRUE;
END_IF;
IF 'ELEMENTARY_FUNCTION' IN types THEN
ef_val := expr.func\elementary_function.func_id;
is_elementary := TRUE;
END_IF;
IF is_elementary THEN
CASE ef_val OF
ef_and :
BEGIN
cum := TRUE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'LOGICAL' IN TYPEOF(vlist[i]) THEN
lgc := vlist[i];
cum := cum AND lgc;
IF lgc = FALSE THEN
RETURN (ctmv(FALSE));
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(cum));
END_IF;
IF cum <> TRUE THEN
INSERT( vlist, ctmv(cum), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_or :
BEGIN
cum := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'LOGICAL' IN TYPEOF(vlist[i]) THEN
lgc := vlist[i];
cum := cum OR lgc;
IF lgc = TRUE THEN
RETURN (ctmv(TRUE));
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(cum));
END_IF;
IF cum <> FALSE THEN
INSERT( vlist, ctmv(cum), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_not :
IF 'LOGICAL' IN TYPEOF(v1) THEN
lgc := v1;
RETURN (ctmv(NOT lgc));
END_IF;
ef_xor :
BEGIN
IF 'LOGICAL' IN TYPEOF(v1) THEN
lgc := v1;
IF 'LOGICAL' IN TYPEOF(v2) THEN
cum := v2;
RETURN (ctmv(lgc XOR cum));
ELSE
IF lgc = FALSE THEN
RETURN (ctmv(v2));
ELSE
IF lgc = UNKNOWN THEN
RETURN (ctmv(UNKNOWN));
ELSE
RETURN (make_function_application(ef_not, [ v2 ]));
END_IF;
END_IF;
END_IF;
ELSE
IF 'LOGICAL' IN TYPEOF(v2) THEN
lgc := v2;
IF lgc = FALSE THEN
RETURN (ctmv(v1));
ELSE
IF lgc = UNKNOWN THEN
RETURN (ctmv(UNKNOWN));
ELSE
RETURN (make_function_application(ef_not, [ v1 ]));
END_IF;
END_IF;
END_IF;
END_IF;
END;
ef_negate_i :
IF 'INTEGER' IN TYPEOF(v1) THEN
j := v1;
RETURN (ctmv(-j));
END_IF;
ef_add_i :
BEGIN
j := 0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
k := vlist[i];
j := j + k;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(j));
END_IF;
IF j <> 0 THEN
INSERT( vlist, ctmv(j), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j - k));
END_IF;
ef_multiply_i :
BEGIN
j := 1;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
k := vlist[i];
j := j * k;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(j));
END_IF;
IF j <> 1 THEN
INSERT( vlist, ctmv(j), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_divide_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j DIV k));
END_IF;
ef_mod_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j MOD k));
END_IF;
ef_exponentiate_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
n := 1;
REPEAT i := 1 TO ABS(k);
n := n * j;
END_REPEAT;
IF k < 0 THEN
n := 1 DIV n;
END_IF;
RETURN (ctmv(n));
END_IF;
ef_eq_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j = k));
END_IF;
ef_ne_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j <> k));
END_IF;
ef_gt_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j > k));
END_IF;
ef_lt_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j < k));
END_IF;
ef_ge_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j >= k));
END_IF;
ef_le_i :
IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
j := v1;
k := v2;
RETURN (ctmv(j <= k));
END_IF;
ef_abs_i :
IF 'INTEGER' IN TYPEOF(v1) THEN
j := v1;
RETURN (ctmv(ABS(j)));
END_IF;
ef_max_i :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
IF boo THEN
k := vlist[i];
IF k > j THEN
j := k;
END_IF;
ELSE
j := vlist[i];
boo := TRUE;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(j));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(j), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_min_i :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
IF boo THEN
k := vlist[i];
IF k < j THEN
j := k;
END_IF;
ELSE
j := vlist[i];
boo := TRUE;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(j));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(j), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_negate_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(-r));
END_IF;
ef_reciprocal_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(1.0 / r));
END_IF;
ef_add_r :
BEGIN
r := 0.0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'REAL' IN TYPEOF(vlist[i]) THEN
s := vlist[i];
r := r + s;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(r));
END_IF;
IF r <> 0.0 THEN
INSERT( vlist, ctmv(r), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r - s));
END_IF;
ef_multiply_r :
BEGIN
r := 1.0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'REAL' IN TYPEOF(vlist[i]) THEN
s := vlist[i];
r := r * s;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(r));
END_IF;
IF r <> 1.0 THEN
INSERT( vlist, ctmv(r), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_divide_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r / s));
END_IF;
ef_mod_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
T := r / s;
j := T DIV 1;
IF (T < 0.0) AND (j <> T) THEN
j := j - 1;
END_IF;
RETURN (ctmv(r - j * s));
END_IF;
ef_exponentiate_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r ** s));
END_IF;
ef_exponentiate_ri :
IF ('REAL' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
r := v1;
k := v2;
T := 1.0;
REPEAT i := 1 TO ABS(k);
T := T * r;
END_REPEAT;
IF k < 0 THEN
T := 1.0 / T;
END_IF;
RETURN (ctmv(T));
END_IF;
ef_eq_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r = s));
END_IF;
ef_ne_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r <> s));
END_IF;
ef_gt_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r > s));
END_IF;
ef_lt_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r < s));
END_IF;
ef_ge_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r >= s));
END_IF;
ef_le_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(r <= s));
END_IF;
ef_abs_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(ABS(r)));
END_IF;
ef_max_r :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'REAL' IN TYPEOF(vlist[i]) THEN
IF boo THEN
s := vlist[i];
IF s > r THEN
r := s;
END_IF;
ELSE
r := vlist[i];
boo := TRUE;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(r));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(r), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_min_r :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'REAL' IN TYPEOF(vlist[i]) THEN
IF boo THEN
s := vlist[i];
IF s < r THEN
r := s;
END_IF;
ELSE
r := vlist[i];
boo := TRUE;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(r));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(r), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_acos_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(ACOS(r)));
END_IF;
ef_asin_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(ASIN(r)));
END_IF;
ef_atan2_r :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (ctmv(atan2(r, s)));
END_IF;
ef_cos_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(COS(r)));
END_IF;
ef_exp_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(EXP(r)));
END_IF;
ef_ln_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(LOG(r)));
END_IF;
ef_log2_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(LOG2(r)));
END_IF;
ef_log10_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(LOG10(r)));
END_IF;
ef_sin_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(SIN(r)));
END_IF;
ef_sqrt_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(SQRT(r)));
END_IF;
ef_tan_r :
IF 'REAL' IN TYPEOF(v1) THEN
r := v1;
RETURN (ctmv(TAN(r)));
END_IF;
ef_form_c :
IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
r := v1;
s := v2;
RETURN (makec(r, s));
END_IF;
ef_rpart_c :
IF cnlit IN TYPEOF(v1) THEN
RETURN (ctmv(v1\complex_number_literal.real_part));
END_IF;
ef_ipart_c :
IF cnlit IN TYPEOF(v1) THEN
RETURN (ctmv(v1\complex_number_literal.imag_part));
END_IF;
ef_negate_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (makec(-p, -q));
END_IF;
ef_reciprocal_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
T := p * p + q * q;
RETURN (makec(p / T, -q / T));
END_IF;
ef_add_c :
BEGIN
p := 0.0;
q := 0.0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF cnlit IN TYPEOF(vlist[i]) THEN
parts( vlist[i], r, s );
p := p + r;
q := q + s;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (makec(p, q));
END_IF;
IF p * p + q * q <> 0.0 THEN
INSERT( vlist, makec(p, q), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_c :
IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
parts( v1, p, q );
parts( v2, r, s );
RETURN (makec(p - r, q - s));
END_IF;
ef_multiply_c :
BEGIN
p := 1.0;
q := 0.0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF cnlit IN TYPEOF(vlist[i]) THEN
parts( vlist[i], r, s );
p := p * r - q * s;
q := p * s + q * r;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (makec(p, q));
END_IF;
IF (p <> 1.0) OR (q <> 0.0) THEN
INSERT( vlist, makec(p, q), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_divide_c :
IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
parts( v1, p, q );
parts( v2, r, s );
T := r * r + s * s;
RETURN (makec((p * r + q * s) / T, (q * r - p * s) / T));
END_IF;
ef_exponentiate_c :
IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
parts( v1, p, q );
parts( v2, r, s );
T := 0.5 * LOG((p * p + q * q));
u := atan2(q, p);
p := r * T - s * u;
q := r * u + s * T;
r := EXP(p);
RETURN (makec(r * COS(q), r * SIN(q)));
END_IF;
ef_exponentiate_ci :
IF (cnlit IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
parts( v1, p, q );
k := v2;
r := 1.0;
s := 0.0;
REPEAT i := 1 TO ABS(k);
r := p * r - q * s;
s := p * s + q * r;
END_REPEAT;
IF k < 0 THEN
T := r * r + s * s;
r := r / T;
s := -s / T;
END_IF;
RETURN (makec(r, s));
END_IF;
ef_eq_c :
IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
parts( v1, p, q );
parts( v2, r, s );
RETURN (ctmv((p = r) AND (q = s)));
END_IF;
ef_ne_c :
IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
parts( v1, p, q );
parts( v2, r, s );
RETURN (ctmv((p <> r) OR (q <> s)));
END_IF;
ef_conjugate_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (makec(p, -q));
END_IF;
ef_abs_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (ctmv(SQRT(p * p + q * q)));
END_IF;
ef_arg_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (ctmv(atan2(q, p)));
END_IF;
ef_cos_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
T := 0.5 * EXP(-q);
u := 0.5 * EXP(q);
RETURN (makec((T + u) * COS(p), (T - u) * SIN(p)));
END_IF;
ef_exp_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (makec(EXP(p) * COS(q), EXP(p) * SIN(q)));
END_IF;
ef_ln_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
RETURN (makec(0.5 * LOG((p * p + q * q)), atan2(q, p)));
END_IF;
ef_sin_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
T := 0.5 * EXP(-q);
u := 0.5 * EXP(q);
RETURN (makec((T + u) * SIN(p), (u - T) * COS(p)));
END_IF;
ef_sqrt_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
T := SQRT(SQRT(p * p + q * q));
u := 0.5 * atan2(q, p);
RETURN (makec(T * COS(u), T * SIN(u)));
END_IF;
ef_tan_c :
IF cnlit IN TYPEOF(v1) THEN
parts( v1, p, q );
T := EXP(2.0 * q) + EXP(-2.0 * q) + 2.0 * COS(2.0 * p);
RETURN (makec(2.0 * SIN(2.0 * p) / T, (EXP(-2.0 * q) - EXP(
2.0 * q)) / T));
END_IF;
ef_subscript_s :
IF ('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
str := v1;
k := v2;
RETURN (ctmv(str[k]));
END_IF;
ef_eq_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str = st2));
END_IF;
ef_ne_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str <> st2));
END_IF;
ef_gt_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str > st2));
END_IF;
ef_lt_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str < st2));
END_IF;
ef_ge_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str >= st2));
END_IF;
ef_le_s :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
str := v1;
st2 := v2;
RETURN (ctmv(str <= st2));
END_IF;
ef_subsequence_s :
IF (('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))) AND
('INTEGER' IN TYPEOF(v3)) THEN
str := v1;
j := v2;
k := v3;
RETURN (ctmv(str[ j : k ]));
END_IF;
ef_concat_s :
BEGIN
str := '';
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'STRING' IN TYPEOF(vlist[i]) THEN
st2 := vlist[i];
str := str + st2;
REMOVE( vlist, i );
ELSE
IF str <> '' THEN
INSERT( vlist, ctmv(str), i );
str := '';
END_IF;
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(str));
END_IF;
IF str <> '' THEN
INSERT( vlist, ctmv(str), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_size_s :
IF 'STRING' IN TYPEOF(v1) THEN
str := v1;
RETURN (ctmv(LENGTH(str)));
END_IF;
ef_format :
IF ('NUMBER' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
RETURN (ctmv(FORMAT(v1, v2)));
END_IF;
ef_value :
IF 'STRING' IN TYPEOF(v1) THEN
str := v1;
RETURN (ctmv(VALUE(str)));
END_IF;
ef_like :
IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
RETURN (ctmv(v1 LIKE v2));
END_IF;
ef_subscript_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
bin := v1;
k := v2;
RETURN (ctmv(bin[k]));
END_IF;
ef_eq_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin = bi2));
END_IF;
ef_ne_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin <> bi2));
END_IF;
ef_gt_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin > bi2));
END_IF;
ef_lt_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin < bi2));
END_IF;
ef_ge_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin >= bi2));
END_IF;
ef_le_b :
IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
bin := v1;
bi2 := v2;
RETURN (ctmv(bin <= bi2));
END_IF;
ef_subsequence_b :
IF (('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))) AND
('INTEGER' IN TYPEOF(v3)) THEN
bin := v1;
j := v2;
k := v3;
RETURN (ctmv(bin[ j : k ]));
END_IF;
ef_concat_b :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'BINARY' IN TYPEOF(vlist[i]) THEN
IF boo THEN
bi2 := vlist[i];
bin := bin + bi2;
ELSE
bin := vlist[i];
boo := TRUE;
END_IF;
REMOVE( vlist, i );
ELSE
IF boo THEN
INSERT( vlist, ctmv(bin), i );
boo := FALSE;
END_IF;
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(bin));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(bin), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_size_b :
IF 'BINARY' IN TYPEOF(v1) THEN
bin := v1;
RETURN (ctmv(BLENGTH(bin)));
END_IF;
ef_subscript_t :
IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
tpl := v1;
k := v2;
RETURN (ctmv(tpl[k]));
END_IF;
ef_eq_t :
IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2)) THEN
lgc := equal_maths_values(v1, v2);
IF lgc <> UNKNOWN THEN
RETURN (ctmv(lgc));
END_IF;
END_IF;
ef_ne_t :
IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2)) THEN
lgc := equal_maths_values(v1, v2);
IF lgc <> UNKNOWN THEN
RETURN (ctmv(NOT lgc));
END_IF;
END_IF;
ef_concat_t :
BEGIN
tpl := [];
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'STRING' IN TYPEOF(vlist[i]) THEN
tp2 := vlist[i];
tpl := tpl + tp2;
REMOVE( vlist, i );
ELSE
IF SIZEOF(tpl) <> 0 THEN
INSERT( vlist, ctmv(tpl), i );
tpl := [];
END_IF;
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(tpl));
END_IF;
IF SIZEOF(tpl) <> 0 THEN
INSERT( vlist, ctmv(tpl), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_size_t :
IF 'LIST' IN TYPEOF(v1) THEN
tpl := v1;
RETURN (ctmv(SIZEOF(tpl)));
END_IF;
ef_entuple :
RETURN (ctmv(vlist));
ef_detuple :
IF 'LIST' IN TYPEOF(v1) THEN
tpl := v1;
RETURN (ctmv(tpl[1]));
END_IF;
ef_insert :
IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v3)) THEN
tpl := v1;
k := v3;
INSERT( tpl, v2, k );
RETURN (ctmv(tpl));
END_IF;
ef_remove :
IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
tpl := v1;
k := v2;
REMOVE( tpl, k );
RETURN (ctmv(tpl));
END_IF;
ef_sum_it :
IF good_t(v1, 'INTEGER') THEN
tpl := v1;
j := 0;
REPEAT i := 1 TO SIZEOF(tpl);
j := j + tpl[i];
END_REPEAT;
RETURN (ctmv(j));
END_IF;
ef_product_it :
IF good_t(v1, 'INTEGER') THEN
tpl := v1;
j := 1;
REPEAT i := 1 TO SIZEOF(tpl);
j := j * tpl[i];
END_REPEAT;
RETURN (ctmv(j));
END_IF;
ef_add_it :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF good_t(vlist[i], 'INTEGER') THEN
IF NOT boo THEN
tpl := vlist[i];
boo := TRUE;
ELSE
tp2 := vlist[i];
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT l := 1 TO SIZEOF(tpl);
tpl[j] := tpl[j] + tp2[j];
END_REPEAT;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(tpl));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(tpl), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_it :
IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER') THEN
tpl := v1;
tp2 := v2;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
tpl[i] := tpl[i] - tp2[i];
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_scalar_mult_it :
IF ('INTEGER' IN TYPEOF(v1)) AND good_t(v2, 'INTEGER') THEN
j := v1;
tpl := v2;
REPEAT i := 1 TO SIZEOF(tpl);
tpl[i] := j * tpl[i];
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_dot_prod_it :
IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER') THEN
tpl := v1;
tp2 := v2;
j := 0;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
j := j + tpl[i] * tp2[i];
END_REPEAT;
RETURN (ctmv(j));
END_IF;
ef_sum_rt :
IF good_t(v1, 'REAL') THEN
tpl := v1;
r := 0.0;
REPEAT i := 1 TO SIZEOF(tpl);
r := r + tpl[i];
END_REPEAT;
RETURN (ctmv(r));
END_IF;
ef_product_rt :
IF good_t(v1, 'REAL') THEN
tpl := v1;
r := 1.0;
REPEAT i := 1 TO SIZEOF(tpl);
r := r * tpl[i];
END_REPEAT;
RETURN (ctmv(r));
END_IF;
ef_add_rt :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF good_t(vlist[i], 'REAL') THEN
IF NOT boo THEN
tpl := vlist[i];
boo := TRUE;
ELSE
tp2 := vlist[i];
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT l := 1 TO SIZEOF(tpl);
tpl[j] := tpl[j] + tp2[j];
END_REPEAT;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(tpl));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(tpl), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_rt :
IF good_t(v1, 'REAL') AND good_t(v2, 'REAL') THEN
tpl := v1;
tp2 := v2;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
tpl[i] := tpl[i] - tp2[i];
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_scalar_mult_rt :
IF ('REAL' IN TYPEOF(v1)) AND good_t(v2, 'REAL') THEN
r := v1;
tpl := v2;
REPEAT i := 1 TO SIZEOF(tpl);
tpl[i] := r * tpl[i];
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_dot_prod_rt :
IF good_t(v1, 'REAL') AND good_t(v2, 'REAL') THEN
tpl := v1;
tp2 := v2;
r := 0;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
r := r + tpl[i] * tp2[i];
END_REPEAT;
RETURN (ctmv(r));
END_IF;
ef_norm_rt :
IF good_t(v1, 'REAL') THEN
tpl := v1;
r := 0.0;
REPEAT i := 1 TO SIZEOF(tpl);
r := r + tpl[i] * tpl[i];
END_REPEAT;
RETURN (ctmv(SQRT(r)));
END_IF;
ef_sum_ct :
IF good_t(v1, cnlit) THEN
tpl := v1;
p := 0.0;
q := 0.0;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], r, s );
p := p + r;
q := q + s;
END_REPEAT;
RETURN (makec(p, q));
END_IF;
ef_product_ct :
IF good_t(v1, cnlit) THEN
tpl := v1;
p := 1.0;
q := 0.0;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], r, s );
p := p * r - q * s;
q := p * s + q * r;
END_REPEAT;
RETURN (makec(p, q));
END_IF;
ef_add_ct :
BEGIN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF good_t(vlist[i], cnlit) THEN
IF NOT boo THEN
tpl := vlist[i];
boo := TRUE;
ELSE
tp2 := vlist[i];
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT l := 1 TO SIZEOF(tpl);
parts( tpl[j], p, q );
parts( tp2[j], r, s );
tpl[j] := makec(p + r, q + s);
END_REPEAT;
END_IF;
REMOVE( vlist, i );
END_IF;
END_REPEAT;
IF SIZEOF(vlist) = 0 THEN
RETURN (ctmv(tpl));
END_IF;
IF boo THEN
INSERT( vlist, ctmv(tpl), 0 );
END_IF;
IF SIZEOF(vlist) = 1 THEN
RETURN (vlist[1]);
END_IF;
END;
ef_subtract_ct :
IF good_t(v1, cnlit) AND good_t(v2, cnlit) THEN
tpl := v1;
tp2 := v2;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], p, q );
parts( tp2[i], r, s );
tpl[i] := makec(p - r, q - s);
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_scalar_mult_ct :
IF (cnlit IN TYPEOF(v1)) AND good_t(v2, cnlit) THEN
parts( v1, p, q );
tpl := v2;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], r, s );
tpl[i] := makec(p * r - q * s, p * s + q * r);
END_REPEAT;
RETURN (ctmv(tpl));
END_IF;
ef_dot_prod_ct :
IF good_t(v1, cnlit) AND good_t(v2, cnlit) THEN
tpl := v1;
tp2 := v2;
T := 0.0;
u := 0.0;
IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
RETURN (?);
END_IF;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], p, q );
parts( tp2[i], r, s );
T := T + p * r + q * s;
u := u + q * r - p * s;
END_REPEAT;
RETURN (makec(T, u));
END_IF;
ef_norm_ct :
IF good_t(v1, cnlit) THEN
tpl := v1;
r := 0.0;
REPEAT i := 1 TO SIZEOF(tpl);
parts( tpl[i], p, q );
r := r + p * p + q * q;
END_REPEAT;
RETURN (ctmv(SQRT(r)));
END_IF;
ef_if, ef_if_i, ef_if_r, ef_if_c, ef_if_s, ef_if_b, ef_if_t :
IF 'LOGICAL' IN TYPEOF(v1) THEN
lgc := v1;
IF lgc THEN
RETURN (v2);
ELSE
RETURN (v3);
END_IF;
END_IF;
ef_ensemble :
RETURN (make_finite_space(mem + vlist));
ef_member_of :
IF schema_prefix + 'MATHS_SPACE' IN TYPEOF(v2) THEN
lgc := member_of(v1, v2);
IF lgc <> UNKNOWN THEN
RETURN (ctmv(lgc));
END_IF;
END_IF;
END_CASE;
RETURN (make_function_application(expr.func, vlist));
END_IF;
IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN types THEN
gexpr := substitute(expr.func\abstracted_expression_function.expr,
expr.func\quantifier_expression.variables, vlist);
RETURN (simplify_generic_expression(gexpr));
END_IF;
IF 'FINITE_FUNCTION' IN types THEN
pairs := expr.func\finite_function.pairs;
REPEAT i := 1 TO SIZEOF(pairs);
IF equal_maths_values(vlist[1], pairs[i][1]) THEN
RETURN (simplify_maths_value(pairs[i][2]));
END_IF;
END_REPEAT;
RETURN (make_function_application(expr.func, vlist));
END_IF;
RETURN (expr);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION simplify_generic_expression (
expr : generic_expression
) : maths_value;
FUNCTION restore_unary
(expr : unary_generic_expression;
opnd : generic_expression ) : generic_expression;
expr.operand := opnd;
RETURN (expr);
END_FUNCTION;
FUNCTION restore_binary
(expr : binary_generic_expression;
opd1 : generic_expression;
opd2 : generic_expression ) : generic_expression;
expr.operands[1] := opd1;
expr.operands[2] := opd2;
RETURN (expr);
END_FUNCTION;
FUNCTION restore_mulary
(expr : multiple_arity_generic_expression;
ops : LIST OF generic_expression ) : generic_expression;
expr.operands := ops;
RETURN (expr);
END_FUNCTION;
FUNCTION make_number_literal
(nmb : NUMBER ) : generic_literal;
IF 'INTEGER' IN TYPEOF(nmb) THEN
RETURN (make_int_literal(nmb));
END_IF;
RETURN (make_real_literal(nmb));
END_FUNCTION;
LOCAL
types : SET OF STRING := stripped_typeof(expr);
v1 : maths_value;
v2 : maths_value;
vlist : LIST OF maths_value := [];
op1 : generic_expression;
op2 : generic_expression;
oplist : LIST OF generic_expression := [];
opnds : LIST [2:?] OF generic_expression;
n : INTEGER;
m : INTEGER;
finfun : maths_function_select;
boo : BOOLEAN;
str : STRING;
nmb : NUMBER;
END_LOCAL;
IF 'INT_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\int_literal.the_value));
END_IF;
IF 'REAL_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\real_literal.the_value));
END_IF;
IF 'BOOLEAN_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\boolean_literal.the_value));
END_IF;
IF 'STRING_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\string_literal.the_value));
END_IF;
IF 'COMPLEX_NUMBER_LITERAL' IN types THEN
RETURN (expr);
END_IF;
IF 'LOGICAL_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\logical_literal.lit_value));
END_IF;
IF 'BINARY_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\binary_literal.lit_value));
END_IF;
IF 'MATHS_ENUM_LITERAL' IN types THEN
RETURN (expr\maths_enum_literal.lit_value);
END_IF;
IF 'REAL_TUPLE_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\real_tuple_literal.lit_value));
END_IF;
IF 'INTEGER_TUPLE_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\integer_tuple_literal.lit_value))
;
END_IF;
IF 'ATOM_BASED_LITERAL' IN types THEN
RETURN (expr\atom_based_literal.lit_value);
END_IF;
IF 'MATHS_TUPLE_LITERAL' IN types THEN
RETURN (convert_to_maths_value(expr\maths_tuple_literal.lit_value));
END_IF;
IF 'MATHS_SPACE' IN types THEN
RETURN (simplify_maths_space(expr));
END_IF;
IF 'FUNCTION_APPLICATION' IN types THEN
RETURN (simplify_function_application(expr));
END_IF;
IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
v1 := simplify_generic_expression(expr\unary_generic_expression.
operand);
op1 := convert_to_operand(v1);
END_IF;
IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
v1 := simplify_generic_expression(expr\binary_generic_expression.
operands[1]);
op1 := convert_to_operand(v1);
v2 := simplify_generic_expression(expr\binary_generic_expression.
operands[2]);
op2 := convert_to_operand(v2);
END_IF;
IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
opnds := expr\multiple_arity_generic_expression.operands;
REPEAT i := 1 TO SIZEOF(opnds);
v1 := simplify_generic_expression(opnds[i]);
INSERT( vlist, v1, i - 1 );
INSERT( oplist, convert_to_operand(v1), i - 1 );
END_REPEAT;
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
v1 := vlist[1];
n := SIZEOF(vlist);
finfun := vlist[n];
REMOVE( vlist, n );
REMOVE( vlist, 1 );
RETURN (make_parallel_composed_function(v1, vlist, finfun));
END_IF;
IF ('ABS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(ABS(v1)));
END_IF;
IF ('ACOS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(ACOS(v1)));
END_IF;
IF 'AND_EXPRESSION' IN types THEN
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'BOOLEAN' IN TYPEOF(vlist[i]) THEN
boo := vlist[i];
IF NOT boo THEN
RETURN (convert_to_maths_value(FALSE));
END_IF;
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(TRUE));
END_IF;
IF SIZEOF(oplist) = 1 THEN
RETURN (oplist[1]);
END_IF;
END_IF;
IF ('ASIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(ASIN(v1)));
END_IF;
IF (('ATAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(ATAN(v1, v2)));
END_IF;
IF ('COMPARISON_EXPRESSION' IN types) AND ((('NUMBER' IN TYPEOF(v1))
AND ('NUMBER' IN TYPEOF(v2)) OR ('STRING' IN TYPEOF(v1)) AND (
'STRING' IN TYPEOF(v2))) OR ('BOOLEAN' IN TYPEOF(v1)) AND ('BOOLEAN'
IN TYPEOF(v2))) THEN
IF 'COMPARISON_EQUAL' IN types THEN
boo := bool(v1 = v2);
ELSE
IF 'COMPARISON_GREATER' IN types THEN
boo := bool(v1 > v2);
ELSE
IF 'COMPARISON_GREATER_EQUAL' IN types THEN
boo := bool(v1 >= v2);
ELSE
IF 'COMPARISON_LESS' IN types THEN
boo := bool(v1 < v2);
ELSE
IF 'COMPARISON_LESS_EQUAL' IN types THEN
boo := bool(v1 <= v2);
ELSE
IF 'COMPARISON_NOT_EQUAL' IN types THEN
boo := bool(v1 <> v2);
ELSE
IF 'LIKE_EXPRESSION' IN types THEN
boo := bool(v1 LIKE v2);
ELSE
RETURN (?);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (convert_to_maths_value(boo));
END_IF;
IF 'CONCAT_EXPRESSION' IN types THEN
str := '';
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'STRING' IN TYPEOF(vlist[i]) THEN
str := vlist[i] + str;
REMOVE( oplist, i );
ELSE
IF LENGTH(str) > 0 THEN
INSERT( oplist, make_string_literal(str), i );
str := '';
END_IF;
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(str));
END_IF;
IF LENGTH(str) > 0 THEN
INSERT( oplist, make_string_literal(str), 0 );
END_IF;
IF SIZEOF(oplist) = 1 THEN
RETURN (oplist[1]);
END_IF;
END_IF;
IF ('COS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(COS(v1)));
END_IF;
IF (('DIV_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 DIV v2));
END_IF;
IF 'EQUALS_EXPRESSION' IN types THEN
opnds := expr\binary_generic_expression.operands;
RETURN (convert_to_maths_value(opnds[1] :=: opnds[2]));
END_IF;
IF ('EXP_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(EXP(v1)));
END_IF;
IF (('FORMAT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'STRING' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(FORMAT(v1, v2)));
END_IF;
IF (('INDEX_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
str := v1;
n := v2;
RETURN (convert_to_maths_value(str[n]));
END_IF;
IF ('INT_VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(VALUE(v1)));
END_IF;
IF 'INTERVAL_EXPRESSION' IN types THEN
str := '';
IF 'NUMBER' IN TYPEOF(vlist[1]) THEN
str := 'NUMBER';
END_IF;
IF 'STRING' IN TYPEOF(vlist[1]) THEN
str := 'STRING';
END_IF;
IF 'BOOLEAN' IN TYPEOF(vlist[1]) THEN
str := 'BOOLEAN';
END_IF;
IF ((LENGTH(str) > 0) AND (str IN TYPEOF(vlist[2]))) AND (str IN
TYPEOF(vlist[3])) THEN
RETURN (convert_to_maths_value((vlist[1] <= vlist[2]) AND (vlist[2]
<= vlist[3])));
END_IF;
END_IF;
IF ('LENGTH_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(LENGTH(v1)));
END_IF;
IF ('LOG_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(LOG(v1)));
END_IF;
IF ('LOG10_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(LOG10(v1)));
END_IF;
IF ('LOG2_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(LOG2(v1)));
END_IF;
IF 'MAXIMUM_EXPRESSION' IN types THEN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
IF boo THEN
IF nmb < vlist[i] THEN
nmb := vlist[i];
END_IF;
ELSE
nmb := vlist[i];
boo := TRUE;
END_IF;
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(nmb));
END_IF;
IF boo THEN
INSERT( oplist, make_number_literal(nmb), 0 );
END_IF;
END_IF;
IF 'MINIMUM_EXPRESSION' IN types THEN
boo := FALSE;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
IF boo THEN
IF nmb > vlist[i] THEN
nmb := vlist[i];
END_IF;
ELSE
nmb := vlist[i];
boo := TRUE;
END_IF;
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(nmb));
END_IF;
IF boo THEN
INSERT( oplist, make_number_literal(nmb), 0 );
END_IF;
END_IF;
IF (('MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 - v2));
END_IF;
IF (('MOD_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 MOD v2));
END_IF;
IF 'MULT_EXPRESSION' IN types THEN
nmb := 1;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
nmb := nmb * vlist[i];
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(nmb));
END_IF;
IF nmb <> 1 THEN
INSERT( oplist, make_number_literal(nmb), 0 );
END_IF;
IF SIZEOF(oplist) = 1 THEN
RETURN (oplist[1]);
END_IF;
END_IF;
IF ('NOT_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1)) THEN
boo := v1;
RETURN (convert_to_maths_value(NOT boo));
END_IF;
IF ('ODD_EXPRESSION' IN types) AND ('INTEGER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(ODD(v1)));
END_IF;
IF 'OR_EXPRESSION' IN types THEN
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'BOOLEAN' IN TYPEOF(vlist[i]) THEN
boo := vlist[i];
IF boo THEN
RETURN (convert_to_maths_value(TRUE));
END_IF;
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(FALSE));
END_IF;
IF SIZEOF(oplist) = 1 THEN
RETURN (oplist[1]);
END_IF;
END_IF;
IF 'PLUS_EXPRESSION' IN types THEN
nmb := 0;
REPEAT i := SIZEOF(vlist) TO 1 BY -1;
IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
nmb := nmb + vlist[i];
REMOVE( oplist, i );
END_IF;
END_REPEAT;
IF SIZEOF(oplist) = 0 THEN
RETURN (convert_to_maths_value(nmb));
END_IF;
IF nmb <> 0 THEN
INSERT( oplist, make_number_literal(nmb), 0 );
END_IF;
IF SIZEOF(oplist) = 1 THEN
RETURN (oplist[1]);
END_IF;
END_IF;
IF (('POWER_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 ** v2));
END_IF;
IF ('SIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(SIN(v1)));
END_IF;
IF (('SLASH_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND (
'NUMBER' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 / v2));
END_IF;
IF ('SQUARE_ROOT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
THEN
RETURN (convert_to_maths_value(SQRT(v1)));
END_IF;
IF ((('SUBSTRING_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(vlist[1]
))) AND ('NUMBER' IN TYPEOF(vlist[2]))) AND ('NUMBER' IN TYPEOF(vlist
[3])) THEN
str := vlist[1];
n := vlist[2];
m := vlist[3];
RETURN (convert_to_maths_value(str[ n : m ]));
END_IF;
IF ('TAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(TAN(v1)));
END_IF;
IF ('UNARY_MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
THEN
nmb := v1;
RETURN (convert_to_maths_value(-nmb));
END_IF;
IF ('VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
RETURN (convert_to_maths_value(VALUE(v1)));
END_IF;
IF (('XOR_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1))) AND (
'BOOLEAN' IN TYPEOF(v2)) THEN
RETURN (convert_to_maths_value(v1 XOR v2));
END_IF;
IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
RETURN (restore_unary(expr, op1));
END_IF;
IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
RETURN (restore_binary(expr, op1, op2));
END_IF;
IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
RETURN (restore_mulary(expr, oplist));
END_IF;
RETURN (expr);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION simplify_maths_space (
spc : maths_space
) : maths_space;
LOCAL
stypes : SET OF STRING := stripped_typeof(spc);
sset : SET OF maths_value;
zset : SET OF maths_value := [];
zval : maths_value;
zspc : maths_space;
zallint : BOOLEAN := TRUE;
zint : INTEGER;
zmin : INTEGER;
zmax : INTEGER;
factors : LIST OF maths_space;
zfactors : LIST OF maths_space := [];
rspc : maths_space;
END_LOCAL;
IF 'FINITE_SPACE' IN stypes THEN
sset := spc\finite_space.members;
REPEAT i := 1 TO SIZEOF(sset);
zval := simplify_maths_value(sset[i]);
zset := zset + [ zval ];
IF zallint AND ('INTEGER' IN TYPEOF(zval)) THEN
zint := zval;
IF i = 1 THEN
zmin := zint;
zmax := zint;
ELSE
IF zint < zmin THEN
zmin := zint;
END_IF;
IF zint > zmax THEN
zmax := zint;
END_IF;
END_IF;
ELSE
zallint := FALSE;
END_IF;
END_REPEAT;
IF zallint AND (SIZEOF(zset) = zmax - zmin + 1) THEN
RETURN (make_finite_integer_interval(zmin, zmax));
END_IF;
RETURN (make_finite_space(zset));
END_IF;
IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
zspc := simplify_maths_space(spc\uniform_product_space.base);
RETURN (make_uniform_product_space(zspc, spc\uniform_product_space.
exponent));
END_IF;
IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
factors := spc\listed_product_space.factors;
REPEAT i := 1 TO SIZEOF(factors);
INSERT( zfactors, simplify_maths_space(factors[i]), i - 1 );
END_REPEAT;
RETURN (make_listed_product_space(zfactors));
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
zspc := simplify_maths_space(spc\extended_tuple_space.base);
rspc := simplify_maths_space(spc\extended_tuple_space.extender);
RETURN (make_extended_tuple_space(zspc, rspc));
END_IF;
IF 'FUNCTION_SPACE' IN stypes THEN
zspc := simplify_maths_space(spc\function_space.domain_argument);
rspc := simplify_maths_space(spc\function_space.range_argument);
RETURN (make_function_space(spc\function_space.domain_constraint,
zspc, spc\function_space.range_constraint, rspc));
END_IF;
RETURN (spc);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION simplify_maths_value (
val : maths_value
) : maths_value;
LOCAL
vtypes : SET OF STRING := stripped_typeof(val);
vlist : LIST OF maths_value;
nlist : LIST OF maths_value := [];
END_LOCAL;
IF 'GENERIC_EXPRESSION' IN vtypes THEN
RETURN (simplify_generic_expression(val));
END_IF;
IF 'LIST' IN vtypes THEN
vlist := val;
REPEAT i := 1 TO SIZEOF(vlist);
INSERT( nlist, simplify_maths_value(vlist[i]), i - 1 );
END_REPEAT;
RETURN (convert_to_maths_value(nlist));
END_IF;
RETURN (val);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION singleton_member_of (
spc : maths_space
) : maths_value;
LOCAL
types : SET OF STRING := stripped_typeof(spc);
END_LOCAL;
IF 'FINITE_SPACE' IN types THEN
IF SIZEOF(spc\finite_space.members) = 1 THEN
RETURN (spc\finite_space.members[1]);
END_IF;
RETURN (?);
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN types THEN
IF spc\finite_integer_interval.size = 1 THEN
RETURN (spc\finite_integer_interval.min);
END_IF;
RETURN (?);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION sort_link_associations (
aprr : SET [1:?] OF pair_representation_relationship;
one_not_two : BOOLEAN
) : SET OF kinematic_link_representation;
LOCAL
result : SET OF kinematic_link_representation := [];
END_LOCAL;
IF one_not_two THEN
REPEAT i := 1 TO HIINDEX(aprr);
result := result + aprr[i].rep_1;
END_REPEAT;
ELSE
REPEAT i := 1 TO HIINDEX(aprr);
result := result + aprr[i].rep_2;
END_REPEAT;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
FUNCTION space_dimension (
tspace : tuple_space
) : nonnegative_integer;
LOCAL
types : SET OF STRING := TYPEOF(tspace);
END_LOCAL;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN types THEN
RETURN (tspace\uniform_product_space.exponent);
END_IF;
IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN types THEN
RETURN (SIZEOF(tspace\listed_product_space.factors));
END_IF;
IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
RETURN (space_dimension(tspace\extended_tuple_space.base));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION space_is_continuum (
space : maths_space
) : BOOLEAN;
LOCAL
typenames : SET OF STRING := TYPEOF(space);
factors : LIST OF maths_space;
END_LOCAL;
IF NOT EXISTS(space) THEN
RETURN (FALSE);
END_IF;
IF subspace_of_es(space, es_reals) OR subspace_of_es(space,
es_complex_numbers) THEN
RETURN (TRUE);
END_IF;
IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
RETURN (space_is_continuum(space\uniform_product_space.base));
END_IF;
IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
factors := space\listed_product_space.factors;
IF SIZEOF(factors) = 0 THEN
RETURN (FALSE);
END_IF;
REPEAT i := 1 TO SIZEOF(factors);
IF NOT space_is_continuum(factors[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION space_is_singleton (
spc : maths_space
) : BOOLEAN;
LOCAL
types : SET OF STRING := stripped_typeof(spc);
END_LOCAL;
IF 'FINITE_SPACE' IN types THEN
RETURN (bool(SIZEOF(spc\finite_space.members) = 1));
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN types THEN
RETURN (bool(spc\finite_integer_interval.size = 1));
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION stripped_typeof (
arg : GENERIC : G
) : SET OF STRING;
LOCAL
types : SET OF STRING := TYPEOF(arg);
stypes : SET OF STRING := [];
n : INTEGER := LENGTH(schema_prefix);
END_LOCAL;
REPEAT i := 1 TO SIZEOF(types);
IF types[i][ 1 : n ] = schema_prefix THEN
stypes := stypes + types[i][ (n + 1) : LENGTH(types[i]) ];
ELSE
stypes := stypes + types[i];
END_IF;
END_REPEAT;
RETURN (stypes);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
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,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.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; -- 10303-47: shape_aspect_definition_schema
FUNCTION sts_get_product_definition_shape (
input : geometric_tolerance_target
) : product_definition_shape;
CASE TRUE OF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_LOCATION' IN
TYPEOF(input) :
RETURN (input\shape_aspect_relationship.relating_shape_aspect\
shape_aspect.of_shape);
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIMENSIONAL_SIZE' IN
TYPEOF(input) :
RETURN (input\dimensional_size.applies_to\shape_aspect.of_shape);
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_SHAPE'
IN TYPEOF(input) :
RETURN (input);
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_ASPECT' IN TYPEOF(
input) :
RETURN (input\shape_aspect.of_shape);
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-47: shape_tolerance_schema
FUNCTION subspace_of (
space1 : maths_space;
space2 : maths_space
) : LOGICAL;
LOCAL
spc1 : maths_space := simplify_maths_space(space1);
spc2 : maths_space := simplify_maths_space(space2);
types1 : SET OF STRING := stripped_typeof(spc1);
types2 : SET OF STRING := stripped_typeof(spc2);
lgcl : LOGICAL;
cum : LOGICAL;
es_val : elementary_space_enumerators;
bnd1 : REAL;
bnd2 : REAL;
n : INTEGER;
sp1 : maths_space;
sp2 : maths_space;
prgn1 : polar_complex_number_region;
prgn2 : polar_complex_number_region;
aitv : finite_real_interval;
END_LOCAL;
IF NOT EXISTS(spc1) OR NOT EXISTS(spc2) THEN
RETURN (FALSE);
END_IF;
IF spc2 = the_generics THEN
RETURN (TRUE);
END_IF;
IF 'ELEMENTARY_SPACE' IN types1 THEN
IF NOT ('ELEMENTARY_SPACE' IN types2) THEN
RETURN (FALSE);
END_IF;
es_val := spc2\elementary_space.space_id;
IF spc1\elementary_space.space_id = es_val THEN
RETURN (TRUE);
END_IF;
CASE spc1\elementary_space.space_id OF
es_numbers :
RETURN (FALSE);
es_complex_numbers :
RETURN (es_val = es_numbers);
es_reals :
RETURN (es_val = es_numbers);
es_integers :
RETURN (es_val = es_numbers);
es_logicals :
RETURN (FALSE);
es_booleans :
RETURN (es_val = es_logicals);
es_strings :
RETURN (FALSE);
es_binarys :
RETURN (FALSE);
es_maths_spaces :
RETURN (FALSE);
es_maths_functions :
RETURN (FALSE);
es_generics :
RETURN (FALSE);
END_CASE;
RETURN (UNKNOWN);
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN types1 THEN
cum := TRUE;
REPEAT i := spc1\finite_integer_interval.min TO spc1\
finite_integer_interval.max;
cum := cum AND member_of(i, spc2);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'INTEGER_INTERVAL_FROM_MIN' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_integers));
END_IF;
IF 'INTEGER_INTERVAL_FROM_MIN' IN types2 THEN
RETURN (spc1\integer_interval_from_min.min >= spc2\
integer_interval_from_min.min);
END_IF;
RETURN (FALSE);
END_IF;
IF 'INTEGER_INTERVAL_TO_MAX' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_integers));
END_IF;
IF 'INTEGER_INTERVAL_TO_MAX' IN types2 THEN
RETURN (spc1\integer_interval_to_max.max <= spc2\
integer_interval_to_max.max);
END_IF;
RETURN (FALSE);
END_IF;
IF 'FINITE_REAL_INTERVAL' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_reals));
END_IF;
IF (('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN'
IN types2)) OR ('REAL_INTERVAL_TO_MAX' IN types2) THEN
IF min_exists(spc2) THEN
bnd1 := spc1\finite_real_interval.min;
bnd2 := real_min(spc2);
IF (bnd1 < bnd2) OR ((bnd1 = bnd2) AND min_included(spc1)) AND
NOT min_included(spc2) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF max_exists(spc2) THEN
bnd1 := spc1\finite_real_interval.max;
bnd2 := real_max(spc2);
IF (bnd1 > bnd2) OR ((bnd1 = bnd2) AND max_included(spc1)) AND
NOT max_included(spc2) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_IF;
IF 'REAL_INTERVAL_FROM_MIN' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_reals));
END_IF;
IF 'REAL_INTERVAL_FROM_MIN' IN types2 THEN
bnd1 := spc1\real_interval_from_min.min;
bnd2 := spc2\real_interval_from_min.min;
RETURN ((bnd2 < bnd1) OR (bnd2 = bnd1) AND (min_included(spc2) OR
NOT min_included(spc1)));
END_IF;
RETURN (FALSE);
END_IF;
IF 'REAL_INTERVAL_TO_MAX' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_reals));
END_IF;
IF 'REAL_INTERVAL_TO_MAX' IN types2 THEN
bnd1 := spc1\real_interval_to_max.max;
bnd2 := spc2\real_interval_to_max.max;
RETURN ((bnd2 > bnd1) OR (bnd2 = bnd1) AND (max_included(spc2) OR
NOT max_included(spc1)));
END_IF;
RETURN (FALSE);
END_IF;
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_complex_numbers));
END_IF;
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
RETURN (subspace_of(spc1\cartesian_complex_number_region.
real_constraint, spc2\cartesian_complex_number_region.
real_constraint) AND subspace_of(spc1\
cartesian_complex_number_region.imag_constraint, spc2\
cartesian_complex_number_region.imag_constraint));
END_IF;
IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
RETURN (subspace_of(enclose_cregion_in_pregion(spc1, spc2\
polar_complex_number_region.centre), spc2));
END_IF;
RETURN (FALSE);
END_IF;
IF 'POLAR_COMPLEX_NUMBER_REGION' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
es_val := spc2\elementary_space.space_id;
RETURN ((es_val = es_numbers) OR (es_val = es_complex_numbers));
END_IF;
IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
RETURN (subspace_of(enclose_pregion_in_cregion(spc1), spc2));
END_IF;
IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
prgn1 := spc1;
prgn2 := spc2;
IF prgn1.centre = prgn2.centre THEN
IF prgn2.direction_constraint.max > PI THEN
aitv := make_finite_real_interval(-PI, open, prgn2.
direction_constraint.max - 2.0 * PI, prgn2.
direction_constraint.max_closure);
RETURN (subspace_of(prgn1.distance_constraint, prgn2.
distance_constraint) AND (subspace_of(prgn1.
direction_constraint, prgn2.direction_constraint) OR
subspace_of(prgn1.direction_constraint, aitv)));
ELSE
RETURN (subspace_of(prgn1.distance_constraint, prgn2.
distance_constraint) AND subspace_of(prgn1.
direction_constraint, prgn2.direction_constraint));
END_IF;
END_IF;
RETURN (subspace_of(enclose_pregion_in_pregion(prgn1, prgn2.centre)
, prgn2));
END_IF;
RETURN (FALSE);
END_IF;
IF 'FINITE_SPACE' IN types1 THEN
cum := TRUE;
REPEAT i := 1 TO SIZEOF(spc1\finite_space.members);
cum := cum AND member_of(spc1\finite_space.members[i], spc2);
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
IF 'PRODUCT_SPACE' IN types1 THEN
IF 'PRODUCT_SPACE' IN types2 THEN
IF space_dimension(spc1) = space_dimension(spc2) THEN
cum := TRUE;
REPEAT i := 1 TO space_dimension(spc1);
cum := cum AND subspace_of(factor_space(spc1, i), factor_space(
spc2, i));
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
IF space_dimension(spc1) >= space_dimension(spc2) THEN
cum := TRUE;
REPEAT i := 1 TO space_dimension(spc1);
cum := cum AND subspace_of(factor_space(spc1, i), factor_space(
spc2, i));
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
END_IF;
RETURN (FALSE);
END_IF;
IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
n := space_dimension(spc1);
IF n < space_dimension(spc2) THEN
n := space_dimension(spc2);
END_IF;
cum := TRUE;
REPEAT i := 1 TO n + 1;
cum := cum AND subspace_of(factor_space(spc1, i), factor_space(
spc2, i));
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (cum);
END_IF;
RETURN (FALSE);
END_IF;
IF 'FUNCTION_SPACE' IN types1 THEN
IF 'ELEMENTARY_SPACE' IN types2 THEN
RETURN (spc2\elementary_space.space_id = es_maths_functions);
END_IF;
IF 'FUNCTION_SPACE' IN types2 THEN
cum := TRUE;
sp1 := spc1\function_space.domain_argument;
sp2 := spc2\function_space.domain_argument;
CASE spc1\function_space.domain_constraint OF
sc_equal :
BEGIN
CASE spc2\function_space.domain_constraint OF
sc_equal :
cum := cum AND equal_maths_spaces(sp1, sp2);
sc_subspace :
cum := cum AND subspace_of(sp1, sp2);
sc_member :
cum := cum AND member_of(sp1, sp2);
END_CASE;
END;
sc_subspace :
BEGIN
CASE spc2\function_space.domain_constraint OF
sc_equal :
RETURN (FALSE);
sc_subspace :
cum := cum AND subspace_of(sp1, sp2);
sc_member :
BEGIN
IF NOT member_of(sp1, sp2) THEN
RETURN (FALSE);
END_IF;
cum := UNKNOWN;
END;
END_CASE;
END;
sc_member :
BEGIN
CASE spc2\function_space.domain_constraint OF
sc_equal :
cum := (cum AND space_is_singleton(sp1)) AND
equal_maths_spaces(singleton_member_of(sp1), sp2);
sc_subspace :
BEGIN
IF NOT member_of(sp2, sp1) THEN
RETURN (FALSE);
END_IF;
cum := UNKNOWN;
END;
sc_member :
cum := cum AND subspace_of(sp1, sp2);
END_CASE;
END;
END_CASE;
IF cum = FALSE THEN
RETURN (FALSE);
END_IF;
sp1 := spc1\function_space.range_argument;
sp2 := spc2\function_space.range_argument;
CASE spc1\function_space.range_constraint OF
sc_equal :
BEGIN
CASE spc2\function_space.range_constraint OF
sc_equal :
cum := cum AND equal_maths_spaces(sp1, sp2);
sc_subspace :
cum := cum AND subspace_of(sp1, sp2);
sc_member :
cum := cum AND member_of(sp1, sp2);
END_CASE;
END;
sc_subspace :
BEGIN
CASE spc2\function_space.domain_constraint OF
sc_equal :
RETURN (FALSE);
sc_subspace :
cum := cum AND subspace_of(sp1, sp2);
sc_member :
BEGIN
IF NOT member_of(sp1, sp2) THEN
RETURN (FALSE);
END_IF;
cum := UNKNOWN;
END;
END_CASE;
END;
sc_member :
BEGIN
CASE spc2\function_space.domain_constraint OF
sc_equal :
cum := (cum AND space_is_singleton(sp1)) AND
equal_maths_spaces(singleton_member_of(sp1), sp2);
sc_subspace :
BEGIN
IF NOT member_of(sp2, sp1) THEN
RETURN (FALSE);
END_IF;
cum := UNKNOWN;
END;
sc_member :
cum := cum AND subspace_of(sp1, sp2);
END_CASE;
END;
END_CASE;
RETURN (cum);
END_IF;
RETURN (FALSE);
END_IF;
RETURN (UNKNOWN);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION subspace_of_es (
spc : maths_space;
es : elementary_space_enumerators
) : LOGICAL;
LOCAL
types : SET OF STRING := stripped_typeof(spc);
END_LOCAL;
IF NOT EXISTS(spc) OR NOT EXISTS(es) THEN
RETURN (FALSE);
END_IF;
IF 'ELEMENTARY_SPACE' IN types THEN
RETURN (es_subspace_of_es(spc\elementary_space.space_id, es));
END_IF;
IF 'FINITE_SPACE' IN types THEN
RETURN (all_members_of_es(spc\finite_space.members, es));
END_IF;
CASE es OF
es_numbers :
RETURN (((((((('FINITE_INTEGER_INTERVAL' IN types) OR (
'INTEGER_INTERVAL_FROM_MIN' IN types)) OR (
'INTEGER_INTERVAL_TO_MAX' IN types)) OR ('FINITE_REAL_INTERVAL'
IN types)) OR ('REAL_INTERVAL_FROM_MIN' IN types)) OR (
'REAL_INTERVAL_TO_MAX' IN types)) OR (
'CARTESIAN_COMPLEX_NUMBER_REGION' IN types)) OR (
'POLAR_COMPLEX_NUMBER_REGION' IN types));
es_complex_numbers :
RETURN (('CARTESIAN_COMPLEX_NUMBER_REGION' IN types) OR (
'POLAR_COMPLEX_NUMBER_REGION' IN types));
es_reals :
RETURN ((('FINITE_REAL_INTERVAL' IN types) OR (
'REAL_INTERVAL_FROM_MIN' IN types)) OR ('REAL_INTERVAL_TO_MAX'
IN types));
es_integers :
RETURN ((('FINITE_INTEGER_INTERVAL' IN types) OR (
'INTEGER_INTERVAL_FROM_MIN' IN types)) OR (
'INTEGER_INTERVAL_TO_MAX' IN types));
es_logicals :
RETURN (FALSE);
es_booleans :
RETURN (FALSE);
es_strings :
RETURN (FALSE);
es_binarys :
RETURN (FALSE);
es_maths_spaces :
RETURN (FALSE);
es_maths_functions :
RETURN ('FUNCTION_SPACE' IN types);
es_generics :
RETURN (TRUE);
END_CASE;
RETURN (UNKNOWN);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION substitute (
expr : generic_expression;
vars : LIST [1:?] OF generic_variable;
vals : LIST [1:?] OF maths_value
) : generic_expression;
LOCAL
types : SET OF STRING := stripped_typeof(expr);
opnds : LIST OF generic_expression;
op1 : generic_expression;
op2 : generic_expression;
qvars : LIST OF generic_variable;
srcdom : maths_space_or_function;
prpfun : LIST [1:?] OF maths_function;
finfun : maths_function_select;
END_LOCAL;
IF SIZEOF(vars) <> SIZEOF(vals) THEN
RETURN (?);
END_IF;
IF 'GENERIC_LITERAL' IN types THEN
RETURN (expr);
END_IF;
IF 'GENERIC_VARIABLE' IN types THEN
REPEAT i := 1 TO SIZEOF(vars);
IF expr :=: vars[i] THEN
RETURN (vals[i]);
END_IF;
END_REPEAT;
RETURN (expr);
END_IF;
IF 'QUANTIFIER_EXPRESSION' IN types THEN
qvars := expr\quantifier_expression.variables;
REPEAT i := SIZEOF(vars) TO 1 BY -1;
IF vars[i] IN qvars THEN
REMOVE( vars, i );
REMOVE( vals, i );
END_IF;
END_REPEAT;
opnds := expr\multiple_arity_generic_expression.operands;
REPEAT i := 1 TO SIZEOF(opnds);
IF NOT (opnds[i] IN qvars) THEN
expr\multiple_arity_generic_expression.operands[i] := substitute(
opnds[i], vars, vals);
END_IF;
END_REPEAT;
RETURN (expr);
END_IF;
IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
op1 := expr\unary_generic_expression.operand;
expr\unary_generic_expression.operand := substitute(op1, vars, vals);
END_IF;
IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
op1 := expr\binary_generic_expression.operands[1];
expr\binary_generic_expression.operands[1] := substitute(op1, vars,
vals);
op2 := expr\binary_generic_expression.operands[2];
expr\binary_generic_expression.operands[2] := substitute(op2, vars,
vals);
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
srcdom := expr\parallel_composed_function.source_of_domain;
prpfun := expr\parallel_composed_function.prep_functions;
finfun := expr\parallel_composed_function.final_function;
srcdom := substitute(srcdom, vars, vals);
REPEAT i := 1 TO SIZEOF(prpfun);
prpfun[i] := substitute(prpfun[i], vars, vals);
END_REPEAT;
IF 'MATHS_FUNCTION' IN stripped_typeof(finfun) THEN
finfun := substitute(finfun, vars, vals);
END_IF;
RETURN (make_parallel_composed_function(srcdom, prpfun, finfun));
END_IF;
IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
opnds := expr\multiple_arity_generic_expression.operands;
REPEAT i := 1 TO SIZEOF(opnds);
expr\multiple_arity_generic_expression.operands[i] := substitute(
opnds[i], vars, vals);
END_REPEAT;
END_IF;
RETURN (expr);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION surface_condition_correlation (
pd : property_definition;
rep : representation
) : LOGICAL;
CASE pd.name OF
'visual appearance', 'tactile appearance', 'contact ratio',
'hardness', 'treatment result', 'surface texture' :
RETURN (pd.name = rep.name);
OTHERWISE :
RETURN (UNKNOWN);
END_CASE;
END_FUNCTION; -- 10303-1110: surface_conditions_mim
FUNCTION surface_weights_positive (
b : rational_b_spline_surface
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.u_upper;
REPEAT j := 0 TO b.v_upper;
IF b.weights[i][j] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION topology_reversed (
an_item : reversible_topology
) : reversible_topology;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EDGE' IN TYPEOF(an_item
) THEN
RETURN (edge_reversed(an_item));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PATH' IN TYPEOF(an_item
) THEN
RETURN (path_reversed(an_item));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE_BOUND' IN TYPEOF(
an_item) THEN
RETURN (face_bound_reversed(an_item));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FACE' IN TYPEOF(an_item
) THEN
RETURN (face_reversed(an_item));
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHELL' IN TYPEOF(
an_item) THEN
RETURN (shell_reversed(an_item));
END_IF;
IF 'SET' IN TYPEOF(an_item) THEN
RETURN (set_of_topology_reversed(an_item));
END_IF;
IF 'LIST' IN TYPEOF(an_item) THEN
RETURN (list_of_topology_reversed(an_item));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION type_check_function (
the_type : GENERIC;
sub_names : SET OF STRING;
criterion : INTEGER
) : LOGICAL;
IF NOT EXISTS(the_type) OR (SIZEOF(sub_names) = 0) THEN
RETURN (UNKNOWN);
ELSE
CASE criterion OF
0 :
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0);
1 :
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0);
2 :
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1);
3 :
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
OTHERWISE :
RETURN (UNKNOWN);
END_CASE;
END_IF;
END_FUNCTION; -- 10303-41: support_resource_schema
FUNCTION unambiguously_specified_multi_level_reference_designator (
links : LIST [1:?] OF next_assembly_usage_occurrence
) : BOOLEAN;
REPEAT i := 1 TO SIZEOF(links) - 1;
CASE TRUE OF
(('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(links[i]\product_definition_relationship.
relating_product_definition)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(links[i]\product_definition_relationship.
related_product_definition))) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(links[(i + 1)]\product_definition_relationship.
relating_product_definition)) :
BEGIN
IF NOT ((links[i]\product_definition_relationship.
related_product_definition :=: links[(i + 1)]\
product_definition_relationship.relating_product_definition
) OR (SIZEOF(QUERY (pdr <* USEDIN(links[i]\
product_definition_relationship.related_product_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (pdr\product_definition_relationship.
relating_product_definition :=: links[(i + 1)]\
product_definition_relationship.relating_product_definition
))) = 1) AND (links[i]\product_definition_relationship.
related_product_definition\product_definition.formation\
product_definition_formation.of_product :=: links[(i + 1)]\
product_definition_relationship.relating_product_definition
\product_definition.formation\product_definition_formation.
of_product)) THEN
RETURN (FALSE);
END_IF;
END;
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_REFERENCE'
IN TYPEOF(links[i]\product_definition_relationship.
related_product_definition)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_REFERENCE'
IN TYPEOF(links[(i + 1)]\product_definition_relationship.
relating_product_definition)) :
BEGIN
IF NOT ((links[i]\product_definition_relationship.
related_product_definition :=: links[(i + 1)]\
product_definition_relationship.relating_product_definition
) OR (((SIZEOF(QUERY (pdr <* USEDIN(links[i]\
product_definition_relationship.related_product_definition,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
)| (pdr\product_definition_relationship.
relating_product_definition :=: links[(i + 1)]\
product_definition_relationship.relating_product_definition
))) = 1) AND (links[i]\product_definition_relationship.
related_product_definition\product_definition_reference.
product_id = links[(i + 1)]\product_definition_relationship
.relating_product_definition\product_definition_reference.
product_id)) AND (links[i]\product_definition_relationship.
related_product_definition\product_definition_reference.
id_owning_organization_name = links[(i + 1)]\
product_definition_relationship.relating_product_definition
\product_definition_reference.id_owning_organization_name))
AND (links[i]\product_definition_relationship.
related_product_definition\product_definition_reference.
product_definition_id <> links[(i + 1)]\
product_definition_relationship.relating_product_definition
\product_definition_reference.product_definition_id)) THEN
RETURN (FALSE);
END_IF;
END;
(
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_REFERENCE'
IN TYPEOF(links[i]\product_definition_relationship.
relating_product_definition)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION'
IN TYPEOF(links[i]\product_definition_relationship.
related_product_definition)) :
RETURN (FALSE);
OTHERWISE :
RETURN (FALSE);
END_CASE;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-44: product_structure_schema
FUNCTION using_items (
item : founded_item_select;
checked_items : SET OF founded_item_select
) : SET OF founded_item_select;
LOCAL
new_check_items : SET OF founded_item_select;
result_items : SET OF founded_item_select;
next_items : SET OF founded_item_select;
END_LOCAL;
result_items := [];
new_check_items := checked_items + item;
next_items := QUERY (z <* bag_to_set(USEDIN(item, ''))| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM' IN
TYPEOF(z)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FOUNDED_ITEM' IN TYPEOF(
z)));
IF SIZEOF(next_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(next_items);
IF NOT (next_items[i] IN new_check_items) THEN
result_items := result_items + next_items[i] + using_items(
next_items[i], new_check_items);
END_IF;
END_REPEAT;
END_IF;
RETURN (result_items);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION using_representations (
item : founded_item_select
) : SET OF representation;
LOCAL
results : SET OF representation;
result_bag : BAG OF representation;
intermediate_items : SET OF founded_item_select;
END_LOCAL;
results := [];
result_bag := USEDIN(item,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION.ITEMS');
IF SIZEOF(result_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(result_bag);
results := results + result_bag[i];
END_REPEAT;
END_IF;
intermediate_items := using_items(item, []);
IF SIZEOF(intermediate_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(intermediate_items);
result_bag := USEDIN(intermediate_items[i],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION.ITEMS'
);
IF SIZEOF(result_bag) > 0 THEN
REPEAT j := 1 TO HIINDEX(result_bag);
results := results + result_bag[j];
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN (results);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION valid_calendar_date (
date : calendar_date
) : LOGICAL;
CASE date.month_component OF
1 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
2 :
BEGIN
IF leap_year(date.year_component) THEN
RETURN ((1 <= date.day_component) AND (date.day_component <=
29));
ELSE
RETURN ((1 <= date.day_component) AND (date.day_component <=
28));
END_IF;
END;
3 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
4 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
5 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
6 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
7 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
8 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
9 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
10 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
11 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
12 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
END_CASE;
RETURN (FALSE);
END_FUNCTION; -- 10303-41: date_time_schema
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|
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(rep));
IF SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <*
srwp.items| (i.name = 'orientation') AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_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([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.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(
[
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.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([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.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([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(i)) = 2))) = 1))) = 1));
OTHERWISE :
RETURN (FALSE);
END_CASE;
END_FUNCTION; -- 10303-1051: geometric_tolerance_mim
FUNCTION valid_geometrically_bounded_wf_curve (
crv : curve
) : BOOLEAN;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELLIPSE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CIRCLE' ] * TYPEOF(crv))
= 1 THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TRIMMED_CURVE' IN
TYPEOF(crv) THEN
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARABOLA',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.HYPERBOLA' ] *
TYPEOF(crv\trimmed_curve.basis_curve)) = 1 THEN
RETURN (TRUE);
ELSE
RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.
basis_curve));
END_IF;
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D' IN
TYPEOF(crv) THEN
RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.
basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(crv) THEN
RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.
parent_curve));
ELSE
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOSITE_CURVE'
IN TYPEOF(crv) THEN
RETURN (SIZEOF(QUERY (ccs <* crv\composite_curve.segments|
NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve))
) = 0);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-510: aic_geometrically_bounded_wireframe
FUNCTION valid_geometrically_bounded_wf_point (
pnt : point
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(pnt) THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_ON_CURVE' IN
TYPEOF(pnt) THEN
RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.
basis_curve));
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_REPLICA' IN
TYPEOF(pnt) THEN
RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.
parent_pt));
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-510: aic_geometrically_bounded_wireframe
FUNCTION valid_identified_item_in_representation (
identified_item : item_identified_representation_usage_select;
used_representation : representation
) : BOOLEAN;
LOCAL
i : INTEGER := 1;
END_LOCAL;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REPRESENTATION_ITEM' IN
TYPEOF(identified_item) THEN
RETURN (used_representation IN using_representations(identified_item)
);
END_IF;
IF (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(identified_item)) OR (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SET_REPRESENTATION_ITEM'
IN TYPEOF(identified_item)) THEN
REPEAT WHILE EXISTS(identified_item[i]);
IF NOT (used_representation IN using_representations(
identified_item[i])) THEN
RETURN (FALSE);
END_IF;
i := i + 1;
END_REPEAT;
RETURN (TRUE);
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-41: product_property_representation_schema
FUNCTION valid_measure_value (
m : measure_value
) : BOOLEAN;
IF 'REAL' IN TYPEOF(m) THEN
RETURN (m > 0.0);
ELSE
IF 'INTEGER' IN TYPEOF(m) THEN
RETURN (m > 0);
ELSE
RETURN (TRUE);
END_IF;
END_IF;
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION valid_selected_instance_representation (
pd : product_definition_or_assembly_relationship
) : LOGICAL;
LOCAL
properties : SET OF property_definition := bag_to_set(QUERY (prd <*
USEDIN(pd,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| prd.name = 'occurrence selection'));
property_definition_representations : SET OF
property_definition_representation := bag_to_set(QUERY (pdr <* USEDIN
(properties[1],
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| pdr.used_representation.name = 'selection criteria'));
selected_representation : representation;
END_LOCAL;
IF SIZEOF(properties) <> 1 THEN
RETURN (FALSE);
END_IF;
IF SIZEOF(property_definition_representations) <> 1 THEN
RETURN (FALSE);
END_IF;
selected_representation := property_definition_representations[1]\
property_definition_representation.used_representation;
IF (SIZEOF(selected_representation\representation.items) < 1) OR (
SIZEOF(selected_representation\representation.items) > 2) THEN
RETURN (FALSE);
END_IF;
IF SIZEOF(QUERY (i <* selected_representation\representation.items| (
SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ] *
TYPEOF(i)) = 1) AND (i.name = 'selection quantity'))) <> 1 THEN
RETURN (FALSE);
END_IF;
IF SIZEOF(QUERY (i <* selected_representation\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name = 'selection control'))) > 1 THEN
RETURN (FALSE);
END_IF;
IF (SIZEOF(QUERY (i <* selected_representation\representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(i)) AND (i.name = 'selection control'))) = 0) AND (SIZEOF(
QUERY (i <* selected_representation\representation.items| (i.name =
'selection quantity') AND (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'
, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' ] *
TYPEOF(i)) = 0))) > 0) THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-1063: product_occurrence_mim
FUNCTION valid_time (
time : local_time
) : BOOLEAN;
IF EXISTS(time.second_component) THEN
RETURN (EXISTS(time.minute_component));
ELSE
RETURN (TRUE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION valid_tri_ids (
objs : SET OF topological_representation_item
) : BOOLEAN;
LOCAL
values : BAG OF identifier := [];
END_LOCAL;
REPEAT i := LOINDEX(objs) TO HIINDEX(objs);
IF NOT (EXISTS(objs[i]\topological_representation_item.permanent_id)
OR EXISTS(objs[i]\topological_representation_item.
permanent_aggregate_id)) THEN
RETURN (FALSE);
END_IF;
values := values + objs[i]\topological_representation_item.
permanent_id + objs[i]\topological_representation_item.
permanent_aggregate_id;
END_REPEAT;
IF SIZEOF(bag_to_set(values)) <> SIZEOF(values) THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION valid_units (
m : measure_with_unit
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MASS_MEASURE' IN TYPEOF
(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE' IN TYPEOF
(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_CURRENT_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.THERMODYNAMIC_TEMPERATURE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CELSIUS_TEMPERATURE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AMOUNT_OF_SUBSTANCE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LUMINOUS_INTENSITY_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SOLID_ANGLE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AREA_MEASURE' IN TYPEOF
(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VOLUME_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POSITIVE_PLANE_ANGLE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACCELERATION_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CAPACITANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_CHARGE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONDUCTANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELECTRIC_POTENTIAL_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ENERGY_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FORCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREQUENCY_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ILLUMINANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INDUCTANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LUMINOUS_FLUX_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAGNETIC_FLUX_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MAGNETIC_FLUX_DENSITY_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POWER_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRESSURE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESISTANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VELOCITY_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RADIOACTIVITY_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ABSORBED_DOSE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DOSE_EQUIVALENT_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION valid_wireframe_edge_curve (
crv : curve
) : BOOLEAN;
IF SIZEOF([ 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CONIC',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE',
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE' ] * TYPEOF(crv
)) = 1 THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CURVE_REPLICA' IN
TYPEOF(crv) THEN
RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve))
;
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OFFSET_CURVE_3D' IN
TYPEOF(crv) THEN
RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.
basis_curve));
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-501: aic_edge_based_wireframe
FUNCTION valid_wireframe_vertex_point (
pnt : point
) : BOOLEAN;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(pnt) THEN
RETURN (TRUE);
ELSE
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POINT_REPLICA' IN
TYPEOF(pnt) THEN
RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-501: aic_edge_based_wireframe
FUNCTION value_range_wr1 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i1)))) = 2) OR (SIZEOF(QUERY (i2 <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_REPRESENTATION_ITEM'
IN TYPEOF(i2)))) = 2)) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1106: extended_measure_representation_mim
FUNCTION value_range_wr2 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF (SIZEOF(QUERY (i <* agg| (i\representation_item.name =
'upper limit'))) = 1) AND (SIZEOF(QUERY (i <* agg| (i\
representation_item.name = 'lower limit'))) = 1) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1106: extended_measure_representation_mim
FUNCTION value_range_wr3 (
agg : compound_item_definition
) : BOOLEAN;
BEGIN
IF SIZEOF(QUERY (i1 <* agg| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i1)) AND (SIZEOF(QUERY (i2 <* agg| ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(i2)) AND (i1 :<>: i2)) AND (i1\measure_with_unit.
unit_component :=: i2\measure_with_unit.unit_component))) = 1))) =
2 THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION; -- 10303-1106: extended_measure_representation_mim
FUNCTION values_space_of (
expr : generic_expression
) : maths_space;
LOCAL
e_prefix : STRING := 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.';
typenames : SET OF STRING := TYPEOF(expr);
END_LOCAL;
IF schema_prefix + 'MATHS_VARIABLE' IN typenames THEN
RETURN (expr\maths_variable.values_space);
END_IF;
IF e_prefix + 'EXPRESSION' IN typenames THEN
IF e_prefix + 'NUMERIC_EXPRESSION' IN typenames THEN
IF expr\numeric_expression.is_int THEN
IF e_prefix + 'INT_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\int_literal.the_value ]));
ELSE
RETURN (the_integers);
END_IF;
ELSE
IF e_prefix + 'REAL_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\real_literal.the_value ]));
ELSE
RETURN (the_reals);
END_IF;
END_IF;
END_IF;
IF e_prefix + 'BOOLEAN_EXPRESSION' IN typenames THEN
IF e_prefix + 'BOOLEAN_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\boolean_literal.the_value ]));
ELSE
RETURN (the_booleans);
END_IF;
END_IF;
IF e_prefix + 'STRING_EXPRESSION' IN typenames THEN
IF e_prefix + 'STRING_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\string_literal.the_value ]));
ELSE
RETURN (the_strings);
END_IF;
END_IF;
RETURN (?);
END_IF;
IF schema_prefix + 'MATHS_FUNCTION' IN typenames THEN
IF expression_is_constant(expr) THEN
RETURN (make_finite_space([ expr ]));
ELSE
RETURN (make_function_space(sc_equal, expr\maths_function.domain,
sc_equal, expr\maths_function.range));
END_IF;
END_IF;
IF schema_prefix + 'FUNCTION_APPLICATION' IN typenames THEN
RETURN (expr\function_application.func.range);
END_IF;
IF schema_prefix + 'MATHS_SPACE' IN typenames THEN
IF expression_is_constant(expr) THEN
RETURN (make_finite_space([ expr ]));
ELSE
RETURN (make_elementary_space(es_maths_spaces));
END_IF;
END_IF;
IF schema_prefix + 'DEPENDENT_VARIABLE_DEFINITION' IN typenames THEN
RETURN (values_space_of(expr\unary_generic_expression.operand));
END_IF;
IF schema_prefix + 'COMPLEX_NUMBER_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr ]));
END_IF;
IF schema_prefix + 'LOGICAL_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\logical_literal.lit_value ]));
END_IF;
IF schema_prefix + 'BINARY_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\binary_literal.lit_value ]));
END_IF;
IF schema_prefix + 'MATHS_ENUM_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\maths_enum_literal.lit_value ]));
END_IF;
IF schema_prefix + 'REAL_TUPLE_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\real_tuple_literal.lit_value ]));
END_IF;
IF schema_prefix + 'INTEGER_TUPLE_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\integer_tuple_literal.lit_value ]));
END_IF;
IF schema_prefix + 'ATOM_BASED_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\atom_based_literal.lit_value ]));
END_IF;
IF schema_prefix + 'MATHS_TUPLE_LITERAL' IN typenames THEN
RETURN (make_finite_space([ expr\maths_tuple_literal.lit_value ]));
END_IF;
IF schema_prefix + 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames THEN
RETURN (drop_numeric_constraints(values_space_of(expr\
partial_derivative_expression.derivand)));
END_IF;
IF schema_prefix + 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames THEN
RETURN (drop_numeric_constraints(values_space_of(expr\
definite_integral_expression.integrand)));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-50: mathematical_functions_schema
FUNCTION vector_difference (
arg1 : vector_or_direction;
arg2 : vector_or_direction
) : vector;
LOCAL
result : vector;
res : direction;
vec1 : direction;
vec2 : direction;
mag : REAL;
mag1 : REAL;
mag2 : REAL;
ndim : INTEGER;
END_LOCAL;
IF (NOT EXISTS(arg1) OR NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)
THEN
RETURN (?);
ELSE
BEGIN
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(
arg1) THEN
mag1 := arg1\vector.magnitude;
vec1 := arg1\vector.orientation;
ELSE
mag1 := 1.0;
vec1 := arg1;
END_IF;
IF 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VECTOR' IN TYPEOF(
arg2) THEN
mag2 := arg2\vector.magnitude;
vec2 := arg2\vector.orientation;
ELSE
mag2 := 1.0;
vec2 := arg2;
END_IF;
vec1 := normalise(vec1);
vec2 := normalise(vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0.0;
res := dummy_gri || direction(vec1.direction_ratios);
REPEAT i := 1 TO ndim;
res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] - mag2
* vec2.direction_ratios[i];
mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
result := dummy_gri || vector(res, SQRT(mag));
ELSE
result := dummy_gri || vector(vec1, 0.0);
END_IF;
END;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION verify_angle_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_angle_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_angle_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_resource_property(crd, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_angle_measure_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_tool_body(mt, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_ballnose_endmill_dimensions (
mt : machining_tool
) : LOGICAL;
LOCAL
rads : SET OF representation_item := get_tool_body_item(mt,
'edge radius');
dias : SET OF representation_item := get_tool_body_item(mt,
'effective cutting diameter');
END_LOCAL;
RETURN ((0 = SIZEOF(rads)) OR ((1 = SIZEOF(rads)) AND (1 = SIZEOF(dias)
)) AND (rads[1].value_component = dias[1].value_component / 2));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_bullnose_endmill_dimensions (
mt : machining_tool
) : LOGICAL;
LOCAL
rads : SET OF representation_item := get_tool_body_item(mt,
'edge radius');
dias : SET OF representation_item := get_tool_body_item(mt,
'effective cutting diameter');
END_LOCAL;
RETURN (((1 = SIZEOF(rads)) AND (1 = SIZEOF(dias))) AND (rads[1].
value_component < dias[1].value_component / 2));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_count_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE' IN TYPEOF
(it.value_component)))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_count_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE' IN TYPEOF
(it.value_component))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_count_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_resource_property(crd, prop_name)
| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE' IN TYPEOF
(it.value_component)))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_count_measure_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* get_tool_body_item(mt, prop_name)| NOT
((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE' IN TYPEOF
(it.value_component))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_descriptive_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_enumeration_action_property (
cad : characterized_action_definition;
prop_name : STRING;
prop_values : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.description IN prop_values))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_enumeration_resource_property (
crd : characterized_resource_definition;
prop_name : STRING;
prop_values : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_resource_property(crd, prop_name)
| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.description IN prop_values))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_enumeration_tool_body_item (
mt : machining_tool;
prop_name : STRING;
prop_values : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* get_tool_body_item(mt, prop_name)| NOT
((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.description IN prop_values)))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_length_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_length_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_length_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_resource_property(crd, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_length_measure_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_tool_body(mt, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_linear_speed_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE' IN
TYPEOF(it.value_component))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_numeric_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE' IN
TYPEOF(it.value_component)))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (1 >= SIZEOF(get_action_property(cad, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_in_process_geometry (
mpe : machining_process_executable
) : LOGICAL;
RETURN (((verify_optional_action_property(mpe, 'as-is shape') AND
verify_optional_action_property(mpe, 'to-be shape')) AND
verify_optional_action_property(mpe, 'removal shape')) AND (0 =
SIZEOF(QUERY (prop <* USEDIN(mpe,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY.DEFINITION'
)| (prop.name IN [ 'as-is shape', 'to-be shape', 'removal shape' ])
AND (0 = SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SHAPE_REPRESENTATION' IN
TYPEOF(prep.representation)))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_relating_amr (
am : action_method;
amr_types : SET OF STRING
) : LOGICAL;
RETURN (1 >= get_count_of_relating_amr(am, amr_types));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
) : LOGICAL;
RETURN (1 >= get_count_of_relating_amr_with_name(am, amr_name,
amr_types));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (1 >= SIZEOF(QUERY (it <* rep.items| (it.name = prop_name))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (1 >= SIZEOF(get_resource_property(crd, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_optional_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : LOGICAL;
RETURN (1 >= SIZEOF(get_tool_body_item(mt, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_pressure_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_numeric_measure_action_property(cad, prop_name));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_ratio_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_ratio_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_related_type_for_amr (
am : action_method;
amr_types : SET OF STRING;
types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (amr <* get_relating_amr(am)| (SIZEOF(
amr_types * TYPEOF(amr)) = SIZEOF(amr_types)) AND NOT (SIZEOF(types *
TYPEOF(amr.related_method)) = SIZEOF(types)))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_related_type_for_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING;
types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (amr <* get_relating_amr(am)| ((amr.name =
amr_name) AND (SIZEOF(amr_types * TYPEOF(amr)) = SIZEOF(amr_types)))
AND NOT (SIZEOF(types * TYPEOF(amr.related_method)) = SIZEOF(types)))
));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_item_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
rep_item_types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (SIZEOF(
rep_item_types * TYPEOF(it)) = SIZEOF(rep_item_types)))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_item_for_resource_property (
crd : characterized_resource_definition;
prop_name : STRING;
rep_item_types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_resource_property(crd, prop_name)
| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
)| (0 < SIZEOF(QUERY (it <* prep.representation.items| (SIZEOF(
rep_item_types * TYPEOF(it)) = SIZEOF(rep_item_types)))))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_item_for_tool_body (
mt : machining_tool;
prop_name : STRING;
rep_item_types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* get_tool_body_item(mt, prop_name)| NOT
(SIZEOF(rep_item_types * TYPEOF(it)) = SIZEOF(rep_item_types)))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_name_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
desc_names : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (prep.representation.name IN desc_names)))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_type_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
rep_types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_action_property(cad, prop_name)|
NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY'
)| (SIZEOF(rep_types * TYPEOF(prep.representation)) = SIZEOF(
rep_types))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rep_type_for_resource_property (
crd : characterized_resource_definition;
prop_name : STRING;
rep_types : SET OF STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (prop <* get_resource_property(crd, prop_name)
| NOT (0 < SIZEOF(QUERY (prep <* USEDIN(prop,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY'
)| (SIZEOF(rep_types * TYPEOF(prep.representation)) = SIZEOF(
rep_types))))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (1 = SIZEOF(get_action_property(cad, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_relating_amr (
am : action_method;
amr_types : SET OF STRING
) : LOGICAL;
RETURN (1 = get_count_of_relating_amr(am, amr_types));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
) : LOGICAL;
RETURN (1 = get_count_of_relating_amr_with_name(am, amr_name, amr_types
));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (1 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (1 = SIZEOF(get_resource_property(crd, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_required_tool_body_item (
mt : machining_tool;
prop_name : STRING
) : LOGICAL;
RETURN (1 = SIZEOF(get_tool_body_item(mt, prop_name)));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_rotary_speed_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT ((
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE' IN
TYPEOF(it.value_component))))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_time_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_time_measure_rep_item (
rep : representation;
prop_name : STRING
) : LOGICAL;
RETURN (0 = SIZEOF(QUERY (it <* rep.items| (it.name = prop_name) AND
NOT (SIZEOF([
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT'
] * TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION verify_time_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
) : LOGICAL;
RETURN (verify_rep_item_for_resource_property(crd, prop_name, [
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
,
'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT'
]));
END_FUNCTION; -- 10303-238: model_based_integrated_manufacturing_schema
FUNCTION volume_weights_positive (
b : rational_b_spline_volume
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.u_upper;
REPEAT j := 0 TO b.v_upper;
REPEAT k := 0 TO b.w_upper;
IF b.weights[i][j][k] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
END_REPEAT;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION weights_positive (
weights : LIST OF REAL
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(weights);
IF weights[i] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION ypr_index (
ypr : ypr_enumeration
) : INTEGER;
CASE ypr OF
yaw :
RETURN (1);
pitch :
RETURN (2);
roll :
RETURN (3);
END_CASE;
RETURN (?);
END_FUNCTION; -- 10303-105: kinematic_state_schema
END_SCHEMA; -- model_based_integrated_manufacturing_schema
© ISO 2022 — All rights reserved