--- /dev/null
+(*
+ $Id: mim_lf.exp,v 1.101 2019/07/01 16:42:01 kevin Exp $
+ ISO TC184/SC4/WG12 N10517 - ISO/TS 10303-442 AP242 managed model based 3d engineering - EXPRESS MIM Long form
+ Supersedes ISO TC184/SC4/WG3 N10384
+*)
+
+-- -*- Mode: Express -*-
+
+(* ===================================================================================== *)
+(* Long form schema generated by The EXPRESS Data Manager compiler version 9.8.9B 20130507 *)
+(* Sat Jun 08 15:16:30 2019 *)
+(* The schema is converted from ISO10303 P11-2003 to ISO10303 P11-1994 *)
+(* ===================================================================================== *)
+
+(* Pretty Printed by Express Engine
+ 5.0.21 (GIT eeng-5.0.21)
+ Steel Bank CL 1.4.16 (64-bits)
+
+ eengine --pretty
+ -mode mim_longform
+ -schema mim_lf.exp
+ Line Width: 120
+ Commandline:
+ eengine --pretty
+ -mode mim_longform
+ -schema mim_lf.exp
+*)
+
+(* File: /Users/klt/Desktop/mim_lf.exp *)
+(* 1 Schema: AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF *)
+
+(* Interfaces: 0 *)
+(* Constants: 29 *)
+(* Types: 449 *)
+(* Entities: 2,118 *)
+(* Subtype_Constraints: 0 *)
+(* Functions: 316 *)
+(* Rules: 55 *)
+(* Procedures: 0 *)
+
+SCHEMA automotive_design;
+
+TYPE a3m_accuracy_type_name = ENUMERATION OF
+ (atna_others,
+ atns_area_measure,
+ atns_length_measure,
+ atns_others,
+ atns_plane_angle_measure,
+ atns_volume_measure);
+END_TYPE;
+
+TYPE a3m_detected_difference_type_name = ENUMERATION OF
+ (ddna_a3ms_inspected_equivalence_element_select,
+ ddna_assembly_component_usage,
+ ddna_binary_assembly_constraint,
+ ddna_cartesian_point,
+ ddna_context_dependent_shape_representation,
+ ddna_count_measure,
+ ddna_multi_level_reference_designator,
+ ddna_no_element,
+ ddna_others,
+ ddna_volume_measure,
+ ddns_area_measure,
+ ddns_cartesian_point,
+ ddns_connected_face_set,
+ ddns_count_measure,
+ ddns_edge,
+ ddns_face,
+ ddns_five_count_measure,
+ ddns_four_count_measure,
+ ddns_length_measure,
+ ddns_no_element,
+ ddns_others,
+ ddns_point_on_curve,
+ ddns_point_on_surface,
+ ddns_several_edges,
+ ddns_several_faces,
+ ddns_three_count_measure,
+ ddns_two_cartesian_points,
+ ddns_two_count_measure,
+ ddns_volume_measure);
+END_TYPE;
+
+TYPE a3m_element_type_name = ENUMERATION OF
+ (etna_others,
+ etna_product_definition_or_reference,
+ etna_shape_representation,
+ etns_connected_edge_set,
+ etns_connected_face_set,
+ etns_external_representation_item,
+ etns_manifold_solid_brep,
+ etns_others,
+ etns_point_cloud_dataset,
+ etns_shell_based_surface_model,
+ etns_shell_based_wireframe_model,
+ etns_vertex_point);
+END_TYPE;
+
+TYPE a3m_equivalence_assessment_specification_select = SELECT
+ (a3m_equivalence_assessment_by_logical_test,
+ a3m_equivalence_assessment_by_numerical_test);
+END_TYPE;
+
+TYPE a3m_measured_data_type_name = ENUMERATION OF
+ (mdna_boolean_value,
+ mdna_context_dependent_measure,
+ mdna_length_measure,
+ mdna_length_measure_and_context_dependent_measure,
+ mdna_others,
+ mdna_plane_angle_measure,
+ mdna_volume_measure,
+ mdns_area_measure,
+ mdns_boolean_value,
+ mdns_length_measure,
+ mdns_others,
+ mdns_plane_angle_measure,
+ mdns_volume_measure);
+END_TYPE;
+
+TYPE a3ma_accuracy_type_name = a3m_accuracy_type_name;
+END_TYPE;
+
+TYPE a3ma_detected_difference_type_name = a3m_detected_difference_type_name;
+END_TYPE;
+
+TYPE a3ma_element_type_name = a3m_element_type_name;
+END_TYPE;
+
+TYPE a3ma_measured_data_type_name = a3m_measured_data_type_name;
+END_TYPE;
+
+TYPE a3ms_accuracy_type_name = a3m_accuracy_type_name;
+END_TYPE;
+
+TYPE a3ms_detected_difference_type_name = a3m_detected_difference_type_name;
+END_TYPE;
+
+TYPE a3ms_element_type_name = a3m_element_type_name;
+END_TYPE;
+
+TYPE a3ms_inspected_equivalence_element_select = inspected_equivalence_element_select;
+END_TYPE;
+
+TYPE a3ms_measured_data_type_name = a3m_measured_data_type_name;
+END_TYPE;
+
+TYPE absorbed_dose_measure = REAL;
+END_TYPE;
+
+TYPE acceleration_measure = REAL;
+END_TYPE;
+
+TYPE accuracy_associated_target_select = SELECT
+ (a3m_equivalence_criteria_representation,
+ a3m_equivalence_criterion,
+ a3m_equivalence_inspection_result_representation,
+ data_equivalence_inspection_result);
+END_TYPE;
+
+TYPE action_items = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_date_and_time_assignment,
+ applied_date_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_state_observed_assignment,
+ applied_state_type_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_status,
+ ascribable_state,
+ ascribable_state_relationship,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ breakdown_of,
+ calendar_date,
+ certification,
+ certification_item,
+ change_group,
+ characterized_class,
+ characterized_object,
+ class,
+ classification_item,
+ class_system,
+ condition,
+ conditional_effectivity,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ date_and_time,
+ date_and_time_assignment,
+ date_assignment,
+ dimensional_location,
+ dimensional_size,
+ directed_action_assignment,
+ directed_dimensional_location,
+ document_file,
+ document_reference_item,
+ document_relationship,
+ document_type,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ evaluated_characteristic,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ event_occurrence,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ group,
+ group_relationship,
+ hierarchical_interface_connection,
+ identification_assignment_relationship,
+ inclusion_product_concept_feature,
+ identification_item,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design,
+ interface_connector_occurrence,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_definition_for,
+ interface_specification_version,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ mechanical_design_geometric_presentation_representation,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ presentation_area,
+ process_operation,
+ process_plan,
+ product,
+ product_category,
+ product_class,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_element_relationship,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_definition_usage,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ product_process_plan,
+ product_related_product_category,
+ product_relationship,
+ property_definition,
+ property_definition_relationship,
+ property_definition_representation,
+ representation,
+ representation_item,
+ representation_relationship,
+ requirement_assigned_item,
+ requirement_assignment,
+ requirement_for_action_resource,
+ resource_property,
+ retention,
+ rule_set,
+ security_classification,
+ security_classification_level,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_representation,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ usage_association,
+ validation,
+ value_representation_item,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE action_method_items = SELECT
+ (action,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_request_solution,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ breakdown_of,
+ condition,
+ configuration_design,
+ configuration_item,
+ contract,
+ contract_assignment,
+ date_and_time,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ document_file,
+ effectivity,
+ envelope,
+ event_occurrence,
+ evidence,
+ executed_action,
+ externally_defined_general_property,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ hierarchical_interface_connection,
+ interface_connection,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ material_designation_characterization,
+ measure_representation_item,
+ organization,
+ organizational_address,
+ organizational_project,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ product,
+ product_class,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_design_version_to_individual,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ property_definition,
+ property_definition_representation,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_view_definition_relationship,
+ state_observed,
+ state_type,
+ state_type_relationship,
+ structured_message,
+ validation,
+ value_representation_item,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+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,
+ contract,
+ document_file,
+ draughting_model,
+ drawing_revision,
+ executed_action,
+ general_property,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organization,
+ organizational_project,
+ person,
+ person_and_organization,
+ presentation_area,
+ 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,
+ product_identification,
+ property_definition,
+ resource_property,
+ shape_aspect,
+ shape_representation,
+ versioned_action_request);
+END_TYPE;
+
+TYPE actuated_direction = ENUMERATION OF
+ (bidirectional,
+ positive_only,
+ negative_only,
+ not_actuated);
+END_TYPE;
+
+TYPE ahead_or_behind = ENUMERATION OF
+ (ahead,
+ exact,
+ behind);
+END_TYPE;
+
+TYPE amount_of_substance_measure = REAL;
+END_TYPE;
+
+TYPE analysed_item = SELECT
+ (action_property_representation,
+ alternate_product_relationship,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ evidence,
+ interface_connection,
+ interface_connector_occurrence,
+ organization,
+ organizational_project_relationship,
+ organization_relationship,
+ product,
+ product_concept,
+ product_definition,
+ product_definition_context,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_group_relationship,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ requirement_assignment,
+ state_observed,
+ state_observed_assignment,
+ state_observed_role,
+ state_type,
+ validation,
+ verification,
+ verification_relationship);
+END_TYPE;
+
+TYPE angle_direction_reference_select = SELECT
+ (curve,
+ direction,
+ point_path);
+END_TYPE;
+
+TYPE angle_direction_reference_with_a2p3d_select = SELECT
+ (angle_direction_reference_select,
+ axis2_placement_3d);
+END_TYPE;
+
+TYPE angle_relator = ENUMERATION OF
+ (equal,
+ large,
+ small);
+END_TYPE;
+
+TYPE angular_deviation = positive_plane_angle_measure;
+END_TYPE;
+
+TYPE annotation_placeholder_occurrence_role = ENUMERATION OF
+ (annotation_text,
+ gps_data);
+END_TYPE;
+
+TYPE annotation_plane_element = SELECT
+ (draughting_callout,
+ styled_item);
+END_TYPE;
+
+TYPE annotation_representation_select = SELECT
+ (draughting_model,
+ presentation_area,
+ presentation_view,
+ symbol_representation);
+END_TYPE;
+
+TYPE annotation_symbol_occurrence_item = SELECT
+ (annotation_symbol,
+ defined_symbol);
+END_TYPE;
+
+TYPE annotation_text_occurrence_item = SELECT
+ (annotation_text,
+ annotation_text_character,
+ composite_text,
+ defined_character_glyph,
+ text_literal);
+END_TYPE;
+
+TYPE ap242_assignment_object_select = assignment_object_select;
+END_TYPE;
+
+TYPE approval_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_request_solution,
+ alternate_product_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ assembly_component_usage_substitute,
+ breakdown_of,
+ certification,
+ class,
+ class_system,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ date,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action,
+ directed_action_assignment,
+ document,
+ document_file,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ envelope,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_defined_general_property,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ group,
+ group_relationship,
+ identification_assignment_relationship,
+ inclusion_product_concept_feature,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_definition,
+ interface_connector_design,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_connector_version,
+ interface_definition_for,
+ interface_specification_definition,
+ interface_specification_version,
+ in_zone,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ mechanical_design_geometric_presentation_representation,
+ organization,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ package_product_concept_feature,
+ person_and_organization,
+ presentation_area,
+ process_plan,
+ product,
+ product_class,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_definition_usage,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ security_classification,
+ shape_aspect_relationship,
+ shape_representation,
+ structured_message,
+ validation,
+ value_representation_item,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE approved_item = SELECT
+ (certification,
+ change,
+ change_request,
+ configuration_effectivity,
+ configuration_item,
+ contract,
+ product,
+ security_classification,
+ start_request,
+ start_work);
+END_TYPE;
+
+TYPE area_measure = REAL;
+END_TYPE;
+
+TYPE area_or_view = SELECT
+ (presentation_area,
+ presentation_view);
+END_TYPE;
+
+TYPE area_unit_type = ENUMERATION OF
+ (circular,
+ cylindrical,
+ rectangular,
+ spherical,
+ square);
+END_TYPE;
+
+TYPE assignment_object_select = SELECT
+ (action_property,
+ action_property_representation,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ breakdown_of,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ frozen_assignment,
+ material_designation_characterization,
+ organizational_address,
+ person_and_organization_address,
+ product_concept_feature_association,
+ product_concept_feature_category_usage,
+ property_definition,
+ property_definition_representation,
+ requirement_assignment,
+ requirement_for_action_resource);
+END_TYPE;
+
+TYPE atom_based_value = SELECT
+ (maths_atom);
+END_TYPE;
+
+TYPE attribute_classification_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ action_request_solution,
+ action_request_status,
+ alternate_product_relationship,
+ applied_action_assignment,
+ applied_action_method_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_organizational_project_assignment,
+ applied_organization_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,
+ envelope,
+ envelope_relationship,
+ event_occurrence_relationship,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ group,
+ group_relationship,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_definition,
+ interface_definition_connection,
+ interface_specification_definition,
+ language,
+ measure_representation_item,
+ measure_with_unit,
+ message_relationship,
+ named_unit,
+ organizational_address,
+ organizational_project_relationship,
+ organization_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,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ time_interval_relationship,
+ uncertainty_measure_with_unit,
+ usage_association,
+ versioned_action_request);
+END_TYPE;
+
+TYPE attribute_identifier = identifier;
+WHERE
+ WR1: validate_attribute_id(SELF);
+END_TYPE;
+
+TYPE attribute_language_item = SELECT
+ (action,
+ action_method,
+ action_method_relationship,
+ actuated_kinematic_pair,
+ alternate_product_relationship,
+ application_context,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_certification_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_organizational_project_assignment,
+ applied_security_classification_assignment,
+ approval,
+ approval_relationship,
+ approval_status,
+ assembly_component_usage_substitute,
+ attribute_value_assignment,
+ certification,
+ certification_type,
+ configuration_design,
+ configuration_item,
+ contract,
+ data_environment,
+ date_role,
+ date_time_role,
+ descriptive_representation_item,
+ document_relationship,
+ document_usage_role,
+ draughting_title,
+ effectivity,
+ effectivity_relationship,
+ envelope,
+ envelope_relationship,
+ event_occurrence,
+ evidence,
+ external_source,
+ general_property,
+ general_property_relationship,
+ geometric_representation_item,
+ geometric_tolerance,
+ group,
+ group_relationship,
+ identification_role,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ interface_definition_for,
+ kinematic_pair,
+ make_from_usage_option,
+ mapped_item,
+ message_relationship,
+ multi_language_attribute_assignment,
+ name_assignment,
+ object_role,
+ organizational_project,
+ organizational_project_relationship,
+ organizational_project_role,
+ organization_relationship,
+ organization_role,
+ person_and_organization,
+ person_and_organization_role,
+ presentation_layer_assignment,
+ process_product_association,
+ product,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_relationship,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_shape,
+ product_definition_substitute,
+ product_group,
+ product_group_relationship,
+ product_related_product_category,
+ property_definition,
+ property_definition_relationship,
+ representation,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ resource_requirement_type,
+ security_classification,
+ security_classification_assignment,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_representation,
+ state_observed,
+ state_observed_relationship,
+ state_type,
+ state_type_relationship,
+ structured_message,
+ styled_item,
+ time_interval_role,
+ topological_representation_item,
+ uncertainty_measure_with_unit,
+ uncertainty_qualifier,
+ usage_association,
+ validation,
+ verification,
+ versioned_action_request,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE attribute_select = SELECT
+ (product_group_context,
+ product_group_purpose);
+END_TYPE;
+
+TYPE attribute_type = SELECT
+ (label,
+ text);
+END_TYPE;
+
+TYPE axial_geometry_constraint_element = SELECT
+ (circle,
+ conical_surface,
+ cylindrical_surface,
+ line,
+ plane,
+ point,
+ revolved_area_solid,
+ revolved_face_solid,
+ right_circular_cone,
+ right_circular_cylinder,
+ sphere,
+ spherical_surface,
+ surface_of_revolution,
+ toroidal_surface,
+ torus);
+END_TYPE;
+
+TYPE axis2_placement = SELECT
+ (axis2_placement_2d,
+ axis2_placement_3d);
+END_TYPE;
+
+TYPE b_spline_curve_form = ENUMERATION OF
+ (polyline_form,
+ circular_arc,
+ elliptic_arc,
+ parabolic_arc,
+ hyperbolic_arc,
+ unspecified);
+END_TYPE;
+
+TYPE b_spline_or_composite_curve_select = SELECT
+ (b_spline_curve,
+ composite_curve);
+END_TYPE;
+
+TYPE b_spline_or_rectangular_composite_surface_select = SELECT
+ (b_spline_surface,
+ rectangular_composite_surface);
+END_TYPE;
+
+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;
+
+TYPE base_solid_select = SELECT
+ (solid_model,
+ csg_primitive,
+ boolean_result);
+WHERE
+ WR1: NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF));
+END_TYPE;
+
+TYPE basis_11_direction_member = SELECT
+ (cartesian_11,
+ curve_11,
+ cylindrical_11,
+ point_array,
+ polar_11,
+ user_defined_11);
+END_TYPE;
+
+TYPE blend_end_condition_select = SELECT
+ (edge_curve,
+ point_on_curve,
+ vertex);
+END_TYPE;
+
+TYPE blend_radius_variation_type = ENUMERATION OF
+ (linear_blend,
+ cubic_blend,
+ unspecified_blend);
+END_TYPE;
+
+TYPE boolean_operand = SELECT
+ (boolean_result,
+ csg_primitive,
+ half_space_2d,
+ half_space_solid,
+ solid_model);
+END_TYPE;
+
+TYPE boolean_operand_2d = SELECT
+ (boolean_result_2d,
+ bounded_primitive_2d);
+END_TYPE;
+
+TYPE boolean_operator = ENUMERATION OF
+ (union,
+ intersection,
+ difference);
+END_TYPE;
+
+TYPE boolean_value = BOOLEAN;
+END_TYPE;
+
+TYPE bounded_primitive_2d = SELECT
+ (area_with_outer_boundary,
+ circular_area,
+ elliptic_area,
+ path_area_with_parameters,
+ polygonal_area,
+ rectangular_area);
+END_TYPE;
+
+TYPE box_characteristic_select = SELECT
+ (box_height,
+ box_rotate_angle,
+ box_slant_angle,
+ box_width);
+END_TYPE;
+
+TYPE box_height = positive_ratio_measure;
+END_TYPE;
+
+TYPE box_rotate_angle = plane_angle_measure;
+END_TYPE;
+
+TYPE box_slant_angle = plane_angle_measure;
+END_TYPE;
+
+TYPE box_width = positive_ratio_measure;
+END_TYPE;
+
+TYPE camera_model_d3_multi_clipping_intersection_select = SELECT
+ (camera_model_d3_multi_clipping_union,
+ plane);
+END_TYPE;
+
+TYPE camera_model_d3_multi_clipping_union_select = SELECT
+ (camera_model_d3_multi_clipping_intersection,
+ plane);
+END_TYPE;
+
+TYPE capacitance_measure = REAL;
+END_TYPE;
+
+TYPE category_usage_item = SELECT
+ (product_class);
+END_TYPE;
+
+TYPE cc_classified_item = SELECT
+ (assembly_component_usage,
+ product_definition_formation);
+END_TYPE;
+
+TYPE cc_person_organization_item = SELECT
+ (change,
+ change_request,
+ configuration_item,
+ contract,
+ product,
+ product_definition,
+ product_definition_formation,
+ security_classification,
+ start_request,
+ start_work);
+END_TYPE;
+
+TYPE cc_specified_item = SELECT
+ (product_definition,
+ shape_aspect);
+END_TYPE;
+
+TYPE celsius_temperature_measure = REAL;
+END_TYPE;
+
+TYPE central_or_parallel = ENUMERATION OF
+ (central,
+ parallel);
+END_TYPE;
+
+TYPE certification_item = SELECT
+ (action_method,
+ alternate_product_relationship,
+ analysis_assignment,
+ applied_action_method_assignment,
+ assembly_component_usage,
+ evidence,
+ executed_action,
+ interface_connection,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_specification_version,
+ make_from_usage_option,
+ organizational_project,
+ product,
+ product_definition,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_definition_relationship,
+ product_group,
+ product_group_relationship,
+ product_identification,
+ product_relationship,
+ requirement_view_definition_relationship);
+END_TYPE;
+
+TYPE certified_item = SELECT
+ (supplied_part_relationship);
+END_TYPE;
+
+TYPE chained_representation_link = SELECT
+ (mapped_item,
+ representation_context,
+ representation_relationship);
+END_TYPE;
+
+TYPE change_management_object = SELECT
+ (action,
+ action_items,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ breakdown_of,
+ class,
+ condition,
+ conditional_effectivity,
+ configuration_effectivity,
+ contract,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ document_file,
+ effectivity,
+ event_occurrence,
+ exclusive_product_concept_feature_category,
+ frozen_assignment,
+ general_property_relationship,
+ inclusion_product_concept_feature,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ process_operation,
+ process_plan,
+ product,
+ product_class,
+ 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_group_assignment,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_identification,
+ product_process_plan,
+ project_item,
+ property_definition,
+ property_definition_representation,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_view_definition_relationship,
+ value_representation_item);
+END_TYPE;
+
+TYPE change_relationship_select = SELECT
+ (action_relationship,
+ alternative_solution_relationship,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ shape_aspect_relationship);
+END_TYPE;
+
+TYPE change_request_item = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE character_spacing_select = SELECT
+ (descriptive_measure,
+ length_measure,
+ measure_with_unit,
+ ratio_measure);
+END_TYPE;
+
+TYPE character_style_select = SELECT
+ (character_glyph_style_outline,
+ character_glyph_style_stroke,
+ text_style_for_defined_font);
+END_TYPE;
+
+TYPE characterized_action_definition = SELECT
+ (action,
+ action_method,
+ action_method_relationship,
+ action_relationship);
+END_TYPE;
+
+TYPE characterized_definition = SELECT
+ (characterized_item,
+ characterized_object,
+ characterized_product_definition,
+ shape_definition);
+END_TYPE;
+
+TYPE characterized_item = SELECT
+ (dimensional_size,
+ geometric_tolerance,
+ item_identified_representation_usage);
+END_TYPE;
+
+TYPE characterized_material_property = SELECT
+ (material_property_representation,
+ product_material_composition_relationship);
+END_TYPE;
+
+TYPE characterized_product_composition_value = SELECT
+ (measure_with_unit);
+END_TYPE;
+
+TYPE characterized_product_definition = SELECT
+ (product_definition,
+ product_definition_occurrence,
+ product_definition_relationship,
+ product_definition_relationship_relationship);
+END_TYPE;
+
+TYPE characterized_property_representation = SELECT
+ (action_property_representation,
+ dimensional_characteristic_representation,
+ property_definition_representation,
+ resource_property_representation);
+END_TYPE;
+
+TYPE characterized_resource_definition = SELECT
+ (action_resource,
+ action_resource_relationship,
+ action_resource_requirement);
+END_TYPE;
+
+TYPE chordal_deviation = positive_length_measure;
+END_TYPE;
+
+TYPE class_usage_effectivity_context_item = SELECT
+ (product_definition);
+END_TYPE;
+
+TYPE classification_item = SELECT
+ (action,
+ action_directive,
+ action_directive_relationship,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ action_request_solution,
+ action_request_status,
+ action_resource,
+ action_resource_relationship,
+ address,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment_relationship,
+ applied_contract_assignment,
+ applied_date_and_time_assignment,
+ applied_date_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_external_identification_assignment_relationship,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_person_organization,
+ approval_relationship,
+ approval_status,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ attribute_language_assignment,
+ breakdown_context,
+ breakdown_element_realization,
+ breakdown_of,
+ calendar_date,
+ certification,
+ change_element_sequence,
+ change_group,
+ characterized_class,
+ characterized_object,
+ class,
+ classified_item,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configuration_item_relationship,
+ context_dependent_unit,
+ contract,
+ contract_relationship,
+ conversion_based_unit,
+ date_and_time,
+ date_and_time_assignment,
+ date_assignment,
+ definitional_representation_relationship,
+ derived_unit,
+ descriptive_representation_item,
+ directed_action,
+ directed_action_assignment,
+ document_file,
+ document_relationship,
+ document_type,
+ effectivity,
+ effectivity_relationship,
+ envelope,
+ envelope_relationship,
+ evaluated_characteristic,
+ event_occurrence,
+ event_occurrence_relationship,
+ evidence,
+ executed_action,
+ feature_definition,
+ general_feature,
+ general_property,
+ general_property_relationship,
+ generic_property_relationship,
+ group,
+ group_relationship,
+ identification_assignment,
+ identification_assignment_relationship,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_definition_connection,
+ interface_definition_for,
+ in_zone,
+ language,
+ link_motion_relationship,
+ local_time,
+ location,
+ location_relationship,
+ material_designation,
+ material_designation_characterization,
+ measure_qualification,
+ measure_representation_item,
+ measure_with_unit,
+ message_relationship,
+ multi_language_attribute_assignment,
+ named_unit,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ plus_minus_tolerance,
+ process_operation,
+ process_plan,
+ process_product_association,
+ product,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_concept_relationship,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_usage,
+ product_definition_usage_relationship,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_context,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ retention,
+ satisfies_requirement,
+ security_classification,
+ security_classification_level,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_feature_definition_relationship,
+ state_definition_to_state_assignment_relationship,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_observed_role,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ time_interval_relationship,
+ type_qualifier,
+ uncertainty_measure_with_unit,
+ usage_association,
+ validation,
+ verification,
+ versioned_action_request,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE classified_item = SELECT
+ (product,
+ product_definition,
+ product_definition_formation);
+END_TYPE;
+
+TYPE closed_or_open_shell_select = SELECT
+ (closed_shell,
+ open_shell);
+END_TYPE;
+
+TYPE colour_type_enum = ENUMERATION OF
+ (rgb8,
+ rgbt8);
+END_TYPE;
+
+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;
+
+TYPE compound_inner_area_boundary = SELECT
+ (set_inner_area_boundary);
+END_TYPE;
+
+TYPE compound_item_definition = SELECT
+ (list_representation_item,
+ set_representation_item);
+END_TYPE;
+
+TYPE conductance_measure = REAL;
+END_TYPE;
+
+TYPE configuration_design_item = SELECT
+ (product_definition,
+ product_definition_formation,
+ product_definition_occurrence);
+END_TYPE;
+
+TYPE configured_effectivity_context_item = SELECT
+ (product_concept_feature_association);
+END_TYPE;
+
+TYPE configured_effectivity_item = SELECT
+ (action_relationship,
+ process_plan,
+ product_definition,
+ product_process_plan);
+END_TYPE;
+
+TYPE connected_edge_with_length_set_items = SELECT
+ (connected_edge_set,
+ path,
+ vertex_on_edge);
+END_TYPE;
+
+TYPE constraint_group_member = SELECT
+ (explicit_constraint,
+ simultaneous_constraint_group);
+END_TYPE;
+
+TYPE constructive_geometry_representation_or_shape_representation = SELECT
+ (constructive_geometry_representation,
+ shape_representation);
+END_TYPE;
+
+TYPE context_dependent_measure = REAL;
+END_TYPE;
+
+TYPE contract_item = SELECT
+ (action_directive,
+ action_method,
+ action_method_relationship,
+ alternate_product_relationship,
+ applied_action_method_assignment,
+ applied_classification_assignment,
+ applied_description_text_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ directed_action,
+ drawing_revision,
+ executed_action,
+ information_usage_right,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design,
+ organization,
+ organizational_project,
+ person_and_organization,
+ product,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_group,
+ product_group_relationship,
+ product_identification,
+ requirement_assignment,
+ requirement_source,
+ security_classification,
+ structured_message,
+ validation,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE contracted_item = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE count_measure = NUMBER;
+END_TYPE;
+
+TYPE csg_2d_area_select = SELECT
+ (axis2_placement_2d,
+ csg_primitive_solid_2d);
+END_TYPE;
+
+TYPE csg_2d_shape_select = SELECT
+ (axis2_placement_2d,
+ csg_solid_2d,
+ mapped_item);
+END_TYPE;
+
+TYPE csg_primitive = SELECT
+ (block,
+ bounded_primitive_2d,
+ cyclide_segment_solid,
+ eccentric_cone,
+ ellipsoid,
+ faceted_primitive,
+ rectangular_pyramid,
+ right_angular_wedge,
+ right_circular_cone,
+ right_circular_cylinder,
+ sphere,
+ torus);
+END_TYPE;
+
+TYPE csg_select = SELECT
+ (boolean_result,
+ csg_primitive);
+END_TYPE;
+
+TYPE csg_select_2d = SELECT
+ (boolean_result_2d,
+ bounded_primitive_2d);
+END_TYPE;
+
+TYPE current_element_assignment_select = SELECT
+ (add_element,
+ modify_element);
+END_TYPE;
+
+TYPE curve_font_or_scaled_curve_font_select = SELECT
+ (curve_style_font_and_scaling,
+ curve_style_font_select);
+END_TYPE;
+
+TYPE curve_on_surface = SELECT
+ (composite_curve_on_surface,
+ pcurve,
+ surface_curve);
+END_TYPE;
+
+TYPE curve_or_annotation_curve_occurrence = SELECT
+ (annotation_curve_occurrence,
+ curve);
+END_TYPE;
+
+TYPE curve_or_curve_set = SELECT
+ (curve,
+ geometric_curve_set);
+END_TYPE;
+
+TYPE curve_or_render = SELECT
+ (curve_style,
+ curve_style_rendering);
+END_TYPE;
+
+TYPE curve_or_surface_constraint_element = SELECT
+ (curve,
+ surface);
+END_TYPE;
+
+TYPE curve_style_font_select = SELECT
+ (curve_style_font,
+ externally_defined_curve_font,
+ pre_defined_curve_font);
+END_TYPE;
+
+TYPE curves_or_area = ENUMERATION OF
+ (curves,
+ area);
+END_TYPE;
+
+TYPE date_and_time_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_property,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_identification_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_usage_right,
+ approval,
+ approval_person_organization,
+ approval_status,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ certification,
+ class,
+ class_system,
+ configuration_design,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ data_equivalence_definition,
+ data_quality_definition,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action,
+ document,
+ document_file,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ envelope,
+ event_occurrence,
+ evidence,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_definition_connection,
+ interface_definition_for,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ person,
+ person_and_organization,
+ presentation_area,
+ product,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ property_definition,
+ property_definition_representation,
+ representation,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ rule_action,
+ security_classification,
+ security_classification_level,
+ shape_representation,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ validation,
+ verification,
+ verification_relationship,
+ versioned_action_request);
+END_TYPE;
+
+TYPE date_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_property,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_identification_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_usage_right,
+ approval,
+ approval_person_organization,
+ approval_status,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ certification,
+ class,
+ class_system,
+ configuration_design,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ data_equivalence_definition,
+ data_quality_definition,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action,
+ document,
+ document_file,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ envelope,
+ event_occurrence,
+ evidence,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_definition_connection,
+ interface_definition_for,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ person,
+ person_and_organization,
+ presentation_area,
+ product,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ property_definition,
+ property_definition_representation,
+ representation,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ security_classification,
+ security_classification_level,
+ shape_representation,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ validation,
+ verification,
+ verification_relationship,
+ versioned_action_request);
+END_TYPE;
+
+TYPE date_time_item = SELECT
+ (approval_person_organization,
+ certification,
+ change,
+ change_request,
+ contract,
+ product_definition,
+ security_classification,
+ start_request,
+ start_work);
+END_TYPE;
+
+TYPE date_time_or_event_occurrence = SELECT
+ (date_time_select,
+ event_occurrence);
+END_TYPE;
+
+TYPE date_time_select = SELECT
+ (date,
+ date_and_time,
+ local_time);
+END_TYPE;
+
+TYPE datum_or_common_datum = SELECT
+ (common_datum_list,
+ datum);
+END_TYPE;
+
+TYPE datum_reference_modifier = SELECT
+ (datum_reference_modifier_with_value,
+ simple_datum_reference_modifier);
+END_TYPE;
+
+TYPE datum_reference_modifier_type = ENUMERATION OF
+ (circular_or_cylindrical,
+ distance,
+ projected,
+ spherical);
+END_TYPE;
+
+TYPE datum_system_or_reference = SELECT
+ (datum_reference,
+ datum_system);
+END_TYPE;
+
+TYPE day_in_month_number = INTEGER;
+WHERE
+ WR1: {1 <= SELF <= 31};
+END_TYPE;
+
+TYPE day_in_week_number = INTEGER;
+WHERE
+ WR1: { 1 <= SELF <= 7 };
+END_TYPE;
+
+TYPE day_in_year_number = INTEGER;
+WHERE
+ WR1: {1 <= SELF <= 366};
+END_TYPE;
+
+TYPE defined_glyph_select = SELECT
+ (externally_defined_character_glyph,
+ pre_defined_character_glyph);
+END_TYPE;
+
+TYPE defined_symbol_select = SELECT
+ (externally_defined_symbol,
+ pre_defined_symbol);
+END_TYPE;
+
+TYPE derived_property_select = SELECT
+ (action_property,
+ dimensional_location,
+ dimensional_size,
+ geometric_tolerance,
+ property_definition,
+ resource_property);
+END_TYPE;
+
+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,
+ organizational_project,
+ organization_role,
+ person_and_organization,
+ person_and_organization_role,
+ property_definition_representation,
+ representation);
+END_TYPE;
+
+TYPE description_item = SELECT
+ (action,
+ action_directive,
+ action_directive_relationship,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ address,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ analysis_representation_context,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_classification_assignment_relationship,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_external_identification_assignment_relationship,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_location_assignment,
+ applied_location_representation_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_state_observed_assignment,
+ applied_state_type_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_relationship,
+ ascribable_state,
+ ascribable_state_relationship,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ breakdown_element_group_assignment,
+ certification,
+ change_element_sequence,
+ change_group,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configuration_item_relationship,
+ contract,
+ contract_relationship,
+ data_environment,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ document_file,
+ document_relationship,
+ effectivity,
+ effectivity_relationship,
+ envelope,
+ envelope_relationship,
+ evaluated_characteristic,
+ event_occurrence,
+ event_occurrence_relationship,
+ exclusive_product_concept_feature_category,
+ general_property,
+ general_property_relationship,
+ generic_property_relationship,
+ geometric_item_specific_usage,
+ global_uncertainty_assigned_context,
+ global_unit_assigned_context,
+ group,
+ group_relationship,
+ location,
+ location_relationship,
+ material_designation_characterization,
+ measure_qualification,
+ measure_with_unit,
+ message_relationship,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ organization_type,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ process_operation,
+ process_plan,
+ process_product_association,
+ product,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_concept_relationship,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_definition_usage,
+ product_definition_usage_relationship,
+ product_group_membership,
+ product_group_relationship,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_context,
+ representation_item,
+ representation_relationship,
+ requirement_for_action_resource,
+ retention,
+ satisfies_requirement,
+ security_classification,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_feature_definition,
+ shape_feature_definition_relationship,
+ state_definition_to_state_assignment_relationship,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_observed_role,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ state_type_role,
+ structured_message,
+ time_interval,
+ time_interval_relationship,
+ uncertainty_measure_with_unit,
+ uncertainty_qualifier,
+ usage_association,
+ verification_relationship,
+ versioned_action_request,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE descriptive_measure = STRING;
+END_TYPE;
+
+TYPE detailed_report_style_type = ENUMERATION OF
+ (inspected_element,
+ defective_element);
+END_TYPE;
+
+TYPE detailed_report_type = ENUMERATION OF
+ (measured_element,
+ inferior_quality_element);
+END_TYPE;
+
+TYPE dimension_count = INTEGER;
+WHERE
+ WR1: SELF > 0;
+END_TYPE;
+
+TYPE dimension_extent_usage = ENUMERATION OF
+ (origin,
+ target);
+END_TYPE;
+
+TYPE dimensional_characteristic = SELECT
+ (dimensional_location,
+ dimensional_size);
+END_TYPE;
+
+TYPE directed_tolerance_zone_type = ENUMERATION OF
+ (perpendicular,
+ parallel,
+ including);
+END_TYPE;
+
+TYPE direction_count_select = SELECT
+ (u_direction_count,
+ v_direction_count);
+END_TYPE;
+
+TYPE document_identifier_assigned_item = SELECT
+ (document);
+END_TYPE;
+
+TYPE document_reference_item = SELECT
+ (action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_person_organization,
+ approval_relationship,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ breakdown_context,
+ breakdown_of,
+ certification,
+ change_group,
+ characterized_class,
+ characterized_object,
+ class,
+ class_system,
+ condition,
+ configuration_design,
+ configuration_item,
+ contract,
+ contract_relationship,
+ date_and_time_assignment,
+ date_assignment,
+ descriptive_representation_item,
+ dimensional_size,
+ directed_action_assignment,
+ document_relationship,
+ effectivity,
+ effectivity_relationship,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_conditioned_data_quality_criterion,
+ externally_defined_dimension_definition,
+ externally_defined_item,
+ feature_definition,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ group,
+ group_relationship,
+ identification_assignment_relationship,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_definition_connection,
+ in_zone,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ presentation_area,
+ process_plan,
+ product,
+ product_category,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_process,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_definition_usage,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_process_plan,
+ product_related_product_category,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_requirement_type,
+ retention,
+ rule_set,
+ security_classification,
+ shape_aspect,
+ shape_aspect_relationship,
+ state_observed,
+ state_type,
+ structured_message,
+ time_interval,
+ time_interval_relationship,
+ usage_association,
+ validation,
+ value_representation_item,
+ verification,
+ verification_relationship,
+ versioned_action_request);
+END_TYPE;
+
+TYPE dose_equivalent_measure = REAL;
+END_TYPE;
+
+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;
+
+TYPE draughting_model_item_association_select = SELECT
+ (annotation_occurrence,
+ draughting_callout);
+END_TYPE;
+
+TYPE draughting_model_item_definition = SELECT
+ (angularity_tolerance,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_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_group_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_name_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ 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_relationship,
+ 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;
+
+TYPE draughting_model_item_select = SELECT
+ (axis2_placement,
+ camera_model,
+ draughting_callout,
+ mapped_item,
+ styled_item);
+END_TYPE;
+
+TYPE draughting_subfigure_representation_item = SELECT
+ (annotation_occurrence,
+ axis2_placement,
+ draughting_callout);
+END_TYPE;
+
+TYPE draughting_symbol_representation_item = SELECT
+ (annotation_curve_occurrence,
+ annotation_fill_area_occurrence,
+ annotation_symbol_occurrence,
+ annotation_text_occurrence,
+ axis2_placement);
+END_TYPE;
+
+TYPE draughting_titled_item = SELECT
+ (drawing_revision,
+ drawing_sheet_revision);
+END_TYPE;
+
+TYPE edge_or_curve = SELECT
+ (curve,
+ edge);
+END_TYPE;
+
+TYPE effectivity_item = SELECT
+ (action,
+ action_directive,
+ action_directive_relationship,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ alternative_solution_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment_relationship,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_external_identification_assignment_relationship,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval_relationship,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ breakdown_of,
+ class,
+ class_system,
+ condition,
+ conditional_effectivity,
+ configuration_design,
+ configuration_item,
+ configuration_item_relationship,
+ configured_effectivity_assignment,
+ contract,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ document_file,
+ document_relationship,
+ draughting_model,
+ drawing_revision,
+ effectivity_relationship,
+ event_occurrence_relationship,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_defined_general_property,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ generic_property_relationship,
+ group,
+ identification_assignment_relationship,
+ inclusion_product_concept_feature,
+ interface_connection,
+ interface_connector_design_to_planned,
+ interface_connector_design_to_realized,
+ interface_connector_occurrence,
+ interface_connector_planned_to_realized,
+ interface_definition_for,
+ in_zone,
+ link_motion_relationship,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ mechanical_design_geometric_presentation_representation,
+ multi_language_attribute_assignment,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ package_product_concept_feature,
+ person_and_organization,
+ person_and_organization_address,
+ presentation_area,
+ process_operation,
+ process_plan,
+ product,
+ product_class,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_concept_relationship,
+ product_definition,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_definition_usage,
+ product_definition_usage_relationship,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ security_classification,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_representation,
+ structured_message,
+ time_interval_relationship,
+ usage_association,
+ validation,
+ value_representation_item,
+ verification,
+ verification_relationship,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE electric_charge_measure = REAL;
+END_TYPE;
+
+TYPE electric_current_measure = REAL;
+END_TYPE;
+
+TYPE electric_potential_measure = REAL;
+END_TYPE;
+
+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;
+
+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;
+
+TYPE energy_measure = REAL;
+END_TYPE;
+
+TYPE equivalence_detected_difference_select = SELECT
+ (a3ms_inspected_equivalence_element_select,
+ area_measure,
+ assembly_component_usage,
+ binary_assembly_constraint,
+ cartesian_point,
+ connected_face_set,
+ context_dependent_shape_representation,
+ count_measure,
+ edge,
+ face,
+ length_measure,
+ multi_level_reference_designator,
+ point_on_curve,
+ point_on_surface,
+ volume_measure);
+END_TYPE;
+
+TYPE equivalence_measured_value_select = SELECT
+ (a3ma_length_measure_and_context_dependent_measure_pair,
+ area_measure,
+ boolean_value,
+ context_dependent_measure,
+ length_measure,
+ plane_angle_measure,
+ volume_measure);
+END_TYPE;
+
+TYPE equivalence_product_data_select = SELECT
+ (product_definition_or_reference,
+ product_definition_relationship);
+END_TYPE;
+
+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,
+ draughting_model,
+ drawing_revision,
+ executed_action,
+ general_organizational_data_select,
+ general_property,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organizational_project,
+ organization_relationship,
+ person_and_organization,
+ presentation_area,
+ 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,
+ requirement_for_action_resource,
+ resource_property,
+ security_classification_level,
+ shape_representation);
+END_TYPE;
+
+TYPE evidence_item = SELECT
+ (action_property,
+ action_property_representation,
+ analysis_assignment,
+ applied_action_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ date_and_time_assignment,
+ date_assignment,
+ measure_representation_item,
+ person,
+ person_and_organization,
+ product,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_context,
+ representation_item,
+ state_type,
+ structured_message,
+ validation,
+ value_representation_item,
+ verification);
+END_TYPE;
+
+TYPE expression_extension_select = SELECT
+ (expression_extension_numeric,
+ expression_extension_string);
+END_TYPE;
+
+TYPE extension_options = ENUMERATION OF
+ (eo_none,
+ eo_cont,
+ eo_cont_right,
+ eo_cont_left);
+END_TYPE;
+
+TYPE external_identification_item = SELECT
+ (action_directive,
+ action_method,
+ action_method_relationship,
+ action_relationship,
+ action_request_status,
+ address,
+ analysis_model,
+ analysis_representation_context,
+ applied_action_method_assignment,
+ applied_classification_assignment,
+ applied_external_identification_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ approval,
+ approval_person_organization,
+ approval_status,
+ assembly_bond_definition,
+ assembly_joint,
+ assembly_component_usage,
+ breakdown_context,
+ certification,
+ class,
+ composite_curve,
+ condition,
+ configuration_effectivity,
+ contract,
+ curve,
+ date_and_time_assignment,
+ date_assignment,
+ derived_unit,
+ document_file,
+ effectivity,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ event_occurrence,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_defined_class,
+ externally_defined_context_dependent_unit,
+ externally_defined_conversion_based_unit,
+ externally_defined_general_property,
+ externally_defined_representation_item,
+ external_source,
+ general_property,
+ generic_product_definition_reference,
+ group,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_definition,
+ interface_connector_occurrence,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_definition_for,
+ interface_specification_definition,
+ interface_specification_version,
+ loop,
+ material_designation,
+ named_unit,
+ organization,
+ organizational_address,
+ organizational_project,
+ oriented_surface,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ point_on_curve,
+ precision_qualifier,
+ process_operation,
+ process_plan,
+ product,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_concept_feature_category,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_group,
+ product_identification,
+ product_process_plan,
+ product_specification,
+ property_definition,
+ representation,
+ representation_item,
+ requirement_source,
+ satisfies_requirement,
+ security_classification,
+ shape_representation,
+ state_observed,
+ state_type,
+ structured_message,
+ surface,
+ time_interval,
+ trimmed_curve,
+ type_qualifier,
+ uncertainty_qualifier,
+ validation,
+ verification,
+ versioned_action_request,
+ vertex_point);
+END_TYPE;
+
+TYPE face_or_surface = SELECT
+ (face,
+ surface);
+END_TYPE;
+
+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;
+
+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,
+ texture_style_specification);
+END_TYPE;
+
+TYPE font_select = SELECT
+ (externally_defined_text_font,
+ pre_defined_text_font,
+ text_font);
+END_TYPE;
+
+TYPE force_measure = REAL;
+END_TYPE;
+
+TYPE founded_item_select = SELECT
+ (founded_item,
+ representation_item);
+END_TYPE;
+
+TYPE frequency_measure = REAL;
+END_TYPE;
+
+TYPE general_organizational_data_select = SELECT
+ (action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_person_organization,
+ approval_relationship,
+ approval_status,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ breakdown_element_group_assignment,
+ breakdown_element_realization,
+ breakdown_of,
+ certification,
+ characterized_product_concept_feature,
+ characterized_product_concept_feature_category,
+ class,
+ class_system,
+ condition,
+ conditional_concept_feature,
+ conditional_effectivity,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ date_and_time_assignment,
+ date_assignment,
+ directed_action_assignment,
+ document_file,
+ drawing_revision,
+ drawing_sheet_revision,
+ effectivity,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ frozen_assignment,
+ general_property,
+ general_property_relationship,
+ group,
+ group_relationship,
+ identification_assignment_relationship,
+ inclusion_product_concept_feature,
+ information_usage_right,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ organization,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ presentation_area,
+ process_operation,
+ process_plan,
+ product,
+ product_class,
+ 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_group_assignment,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_definition_usage,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ representation_item,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ requirement_view_definition_relationship,
+ security_classification,
+ shape_representation,
+ value_representation_item,
+ versioned_action_request);
+END_TYPE;
+
+TYPE generalized_surface_select = SELECT
+ (face_surface,
+ surface,
+ surfaced_open_shell);
+END_TYPE;
+
+TYPE generic_property_definition_select = SELECT
+ (action_property,
+ dimensional_location,
+ dimensional_size,
+ property_definition,
+ resource_property);
+END_TYPE;
+
+TYPE geometric_constraint_element = SELECT
+ (curve,
+ direction,
+ point,
+ surface,
+ vector);
+END_TYPE;
+
+TYPE geometric_item_specific_usage_select = SELECT
+ (shape_aspect,
+ shape_aspect_relationship);
+END_TYPE;
+
+TYPE geometric_model_item = SELECT
+ (connected_face_set,
+ edge_loop,
+ geometric_representation_item);
+END_TYPE;
+
+TYPE geometric_set_select = SELECT
+ (annotation_text,
+ curve,
+ placement,
+ planar_box,
+ point,
+ surface);
+END_TYPE;
+
+TYPE geometric_tolerance_auxiliary_classification_enum = ENUMERATION OF
+ (all_over,
+ unless_otherwise_specified);
+END_TYPE;
+
+TYPE geometric_tolerance_modifier = ENUMERATION OF
+ (any_cross_section,
+ associated_least_square_feature,
+ associated_maximum_inscribed_feature,
+ associated_minimum_inscribed_feature,
+ associated_minmax_feature,
+ associated_tangent_feature,
+ circle_a,
+ common_zone,
+ each_radial_element,
+ free_state,
+ least_material_requirement,
+ line_element,
+ major_diameter,
+ maximum_material_requirement,
+ minor_diameter,
+ not_convex,
+ peak_height,
+ pitch_diameter,
+ reciprocity_requirement,
+ reference_least_square_feature_with_external_material_constraint,
+ reference_least_square_feature_with_internal_material_constraint,
+ reference_least_square_feature_without_constraint,
+ reference_maximum_inscribed_feature,
+ reference_minimax_feature_with_external_material_constraint,
+ reference_minimax_feature_with_internal_material_constraint,
+ reference_minimax_feature_without_constraint,
+ reference_minimum_circumscribed_feature,
+ separate_requirement,
+ standard_deviation,
+ statistical_tolerance,
+ tangent_plane,
+ total_range_deviations,
+ united_feature,
+ valley_depth);
+END_TYPE;
+
+TYPE geometric_tolerance_target = SELECT
+ (dimensional_location,
+ dimensional_size,
+ product_definition_shape,
+ shape_aspect);
+END_TYPE;
+
+TYPE gps_filtration_specification_target = SELECT
+ (geometric_tolerance);
+END_TYPE;
+
+TYPE gps_filtration_type = SELECT
+ (geometric_tolerance_modifier);
+END_TYPE;
+
+TYPE groupable_item = SELECT (
+ address,
+ alternate_product_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_attribute_classification_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_group_assignment,
+ applied_identification_assignment,
+ applied_location_assignment,
+ applied_location_representation_assignment,
+ applied_name_assignment,
+ applied_organization_assignment,
+ applied_organization_type_assignment,
+ applied_organizational_project_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ approval,
+ approval_person_organization,
+ approval_relationship,
+ approval_status,
+ ascribable_state,
+ ascribable_state_relationship,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ attribute_language_assignment,
+ breakdown_element_group_assignment,
+ calendar_date,
+ certification,
+ component_feature,
+ configuration_design,
+ configuration_item,
+ configuration_item_relationship,
+ context_dependent_shape_representation,
+ contract,
+ contract_relationship,
+ coordinated_universal_time_offset,
+ date_and_time,
+ date_and_time_assignment,
+ date_assignment,
+ derived_unit,
+ derived_unit_element,
+ description_text,
+ document_file,
+ document_relationship,
+ effectivity,
+ effectivity_relationship,
+ event_occurrence,
+ event_occurrence_relationship,
+ evidence,
+ external_source,
+ general_property,
+ general_property_relationship,
+ geometric_item_specific_usage,
+ geometric_representation_item,
+ group_relationship,
+ instanced_feature,
+ interface_connector_definition,
+ interface_definition_connection,
+ interface_definition_for,
+ item_defined_transformation,
+ local_time,
+ mapped_item,
+ measure_qualification,
+ measure_with_unit,
+ multi_language_attribute_assignment,
+ named_unit,
+ organization,
+ organization_relationship,
+ organization_type,
+ organizational_project,
+ organizational_project_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ precision_qualifier,
+ product,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_group_membership,
+ product_group_relationship,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ replicate_feature,
+ representation,
+ representation_context,
+ representation_item,
+ representation_relationship,
+ representation_relationship_with_transformation,
+ security_classification,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_representation_relationship,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_observed_role,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ styled_item,
+ time_interval,
+ time_interval_assignment,
+ time_interval_relationship,
+ time_interval_role,
+ topological_representation_item,
+ transition_feature,
+ type_qualifier,
+ uncertainty_qualifier,
+ verification_relationship,
+ versioned_action_request);
+ WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
+END_TYPE;
+
+TYPE hour_in_day = INTEGER;
+WHERE
+ WR1: { 0 <= SELF < 24 };
+END_TYPE;
+
+TYPE id_attribute_select = SELECT
+ (action,
+ address,
+ application_context,
+ ascribable_state_relationship,
+ dimensional_size,
+ geometric_tolerance,
+ group,
+ organizational_project,
+ product_category,
+ property_definition,
+ representation,
+ shape_aspect,
+ shape_aspect_relationship,
+ topological_representation_item);
+END_TYPE;
+
+TYPE identification_item = SELECT
+ (action,
+ action_directive,
+ action_directive_relationship,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ address,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ analysis_assignment,
+ analysis_representation_context,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment_relationship,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_external_identification_assignment_relationship,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_relationship,
+ approval_status,
+ ascribable_state,
+ ascribable_state_relationship,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ breakdown_element_realization,
+ breakdown_of,
+ certification,
+ change_group,
+ characterized_class,
+ class,
+ class_system,
+ configuration_effectivity,
+ configuration_item,
+ configuration_item_relationship,
+ contract,
+ contract_relationship,
+ date_and_time_assignment,
+ date_assignment,
+ degenerate_pcurve,
+ dimensional_size,
+ dimensional_size_with_path,
+ directed_action_assignment,
+ document_file,
+ document_relationship,
+ document_type,
+ draughting_model,
+ effectivity,
+ effectivity_relationship,
+ envelope,
+ envelope_relationship,
+ evaluated_characteristic,
+ event_occurrence,
+ event_occurrence_relationship,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ generic_property_relationship,
+ group,
+ group_relationship,
+ identification_assignment_relationship,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_definition,
+ interface_connector_design,
+ interface_connector_occurrence,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_definition_for,
+ interface_specification_definition,
+ interface_specification_version,
+ link_motion_relationship,
+ material_designation,
+ material_designation_characterization,
+ measure_representation_item,
+ mechanical_design_geometric_presentation_representation,
+ message_relationship,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organization_relationship,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ point_on_surface,
+ presentation_area,
+ process_operation,
+ process_plan,
+ product,
+ product_category,
+ product_class,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_concept_feature_category,
+ product_concept_relationship,
+ product_definition,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_definition_relationship,
+ product_definition_usage,
+ product_definition_usage_relationship,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_relationship,
+ property_definition_representation,
+ representation,
+ representation_context,
+ representation_relationship,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ retention,
+ rule_set,
+ satisfies_requirement,
+ security_classification,
+ security_classification_level,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_feature_definition,
+ shape_feature_definition_relationship,
+ shape_representation,
+ state_definition_to_state_assignment_relationship,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ time_interval,
+ time_interval_relationship,
+ usage_association,
+ validation,
+ verification,
+ verification_relationship,
+ versioned_action_request,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE identifier = STRING;
+END_TYPE;
+
+TYPE idrm_marked_item = SELECT
+ (document_file,
+ product_definition);
+END_TYPE;
+
+TYPE illuminance_measure = REAL;
+END_TYPE;
+
+TYPE inductance_measure = REAL;
+END_TYPE;
+
+TYPE input_selector = positive_integer;
+END_TYPE;
+
+TYPE inspected_ecdq_element_select = inspected_element_select;
+WHERE
+ wr1 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_COMPOSITE_CURVE_SELECT' IN TYPEOF(SELF));
+ wr2 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' IN TYPEOF(SELF));
+ wr3 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_OR_OPEN_SHELL_SELECT' IN TYPEOF(SELF));
+ wr4 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN TYPEOF(SELF));
+ wr5 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF));
+ wr6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(SELF));
+ wr7 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF(SELF));
+ wr8 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(SELF));
+ wr9 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(SELF));
+ wr10 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(SELF));
+ wr11 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF(SELF));
+ wr12 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(SELF));
+ wr13 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(SELF));
+ wr14 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(SELF));
+END_TYPE;
+
+TYPE inspected_element_select = SELECT
+ (assembly_component_usage,
+ axis2_placement_3d,
+ b_spline_or_composite_curve_select,
+ b_spline_or_rectangular_composite_surface_select,
+ cartesian_transformation_operator_3d,
+ closed_or_open_shell_select,
+ connected_face_set,
+ curve,
+ direction,
+ edge_curve,
+ edge_loop,
+ face_surface,
+ global_uncertainty_assigned_context,
+ global_unit_assigned_context,
+ group,
+ manifold_solid_brep,
+ placement,
+ point,
+ presentation_layer_assignment,
+ representation_item,
+ styled_item,
+ surface,
+ vertex_point);
+END_TYPE;
+
+TYPE inspected_equivalence_element_select = SELECT
+ (connected_edge_set,
+ connected_face_set,
+ externally_defined_representation_item,
+ manifold_solid_brep,
+ point_cloud_dataset,
+ product_definition_or_reference,
+ shape_representation,
+ shell_based_surface_model,
+ shell_based_wireframe_model,
+ vertex_point);
+END_TYPE;
+
+TYPE inspected_shape_element_select = inspected_element_select;
+WHERE
+ wr1 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(SELF));
+ wr2 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF));
+ wr3 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_TRANSFORMATION_OPERATOR_3D' IN TYPEOF(SELF));
+ wr4 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT' IN TYPEOF(SELF));
+ wr5 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(SELF));
+ wr6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
+ wr7 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT' IN TYPEOF(SELF));
+ wr8 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(SELF));
+ wr9 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(SELF));
+END_TYPE;
+
+TYPE instance_usage_context_select = SELECT
+ (process_product_association,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_definition_usage);
+END_TYPE;
+
+TYPE internal_or_reflected_shape_aspect = SELECT
+ (identifier,
+ shape_aspect);
+END_TYPE;
+
+TYPE interpolation_type = ENUMERATION OF
+ (undefined_interpolation_type,
+ discontinuous_interpolation_type,
+ synchronous_interpolation_type,
+ linear_interpolation_type);
+END_TYPE;
+
+TYPE invisibility_context = SELECT
+ (draughting_model,
+ presentation_representation,
+ presentation_set);
+END_TYPE;
+
+TYPE invisible_item = SELECT
+ (draughting_callout,
+ presentation_layer_assignment,
+ representation,
+ styled_item);
+END_TYPE;
+
+TYPE ir_usage_item = action_items;
+END_TYPE;
+
+TYPE item_identified_representation_usage_definition = SELECT
+ (applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_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_group_assignment,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_name_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ characterized_object,
+ dimensional_size,
+ geometric_tolerance,
+ product_definition_relationship,
+ property_definition,
+ represented_definition);
+END_TYPE;
+
+TYPE item_identified_representation_usage_select = SELECT
+ (list_representation_item,
+ representation_item,
+ set_representation_item);
+END_TYPE;
+
+TYPE kinematic_analysis_definition = SELECT
+ (interpolated_configuration_sequence,
+ prescribed_path);
+END_TYPE;
+
+TYPE kinematic_link_representation_items = SELECT
+ (curve,
+ point,
+ rigid_placement,
+ surface);
+END_TYPE;
+
+TYPE kinematic_result = SELECT
+ (interpolated_configuration_sequence,
+ resulting_path);
+END_TYPE;
+
+TYPE kinematic_topology_representation_select = SELECT
+ (kinematic_topology_directed_structure,
+ kinematic_topology_network_structure,
+ kinematic_topology_structure);
+END_TYPE;
+
+TYPE knot_type = ENUMERATION OF
+ (uniform_knots,
+ quasi_uniform_knots,
+ piecewise_bezier_knots,
+ unspecified);
+END_TYPE;
+
+TYPE label = STRING;
+END_TYPE;
+
+TYPE layered_item = SELECT
+ (presentation_representation,
+ representation_item);
+END_TYPE;
+
+TYPE length_measure = REAL;
+END_TYPE;
+
+TYPE length_or_plane_angle_measure_with_unit_select = SELECT
+ (length_measure_with_unit,
+ plane_angle_measure_with_unit);
+END_TYPE;
+
+TYPE length_to_height_ratio = ratio_measure;
+END_TYPE;
+
+TYPE limit_condition = ENUMERATION OF
+ (maximum_material_condition,
+ least_material_condition,
+ regardless_of_feature_size);
+END_TYPE;
+
+TYPE linear_geometry_constraint_element = SELECT
+ (direction,
+ line,
+ plane,
+ vector);
+END_TYPE;
+
+TYPE linearly_independent_enum = ENUMERATION OF
+ (independent,
+ not_independent,
+ not_tested);
+END_TYPE;
+
+TYPE link_or_shape_representation = SELECT
+ (kinematic_link_representation,
+ shape_representation);
+END_TYPE;
+
+TYPE list_item_defined_transformation = LIST [2 : ?] OF item_defined_transformation;
+END_TYPE;
+
+TYPE list_of_reversible_topology_item = LIST [0 : ?] OF reversible_topology_item;
+END_TYPE;
+
+TYPE list_representation_item = LIST [1 : ?] OF representation_item;
+END_TYPE;
+
+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;
+
+TYPE location_in_aggregate_item = LIST [1 : ?] OF integer_representation_item;
+END_TYPE;
+
+TYPE location_item = SELECT
+ (assembly_component_usage,
+ document_file,
+ interface_connection,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ organization,
+ organizational_project,
+ organization_type,
+ person,
+ person_and_organization,
+ product,
+ product_definition,
+ product_definition_formation,
+ product_definition_relationship,
+ product_group);
+END_TYPE;
+
+TYPE location_of_extreme_value_select = SELECT
+ (boundary_curve_of_b_spline_or_rectangular_composite_surface,
+ b_spline_curve_knot_locator,
+ b_spline_curve_segment,
+ b_spline_surface_knot_locator,
+ b_spline_surface_patch,
+ b_spline_surface_strip,
+ composite_curve_transition_locator,
+ face_bound,
+ inspected_shape_element_select,
+ oriented_edge,
+ point_on_edge_curve,
+ point_on_face_surface,
+ rectangular_composite_surface_transition_locator,
+ subedge,
+ subface);
+END_TYPE;
+
+TYPE location_representation_item = SELECT
+ (organizational_address,
+ person_and_organization_address,
+ product,
+ product_definition_formation);
+END_TYPE;
+
+TYPE lower_upper = ENUMERATION OF
+ (lower,
+ upper);
+END_TYPE;
+
+TYPE luminous_flux_measure = REAL;
+END_TYPE;
+
+TYPE luminous_intensity_measure = REAL;
+END_TYPE;
+
+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,
+ spherical_cap,
+ step,
+ slot,
+ thread,
+ turned_knurl);
+END_TYPE;
+
+TYPE magnetic_flux_density_measure = REAL;
+END_TYPE;
+
+TYPE magnetic_flux_measure = REAL;
+END_TYPE;
+
+TYPE marker_select = SELECT
+ (marker_type,
+ pre_defined_marker);
+END_TYPE;
+
+TYPE marker_type = ENUMERATION OF
+ (dot,
+ x,
+ plus,
+ asterisk,
+ ring,
+ square,
+ triangle);
+END_TYPE;
+
+TYPE mass_measure = REAL;
+END_TYPE;
+
+TYPE maths_atom = SELECT
+ (maths_enum_atom,
+ maths_simple_atom);
+END_TYPE;
+
+TYPE maths_boolean = BOOLEAN;
+END_TYPE;
+
+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;
+
+TYPE maths_expression = SELECT
+ (atom_based_value,
+ generic_expression,
+ maths_tuple);
+END_TYPE;
+
+TYPE maths_function_select = SELECT
+ (elementary_function_enumerators,
+ maths_function);
+END_TYPE;
+
+TYPE maths_integer = INTEGER;
+END_TYPE;
+
+TYPE maths_logical = LOGICAL;
+END_TYPE;
+
+TYPE maths_number = NUMBER;
+END_TYPE;
+
+TYPE maths_real = REAL;
+END_TYPE;
+
+TYPE maths_simple_atom = SELECT
+ (maths_boolean,
+ maths_integer,
+ maths_logical,
+ maths_number,
+ maths_real,
+ maths_string);
+END_TYPE;
+
+TYPE maths_space_or_function = SELECT
+ (maths_function,
+ maths_space);
+END_TYPE;
+
+TYPE maths_string = STRING;
+END_TYPE;
+
+TYPE maths_tuple = LIST [0 : ?] OF maths_value;
+END_TYPE;
+
+TYPE maths_value = SELECT
+ (atom_based_value,
+ maths_tuple,
+ generic_expression);
+WHERE
+ constancy: NOT ('GENERIC_EXPRESSION' IN stripped_typeof(SELF)) OR
+ expression_is_constant(SELF);
+END_TYPE;
+
+TYPE maximum_edge_length = positive_length_measure;
+END_TYPE;
+
+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;
+
+TYPE measured_value_select = SELECT
+ (boolean_value,
+ measure_value,
+ plane_angle_and_length_pair,
+ plane_angle_and_ratio_pair);
+END_TYPE;
+
+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;
+
+TYPE mechanical_design_geometric_presentation_area_items = SELECT
+ (axis2_placement,
+ mapped_item);
+END_TYPE;
+
+TYPE mechanical_design_geometric_presentation_representation_items = SELECT
+ (axis2_placement,
+ camera_model_d3,
+ mapped_item,
+ styled_item);
+END_TYPE;
+
+TYPE mechanical_design_shaded_presentation_area_items = SELECT
+ (axis2_placement,
+ mapped_item);
+END_TYPE;
+
+TYPE mechanical_design_shaded_presentation_representation_items = SELECT
+ (axis2_placement,
+ camera_model_d3,
+ mapped_item,
+ styled_item);
+END_TYPE;
+
+TYPE message = STRING;
+END_TYPE;
+
+TYPE minute_in_hour = INTEGER;
+WHERE
+ WR1: { 0 <= SELF <= 59 };
+END_TYPE;
+
+TYPE month_in_year_number = INTEGER;
+WHERE
+ WR1: { 1 <= SELF <= 12 };
+END_TYPE;
+
+TYPE multi_language_attribute_item = SELECT
+ (action,
+ action_directive,
+ action_directive_relationship,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ action_relationship,
+ actuated_kinematic_pair,
+ alternate_product_relationship,
+ alternative_solution_relationship,
+ analysis_assignment,
+ analysis_representation_context,
+ application_context,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_action_request_assignment,
+ applied_approval_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment_relationship,
+ applied_contract_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_external_identification_assignment,
+ applied_external_identification_assignment_relationship,
+ applied_identification_assignment,
+ applied_ineffectivity_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_time_interval_assignment,
+ applied_usage_right,
+ approval,
+ approval_relationship,
+ approval_status,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ assignment_object_relationship,
+ attribute_value_assignment,
+ breakdown_context,
+ breakdown_element_realization,
+ breakdown_of,
+ certification,
+ certification_type,
+ change_element_sequence,
+ change_group,
+ class,
+ colour,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configuration_item_relationship,
+ contract,
+ contract_relationship,
+ data_environment,
+ date_role,
+ date_time_role,
+ descriptive_representation_item,
+ directed_action_assignment,
+ document_file,
+ document_relationship,
+ document_usage_role,
+ draughting_title,
+ effectivity,
+ effectivity_relationship,
+ envelope,
+ envelope_relationship,
+ evaluated_characteristic,
+ event_occurrence,
+ event_occurrence_relationship,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_defined_class,
+ external_source,
+ general_property,
+ general_property_relationship,
+ generic_property_relationship,
+ geometric_representation_item,
+ geometric_tolerance,
+ global_uncertainty_assigned_context,
+ global_unit_assigned_context,
+ group,
+ group_relationship,
+ identification_assignment_relationship,
+ identification_role,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ interface_definition_for,
+ in_zone,
+ kinematic_pair,
+ link_motion_relationship,
+ make_from_usage_option,
+ mapped_item,
+ material_designation_characterization,
+ measure_qualification,
+ measure_with_unit,
+ message_relationship,
+ name_assignment,
+ object_role,
+ organization,
+ organizational_address,
+ organizational_project,
+ organizational_project_relationship,
+ organizational_project_role,
+ organization_relationship,
+ organization_role,
+ package_product_concept_feature,
+ person,
+ person_and_organization,
+ person_and_organization_address,
+ person_and_organization_role,
+ presentation_layer_assignment,
+ process_operation,
+ process_plan,
+ process_product_association,
+ product,
+ product_concept,
+ product_concept_context,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_concept_relationship,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_shape,
+ product_definition_substitute,
+ product_definition_usage,
+ product_definition_usage_relationship,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_group,
+ product_group_relationship,
+ product_identification,
+ product_process_plan,
+ product_related_product_category,
+ product_relationship,
+ product_specification,
+ property_definition,
+ property_definition_relationship,
+ property_definition_representation,
+ qualitative_uncertainty,
+ representation,
+ representation_context,
+ representation_item,
+ representation_relationship,
+ representation_relationship_with_transformation,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ resource_requirement_type,
+ retention,
+ satisfies_requirement,
+ security_classification,
+ security_classification_assignment,
+ shape_aspect,
+ shape_aspect_relationship,
+ shape_feature_definition,
+ shape_feature_definition_relationship,
+ shape_representation,
+ state_definition_to_state_assignment_relationship,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ styled_item,
+ time_interval,
+ time_interval_relationship,
+ time_interval_role,
+ topological_representation_item,
+ uncertainty_measure_with_unit,
+ uncertainty_qualifier,
+ usage_association,
+ validation,
+ verification,
+ verification_relationship,
+ versioned_action_request,
+ versioned_action_request_relationship);
+END_TYPE;
+
+TYPE multi_or_next_assembly_usage_occurrence = SELECT
+ (multi_level_reference_designator,
+ next_assembly_usage_occurrence);
+END_TYPE;
+
+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;
+
+TYPE name_item = SELECT
+ (applied_action_assignment,
+ applied_action_method_assignment,
+ assembly_component_usage,
+ external_class_library,
+ group,
+ group_relationship,
+ product,
+ product_definition);
+END_TYPE;
+
+TYPE non_negative_length_measure = length_measure;
+WHERE
+ WR1: SELF >= 0.0;
+END_TYPE;
+
+TYPE non_negative_real = REAL;
+WHERE
+ WR1: 0.0 <= SELF;
+END_TYPE;
+
+TYPE nonnegative_integer = INTEGER;
+WHERE
+nonnegativity: SELF >= 0;
+END_TYPE;
+
+TYPE null_style = ENUMERATION OF
+ (null);
+END_TYPE;
+
+TYPE numeric_measure = NUMBER;
+END_TYPE;
+
+TYPE one_or_two = positive_integer;
+WHERE in_range: (SELF = 1) OR (SELF = 2);
+END_TYPE;
+
+TYPE open_closed = ENUMERATION OF
+ (open,
+ closed);
+END_TYPE;
+
+TYPE ordering_type = ENUMERATION OF
+ (by_rows,
+ by_columns);
+END_TYPE;
+
+TYPE organization_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_property,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_identification_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ approval,
+ approval_status,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ certification,
+ class,
+ class_system,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ data_equivalence_definition,
+ data_quality_definition,
+ date_and_time_assignment,
+ date_assignment,
+ document_file,
+ document_type,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ envelope,
+ event_occurrence,
+ evidence,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ information_right,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ interface_definition_for,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organization,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ person_and_organization,
+ presentation_area,
+ product,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ rule_action,
+ satisfies_requirement,
+ security_classification,
+ security_classification_level,
+ shape_representation,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ validation,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE organization_type_item = SELECT
+ (organization);
+END_TYPE;
+
+TYPE orientation_basis_select = SELECT
+ (axis2_placement_3d,
+ min_and_major_ply_orientation_basis);
+END_TYPE;
+
+TYPE oriented_tolerance_zone_type = ENUMERATION OF
+ (perpendicular,
+ parallel,
+ angular);
+END_TYPE;
+
+TYPE parallel_offset_type = ENUMERATION OF
+ (curve_2d_offset,
+ curve_3d_offset,
+ surface_offset);
+END_TYPE;
+
+TYPE parameter_value = REAL;
+END_TYPE;
+
+TYPE path_or_composite_curve = SELECT
+ (composite_curve,
+ path);
+END_TYPE;
+
+TYPE pcurve_or_surface = SELECT
+ (pcurve,
+ surface);
+END_TYPE;
+
+TYPE person_and_organization_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_property,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_certification_assignment,
+ applied_classification_assignment,
+ applied_contract_assignment,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_effectivity_assignment,
+ applied_event_occurrence_assignment,
+ applied_identification_assignment,
+ applied_organizational_project_assignment,
+ applied_organization_assignment,
+ applied_person_and_organization_assignment,
+ applied_security_classification_assignment,
+ approval,
+ approval_status,
+ ascribable_state,
+ assembly_component_usage_substitute,
+ certification,
+ class,
+ class_system,
+ configuration_design,
+ configuration_effectivity,
+ configuration_item,
+ configured_effectivity_assignment,
+ contract,
+ data_equivalence_definition,
+ data_quality_definition,
+ date_and_time_assignment,
+ date_assignment,
+ document_file,
+ document_type,
+ draughting_model,
+ drawing_revision,
+ effectivity,
+ envelope,
+ event_occurrence,
+ evidence,
+ executed_action,
+ general_property,
+ general_property_relationship,
+ information_usage_right,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ interface_definition_for,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organization,
+ organizational_address,
+ organizational_project,
+ organization_relationship,
+ person_and_organization,
+ presentation_area,
+ product,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_association,
+ product_concept_feature_category,
+ product_concept_feature_category_usage,
+ product_definition,
+ product_definition_context,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_relationship,
+ product_definition_substitute,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ requirement_assignment,
+ requirement_for_action_resource,
+ requirement_source,
+ resource_property,
+ rule_action,
+ security_classification,
+ security_classification_level,
+ shape_representation,
+ state_observed,
+ state_observed_assignment,
+ state_observed_relationship,
+ state_type,
+ state_type_assignment,
+ state_type_relationship,
+ structured_message,
+ validation,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE person_organization_select = SELECT
+ (organization,
+ person,
+ person_and_organization);
+END_TYPE;
+
+TYPE picture_representation_item_select = SELECT
+ (axis2_placement_2d,
+ planar_box,
+ styled_item);
+END_TYPE;
+
+TYPE planar_curve_select = SELECT
+ (line,
+ conic,
+ trimmed_curve,
+ pcurve,
+ surface_curve);
+WHERE
+ WR1: SELF\geometric_representation_item.dim = 3;
+ WR2: check_curve_planarity(SELF);
+END_TYPE;
+
+TYPE plane_angle_measure = REAL;
+END_TYPE;
+
+TYPE plane_or_planar_box = SELECT
+ (planar_box,
+ plane);
+END_TYPE;
+
+TYPE point_and_vector_member = SELECT
+ (direction,
+ point);
+END_TYPE;
+
+TYPE point_and_vector_members = LIST [2 : 3] OF point_and_vector_member;
+END_TYPE;
+
+TYPE point_array_members = LIST [1 : ?] OF point_and_vector;
+END_TYPE;
+
+TYPE point_cloud_set_or_superset = SELECT
+ (point_cloud_dataset,
+ point_cloud_superdataset);
+END_TYPE;
+
+TYPE point_curve_or_surface_constraint_element = SELECT
+ (curve,
+ point,
+ surface);
+END_TYPE;
+
+TYPE point_path_members = LIST [1 : ?] OF point_and_vector;
+END_TYPE;
+
+TYPE point_placement_shape_representation_item = SELECT
+ (axis2_placement_3d,
+ compound_representation_item,
+ mapped_item);
+END_TYPE;
+
+TYPE positive_integer = nonnegative_integer;
+WHERE positivity: SELF > 0;
+END_TYPE;
+
+TYPE positive_length_measure = non_negative_length_measure;
+WHERE
+ WR1: SELF > 0.0;
+END_TYPE;
+
+TYPE positive_plane_angle_measure = plane_angle_measure;
+WHERE
+ WR1: SELF > 0.0;
+END_TYPE;
+
+TYPE positive_ratio_measure = ratio_measure;
+WHERE
+ WR1: SELF > 0.0;
+END_TYPE;
+
+TYPE power_measure = REAL;
+END_TYPE;
+
+TYPE preferred_ordering = ENUMERATION OF
+ (extremity_order,
+ detected_order);
+END_TYPE;
+
+TYPE preferred_report_ordering = ENUMERATION OF
+ (in_notable_order,
+ in_detected_order);
+END_TYPE;
+
+TYPE preferred_surface_curve_representation = ENUMERATION OF
+ (curve_3d,
+ pcurve_s1,
+ pcurve_s2);
+END_TYPE;
+
+TYPE presentable_text = STRING;
+WHERE
+ WR1: control_characters_free(SELF);
+END_TYPE;
+
+TYPE presentation_representation_select = SELECT
+ (presentation_representation,
+ presentation_set);
+END_TYPE;
+
+TYPE presentation_size_assignment_select = SELECT
+ (area_in_set,
+ presentation_area,
+ presentation_view);
+END_TYPE;
+
+TYPE presentation_style_select = SELECT
+ (curve_style,
+ externally_defined_style,
+ fill_area_style,
+ null_style,
+ point_style,
+ surface_style_usage,
+ symbol_style,
+ texture_style_tessellation_specification,
+ text_style);
+END_TYPE;
+
+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;
+
+TYPE pressure_measure = REAL;
+END_TYPE;
+
+TYPE previous_element_assignment_select = SELECT
+ (delete_element,
+ modify_element);
+END_TYPE;
+
+TYPE product_definition_occurrence_or_reference = SELECT
+ (product_definition_occurrence,
+ product_definition_occurrence_reference);
+END_TYPE;
+
+TYPE product_definition_or_assembly_relationship = SELECT
+ (assembly_component_usage,
+ product_definition);
+END_TYPE;
+
+TYPE product_definition_or_breakdown_element_usage = SELECT
+ (product,
+ product_definition,
+ product_definition_formation,
+ product_definition_usage);
+END_TYPE;
+
+TYPE product_definition_or_product_definition_relationship = SELECT
+ (interface_connector_occurrence,
+ product,
+ product_definition,
+ product_definition_usage,
+ product_group);
+END_TYPE;
+
+TYPE product_definition_or_reference = SELECT
+ (generic_product_definition_reference,
+ product_definition,
+ product_definition_occurrence);
+END_TYPE;
+
+TYPE product_definition_or_reference_or_occurrence = product_definition_or_reference;
+END_TYPE;
+
+TYPE product_or_formation_or_definition = SELECT
+ (product,
+ product_definition,
+ product_definition_formation);
+END_TYPE;
+
+TYPE product_select = SELECT
+ (product,
+ product_concept,
+ product_definition_formation,
+ product_group);
+END_TYPE;
+
+TYPE product_space = SELECT
+ (uniform_product_space);
+END_TYPE;
+
+TYPE project_item = SELECT
+ (action_method,
+ action_method_relationship,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ assembly_component_usage,
+ configuration_item,
+ executed_action,
+ measure_representation_item,
+ product,
+ product_concept,
+ product_definition,
+ product_definition_formation,
+ product_definition_occurrence,
+ product_definition_occurrence_reference,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ property_definition_representation,
+ representation,
+ representation_item,
+ value_representation_item);
+END_TYPE;
+
+TYPE property_or_shape_select = SELECT
+ (property_definition,
+ shape_definition);
+END_TYPE;
+
+TYPE property_variable_rep_select = SELECT
+ (dimensional_size,
+ representation);
+END_TYPE;
+
+TYPE radial_geometry_constraint_element = SELECT
+ (circle,
+ conical_surface,
+ cylindrical_surface,
+ right_circular_cone,
+ right_circular_cylinder,
+ sphere,
+ spherical_surface);
+END_TYPE;
+
+TYPE radioactivity_measure = REAL;
+END_TYPE;
+
+TYPE ratio_measure = REAL;
+END_TYPE;
+
+TYPE real_interval = SELECT
+ (real_interval_from_min,
+ real_interval_to_max,
+ finite_real_interval,
+ elementary_space);
+WHERE
+ WR1: NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR
+ (SELF\elementary_space.space_id = es_reals);
+END_TYPE;
+
+TYPE rendering_properties_select = SELECT
+ (surface_style_reflectance_ambient,
+ surface_style_transparent);
+END_TYPE;
+
+TYPE repackage_options = ENUMERATION OF
+ (ro_nochange,
+ ro_wrap_as_tuple,
+ ro_unwrap_tuple);
+END_TYPE;
+
+TYPE representation_or_representation_reference = SELECT
+ (representation,
+ representation_reference);
+END_TYPE;
+
+TYPE representation_proxy_select = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE representative_value_type = ENUMERATION OF
+ (average_value,
+ max_value,
+ min_value,
+ min_max_value);
+END_TYPE;
+
+TYPE represented_definition = SELECT
+ (general_property,
+ property_definition,
+ property_definition_relationship,
+ shape_aspect,
+ shape_aspect_relationship);
+END_TYPE;
+
+TYPE requirement_assigned_item = SELECT
+ (action_method,
+ alternate_product_relationship,
+ applied_action_method_assignment,
+ applied_state_observed_assignment,
+ applied_state_type_assignment,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ characterized_object,
+ configuration_item,
+ descriptive_representation_item,
+ dimensional_location,
+ dimensional_size,
+ geometric_tolerance,
+ interface_connector_occurrence,
+ organizational_project,
+ product,
+ product_class,
+ product_definition,
+ product_definition_formation,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_group,
+ product_group_membership,
+ quantified_assembly_component_usage,
+ representation,
+ shape_aspect,
+ state_observed,
+ state_type,
+ validation,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE requirement_satisfaction_item = SELECT
+ (requirement_assigned_item);
+END_TYPE;
+
+TYPE requirement_source_item = SELECT
+ (action_method,
+ applied_action_method_assignment,
+ applied_state_observed_assignment,
+ applied_state_type_assignment,
+ characterized_object,
+ contract,
+ dimensional_location,
+ dimensional_size,
+ executed_action,
+ geometric_tolerance,
+ group,
+ group_relationship,
+ interface_connector_occurrence,
+ organization,
+ organizational_project,
+ person_and_organization,
+ product,
+ product_definition,
+ product_definition_formation,
+ product_definition_relationship,
+ shape_aspect,
+ state_observed,
+ state_type,
+ validation,
+ verification);
+END_TYPE;
+
+TYPE resistance_measure = REAL;
+END_TYPE;
+
+TYPE reversible_topology = SELECT
+ (list_of_reversible_topology_item,
+ reversible_topology_item,
+ set_of_reversible_topology_item);
+END_TYPE;
+
+TYPE reversible_topology_item = SELECT
+ (closed_shell,
+ edge,
+ face,
+ face_bound,
+ open_shell,
+ path);
+END_TYPE;
+
+TYPE rigid_placement = SELECT
+ (axis2_placement_3d,
+ su_parameters);
+END_TYPE;
+
+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;
+
+TYPE rule_superseded_item = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE same_as_item = SELECT
+ (address,
+ applied_external_identification_assignment,
+ approval,
+ approval_status,
+ attribute_language_assignment,
+ calendar_date,
+ certification,
+ contract,
+ coordinated_universal_time_offset,
+ date_and_time,
+ derived_unit,
+ derived_unit_element,
+ event_occurrence,
+ external_source,
+ general_property,
+ information_right,
+ information_usage_right,
+ language,
+ local_time,
+ measure_with_unit,
+ named_unit,
+ organization,
+ person,
+ product_definition_context,
+ representation_context,
+ requirement_source,
+ security_classification,
+ time_interval,
+ usage_association);
+END_TYPE;
+
+TYPE second_in_minute = REAL;
+WHERE
+ WR1: { 0 <= SELF < 60.0 };
+END_TYPE;
+
+TYPE security_classification_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_method_relationship,
+ action_property,
+ action_property_representation,
+ applied_action_assignment,
+ applied_action_method_assignment,
+ applied_classification_assignment,
+ applied_description_text_assignment,
+ applied_description_text_assignment_relationship,
+ applied_document_reference,
+ applied_document_usage_constraint_assignment,
+ applied_external_identification_assignment,
+ applied_identification_assignment,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ class_system,
+ conditional_effectivity,
+ configuration_design,
+ configuration_effectivity,
+ configured_effectivity_assignment,
+ document,
+ document_file,
+ draughting_model,
+ drawing_revision,
+ envelope,
+ evaluated_characteristic_of_product_as_individual_test_result,
+ evidence,
+ exclusive_product_concept_feature_category,
+ executed_action,
+ externally_defined_general_property,
+ general_property,
+ group,
+ identification_assignment_relationship,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_design,
+ interface_connector_occurrence,
+ interface_definition_connection,
+ interface_definition_for,
+ make_from_usage_option,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organizational_project,
+ package_product_concept_feature,
+ presentation_area,
+ process_plan,
+ product,
+ product_class,
+ product_concept,
+ product_concept_feature,
+ product_concept_feature_category,
+ product_definition,
+ product_definition_formation,
+ product_definition_formation_relationship,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_definition_usage,
+ product_design_to_individual,
+ product_design_version_to_individual,
+ product_group,
+ product_group_membership,
+ product_group_relationship,
+ product_identification,
+ product_process_plan,
+ product_relationship,
+ property_definition,
+ property_definition_representation,
+ representation,
+ requirement_assignment,
+ requirement_source,
+ requirement_view_definition_relationship,
+ resource_property,
+ shape_representation,
+ structured_message,
+ validation,
+ verification,
+ versioned_action_request);
+END_TYPE;
+
+TYPE set_inner_area_boundary = SET [1 : ?] OF bounded_primitive_2d;
+END_TYPE;
+
+TYPE set_item_defined_transformation = SET [2 : ?] OF item_defined_transformation;
+END_TYPE;
+
+TYPE set_of_reversible_topology_item = SET [0 : ?] OF reversible_topology_item;
+END_TYPE;
+
+TYPE set_representation_item = SET [1 : ?] OF representation_item;
+END_TYPE;
+
+TYPE shading_curve_method = ENUMERATION OF
+ (constant_colour,
+ linear_colour);
+END_TYPE;
+
+TYPE shading_surface_method = ENUMERATION OF
+ (constant_shading,
+ colour_shading,
+ dot_shading,
+ normal_shading);
+END_TYPE;
+
+TYPE shape_aspect_or_characterized_object = SELECT
+ (characterized_object,
+ shape_aspect);
+END_TYPE;
+
+TYPE shape_data_quality_assessment_specification_select = SELECT
+ (shape_data_quality_assessment_by_logical_test,
+ shape_data_quality_assessment_by_numerical_test);
+END_TYPE;
+
+TYPE shape_data_quality_value_limit_type_select = SELECT
+ (shape_data_quality_value_limit,
+ shape_data_quality_value_range);
+END_TYPE;
+
+TYPE shape_definition = SELECT
+ (product_definition_shape,
+ shape_aspect,
+ shape_aspect_relationship);
+END_TYPE;
+
+TYPE shape_dimension_representation_item = SELECT
+ (compound_representation_item,
+ descriptive_representation_item,
+ measure_representation_item,
+ placement);
+END_TYPE;
+
+TYPE shape_model = SELECT
+ (constructive_geometry_representation,
+ shape_representation);
+END_TYPE;
+
+TYPE shape_representation_item = SELECT
+ (geometric_representation_item,
+ topological_representation_item);
+END_TYPE;
+
+TYPE shape_representation_with_parameters_items = SELECT
+ (descriptive_representation_item,
+ direction,
+ measure_representation_item,
+ placement);
+END_TYPE;
+
+TYPE shell = SELECT
+ (closed_shell,
+ open_shell,
+ vertex_shell,
+ wire_shell);
+END_TYPE;
+
+TYPE si_prefix = ENUMERATION OF
+ (exa,
+ peta,
+ tera,
+ giga,
+ mega,
+ kilo,
+ hecto,
+ deca,
+ deci,
+ centi,
+ milli,
+ micro,
+ nano,
+ pico,
+ femto,
+ atto);
+END_TYPE;
+
+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;
+
+TYPE simple_datum_reference_modifier = ENUMERATION OF
+ (any_cross_section,
+ any_longitudinal_section,
+ basic,
+ contacting_feature,
+ degree_of_freedom_constraint_u,
+ degree_of_freedom_constraint_v,
+ degree_of_freedom_constraint_w,
+ degree_of_freedom_constraint_x,
+ degree_of_freedom_constraint_y,
+ degree_of_freedom_constraint_z,
+ distance_variable,
+ free_state,
+ least_material_requirement,
+ line,
+ major_diameter,
+ maximum_material_requirement,
+ minor_diameter,
+ orientation,
+ pitch_diameter,
+ plane,
+ point,
+ translation);
+END_TYPE;
+
+TYPE size_select = SELECT
+ (descriptive_measure,
+ measure_with_unit,
+ positive_length_measure);
+END_TYPE;
+
+TYPE sketch_basis_select = SELECT
+ (curve_bounded_surface,
+ face_surface,
+ planar_curve_select);
+END_TYPE;
+
+TYPE sketch_element_select = SELECT (
+ curve,
+ point);
+ WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+END_TYPE;
+
+TYPE sketch_type_select = SELECT
+ (neutral_sketch_representation,
+ positioned_sketch,
+ subsketch);
+END_TYPE;
+
+TYPE solid_angle_measure = REAL;
+END_TYPE;
+
+TYPE source = ENUMERATION OF
+ (made,
+ bought,
+ not_known);
+END_TYPE;
+
+TYPE source_item = SELECT
+ (identifier,
+ message);
+END_TYPE;
+
+TYPE space_constraint_type = ENUMERATION OF
+ (sc_equal,
+ sc_subspace,
+ sc_member);
+END_TYPE;
+
+TYPE spatial_rotation = SELECT
+ (rotation_about_direction,
+ ypr_rotation);
+END_TYPE;
+
+TYPE specified_item = SELECT
+ (drawing_revision);
+END_TYPE;
+
+TYPE spherical_pair_select = SELECT
+ (spherical_pair,
+ spherical_pair_with_pin);
+END_TYPE;
+
+TYPE spline_knot_values = LIST [2: ?] OF REAL;
+WHERE
+WR1 : increasing_values_in_list(SELF);
+END_TYPE;
+
+TYPE start_request_item = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE state_observed_of_item = SELECT
+ (alternate_product_relationship,
+ applied_action_method_assignment,
+ applied_external_identification_assignment,
+ approval,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ attachment_slot_design_to_planned,
+ attachment_slot_design_to_realized,
+ attachment_slot_on_product,
+ attachment_slot_planned_to_realized,
+ breakdown_element_group_assignment,
+ breakdown_element_usage,
+ certification,
+ configuration_item,
+ contract,
+ document_file,
+ evidence,
+ final_solution,
+ group,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_definition,
+ interface_connector_design,
+ interface_connector_occurrence,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_specification_definition,
+ interface_specification_version,
+ organization,
+ organizational_project,
+ person_and_organization,
+ product,
+ product_category,
+ product_concept,
+ product_definition,
+ product_definition_formation,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_in_attachment_slot,
+ security_classification,
+ structured_message,
+ validation,
+ verification);
+END_TYPE;
+
+TYPE state_type_of_item = SELECT
+ (action_method,
+ alternate_product_relationship,
+ applied_action_method_assignment,
+ applied_external_identification_assignment,
+ approval,
+ assembly_component_usage,
+ assembly_component_usage_substitute,
+ attachment_slot_design_to_planned,
+ attachment_slot_design_to_realized,
+ attachment_slot_on_product,
+ attachment_slot_planned_to_realized,
+ breakdown_element_group_assignment,
+ breakdown_element_usage,
+ certification,
+ configuration_item,
+ contract,
+ document_file,
+ evidence,
+ final_solution,
+ interface_connection,
+ interface_connector_as_planned,
+ interface_connector_as_realized,
+ interface_connector_definition,
+ interface_connector_design,
+ interface_connector_occurrence,
+ interface_connector_version,
+ interface_definition_connection,
+ interface_specification_definition,
+ interface_specification_version,
+ organization,
+ organizational_project,
+ person_and_organization,
+ product,
+ product_category,
+ product_concept,
+ product_definition,
+ product_definition_formation,
+ product_definition_group_assignment,
+ product_definition_relationship,
+ product_group,
+ product_in_attachment_slot,
+ security_classification,
+ validation,
+ verification);
+END_TYPE;
+
+TYPE statistical_value_type = ENUMERATION OF
+ (number_of_inspected_instances,
+ number_of_quality_defects_detected);
+END_TYPE;
+
+TYPE string_representation_item_select = SELECT
+ (descriptive_representation_item,
+ included_text_block,
+ structured_text_composition);
+END_TYPE;
+
+TYPE style_context_select = SELECT
+ (context_dependent_shape_representation,
+ group,
+ presentation_layer_assignment,
+ presentation_set,
+ representation,
+ representation_item,
+ representation_relationship);
+END_TYPE;
+
+TYPE styled_item_target = SELECT
+ (geometric_representation_item,
+ mapped_item,
+ representation_or_representation_reference,
+ topological_representation_item);
+END_TYPE;
+
+TYPE summary_report_style_type = ENUMERATION OF
+ (conclusion,
+ number_of_defects,
+ number_of_inspections);
+END_TYPE;
+
+TYPE summary_report_type = ENUMERATION OF
+ (unspecified,
+ conclusion_only,
+ number_of_quality_defects,
+ number_of_inspections_and_conclusion,
+ full_statistics);
+END_TYPE;
+
+TYPE supported_item = SELECT
+ (action,
+ action_directive,
+ action_method);
+END_TYPE;
+
+TYPE surface_boundary_type = ENUMERATION OF
+ (u_parameter_min,
+ v_parameter_min,
+ u_parameter_max,
+ v_parameter_max);
+END_TYPE;
+
+TYPE surface_model = SELECT
+ (face_based_surface_model,
+ shell_based_surface_model);
+END_TYPE;
+
+TYPE surface_or_solid_model = SELECT
+ (solid_model,
+ surface_model);
+END_TYPE;
+
+TYPE surface_side = ENUMERATION OF
+ (positive,
+ negative,
+ both);
+END_TYPE;
+
+TYPE surface_side_style_select = SELECT
+ (pre_defined_surface_side_style,
+ surface_side_style);
+END_TYPE;
+
+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;
+
+TYPE swept_surface_or_solid = SELECT
+ (swept_area_solid,
+ swept_face_solid,
+ swept_surface);
+END_TYPE;
+
+TYPE symbol_style_select = SELECT
+ (symbol_colour);
+END_TYPE;
+
+TYPE symmetry_type = ENUMERATION OF
+ (identity,
+ skew,
+ hermitian,
+ skew_hermitian);
+END_TYPE;
+
+TYPE tangent_contact_type = ENUMERATION OF
+ (point_contact,
+ curve_contact,
+ surface_contact);
+END_TYPE;
+
+TYPE target_annotated_3d_model_select = SELECT
+ (shape_representation_relationship);
+END_TYPE;
+
+TYPE tessellated_edge_or_vertex = SELECT
+ (tessellated_edge,
+ tessellated_vertex);
+END_TYPE;
+
+TYPE tessellated_facet_long_short_edge_ratio = ratio_measure;
+END_TYPE;
+
+TYPE tessellated_surface_item = SELECT
+ (tessellated_face,
+ tessellated_shell,
+ tessellated_solid,
+ tessellated_surface_set);
+END_TYPE;
+
+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;
+
+TYPE text = STRING;
+END_TYPE;
+
+TYPE text_alignment = label;
+END_TYPE;
+
+TYPE text_delineation = label;
+END_TYPE;
+
+TYPE text_or_character = SELECT
+ (annotation_text,
+ annotation_text_character,
+ composite_text,
+ defined_character_glyph,
+ text_literal);
+END_TYPE;
+
+TYPE text_path = ENUMERATION OF
+ (left,
+ right,
+ up,
+ down);
+END_TYPE;
+
+TYPE text_string_representation_item = SELECT
+ (annotation_text,
+ annotation_text_character,
+ axis2_placement,
+ composite_text,
+ defined_character_glyph,
+ text_literal);
+END_TYPE;
+
+TYPE texture_file_type = ENUMERATION OF
+ (jpeg,
+ png,
+ gif,
+ tiff,
+ bmp,
+ dds,
+ tga,
+ other);
+END_TYPE;
+
+TYPE thermodynamic_temperature_measure = REAL;
+END_TYPE;
+
+TYPE time_interval_item = SELECT
+ (action,
+ action_directive,
+ action_method,
+ action_property,
+ action_relationship,
+ action_request_solution,
+ alternate_product_relationship,
+ analysis_assignment,
+ 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,
+ draughting_model,
+ drawing_revision,
+ evidence,
+ executed_action,
+ general_property,
+ material_designation,
+ mechanical_design_geometric_presentation_representation,
+ organizational_project,
+ organization_relationship,
+ person_and_organization,
+ presentation_area,
+ 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,
+ requirement_for_action_resource,
+ resource_property,
+ security_classification,
+ security_classification_level,
+ shape_representation,
+ time_interval_based_effectivity,
+ validation,
+ verification,
+ verification_relationship,
+ versioned_action_request);
+END_TYPE;
+
+TYPE time_measure = REAL;
+END_TYPE;
+
+TYPE tolerance_method_definition = SELECT
+ (limits_and_fits,
+ tolerance_value);
+END_TYPE;
+
+TYPE tolerance_value_or_limits_and_fits = SELECT
+ (limits_and_fits,
+ tolerance_value);
+END_TYPE;
+
+TYPE tolerance_zone_target = SELECT
+ (dimensional_location,
+ dimensional_size,
+ general_datum_reference,
+ geometric_tolerance);
+END_TYPE;
+
+TYPE transformation = SELECT
+ (functionally_defined_transformation,
+ item_defined_transformation,
+ list_item_defined_transformation,
+ set_item_defined_transformation);
+END_TYPE;
+
+TYPE transition_code = ENUMERATION OF
+ (discontinuous,
+ continuous,
+ cont_same_gradient,
+ cont_same_gradient_same_curvature);
+END_TYPE;
+
+TYPE trim_condition_select = SELECT
+ (generalized_surface_select,
+ length_measure,
+ plane_angle_measure,
+ solid_model);
+END_TYPE;
+
+TYPE trim_intent = ENUMERATION OF
+ (blind,
+ offset,
+ through_all,
+ unspecified,
+ up_to_next);
+END_TYPE;
+
+TYPE trimming_preference = ENUMERATION OF
+ (cartesian,
+ parameter,
+ unspecified);
+END_TYPE;
+
+TYPE trimming_select = SELECT
+ (cartesian_point,
+ parameter_value);
+END_TYPE;
+
+TYPE tuple_space = SELECT
+ (extended_tuple_space,
+ product_space);
+END_TYPE;
+
+TYPE u_direction_count = INTEGER;
+WHERE
+ WR1: SELF > 1;
+END_TYPE;
+
+TYPE u_or_v_parameter = ENUMERATION OF
+ (u_parameter,
+ v_parameter);
+END_TYPE;
+
+TYPE unit = SELECT
+ (derived_unit,
+ named_unit);
+END_TYPE;
+
+TYPE unsigned_8_bit_integer = INTEGER;
+WHERE
+ WR1: {0 <= SELF <= 255};
+END_TYPE;
+
+TYPE used_equivalence_representation_select = SELECT
+ (data_equivalence_criteria_representation,
+ data_equivalence_inspection_result_representation);
+END_TYPE;
+
+TYPE used_quality_representation_select = SELECT
+ (data_quality_criteria_representation,
+ data_quality_inspection_result_representation);
+END_TYPE;
+
+TYPE v_direction_count = INTEGER;
+WHERE
+ WR1: SELF > 1;
+END_TYPE;
+
+TYPE validation_criteria_or_results_select = SELECT
+ (data_equivalence_definition_representation_relationship);
+END_TYPE;
+
+TYPE value_format_type = identifier;
+WHERE
+ WR1: LENGTH(SELF) <= 80;
+END_TYPE; -- value_format_type
+
+TYPE value_qualifier = SELECT
+ (maths_value_precision_qualifier,
+ precision_qualifier,
+ type_qualifier,
+ uncertainty_qualifier,
+ value_format_type_qualifier);
+END_TYPE;
+
+TYPE vector_or_direction = SELECT
+ (direction,
+ vector);
+END_TYPE;
+
+TYPE velocity_measure = REAL;
+END_TYPE;
+
+TYPE volume_measure = REAL;
+END_TYPE;
+
+TYPE week_in_year_number = INTEGER;
+WHERE
+ WR1: { 1 <= SELF <= 53 };
+END_TYPE;
+
+TYPE work_item = SELECT
+ (product_definition_formation);
+END_TYPE;
+
+TYPE year_number = INTEGER;
+WHERE
+ WR1: (SELF > 1581);
+END_TYPE;
+
+TYPE ypr_enumeration = ENUMERATION OF
+ (yaw,
+ pitch,
+ roll);
+END_TYPE;
+
+TYPE ypr_rotation = ARRAY [ypr_index(yaw) : ypr_index(roll)] OF plane_angle_measure;
+END_TYPE;
+
+TYPE zero_or_one = nonnegative_integer;
+WHERE in_range: (SELF = 0) OR (SELF = 1);
+END_TYPE;
+
+ENTITY a3m_equivalence_accuracy_association;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ specific_accuracy : shape_measurement_accuracy;
+ equivalence_target : accuracy_associated_target_select;
+END_ENTITY;
+
+ENTITY a3m_equivalence_assessment_by_logical_test
+ SUBTYPE OF (data_equivalence_assessment_specification);
+END_ENTITY;
+
+ENTITY a3m_equivalence_assessment_by_numerical_test
+ SUBTYPE OF (data_equivalence_assessment_specification);
+ threshold : shape_data_quality_value_limit_type_select;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criteria_representation
+ SUBTYPE OF (data_equivalence_criteria_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION' IN TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion
+ ABSTRACT SUPERTYPE OF (a3m_equivalence_criterion_with_specified_elements)
+ SUBTYPE OF (data_equivalence_criterion, data_equivalence_inspection_requirement);
+ assessment_specification : a3m_equivalence_assessment_specification_select;
+ comparing_element_types : LIST [1 : ?] OF a3m_element_type_name;
+ compared_element_types : LIST [1 : ?] OF a3m_element_type_name;
+ measured_data_type : a3m_measured_data_type_name;
+ detected_difference_types : LIST [0 : ?] OF a3m_detected_difference_type_name;
+ accuracy_types : LIST [0 : ?] OF a3m_accuracy_type_name;
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
+ 0;
+ WR2: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_INSPECTION_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+ WR3: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_INSPECTION_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_for_assembly
+ ABSTRACT SUPERTYPE OF (ONEOF(a3m_equivalence_criterion_of_assembly_data_structure,
+ a3m_equivalence_criterion_of_detailed_assembly_data_content,
+ a3m_equivalence_criterion_of_component_property_difference,
+ a3m_equivalence_criterion_of_representative_assembly_property_value))
+ SUBTYPE OF (a3m_equivalence_criterion);
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3ma_element_type_name;
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : ?] OF a3ma_element_type_name;
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : ?] OF a3ma_detected_difference_type_name;
+DERIVE
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ma_accuracy_type_name := [];
+WHERE
+ WR1: a3ma_validate_accuracy_types(SELF, SELF);
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_for_shape
+ ABSTRACT SUPERTYPE OF (ONEOF(a3m_equivalence_criterion_of_detailed_shape_data_content,
+ a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_criterion_of_shape_data_structure))
+ SUBTYPE OF (a3m_equivalence_criterion);
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3ms_element_type_name;
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : ?] OF a3ms_element_type_name;
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : ?] OF a3ms_detected_difference_type_name;
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : ?] OF a3ms_accuracy_type_name;
+WHERE
+ WR1: a3ms_validate_accuracy_types(SELF, SELF);
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_assembly_data_structure
+ ABSTRACT SUPERTYPE OF (ONEOF(different_component_identification_via_multi_level_reference, mismatch_of_component,
+ missing_assembly_constraint, missing_component))
+ SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_component_property_difference
+ ABSTRACT SUPERTYPE OF (different_component_shape)
+ SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_detailed_assembly_data_content
+ ABSTRACT SUPERTYPE OF (ONEOF(different_angle_of_assembly_constraint, different_assembly_constraint_type,
+ different_component_type, different_length_of_assembly_constraint,
+ different_placement_of_component))
+ SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_detailed_shape_data_content
+ ABSTRACT SUPERTYPE OF (ONEOF(different_surface_normal, mismatch_of_arcwise_connected_curves,
+ mismatch_of_arcwise_connected_surfaces, mismatch_of_arcwise_connected_surfaces_boundary,
+ mismatch_of_points, mismatch_of_point_cloud_and_related_geometry,
+ mismatch_of_underlying_edge_geometry, mismatch_of_underlying_face_geometry))
+ SUBTYPE OF (a3m_equivalence_criterion_for_shape);
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_representative_assembly_property_value
+ ABSTRACT SUPERTYPE OF (ONEOF(different_assembly_centroid, different_assembly_centroid_using_notional_solid,
+ different_assembly_volume, different_number_of_components))
+ SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_representative_shape_property_value
+ ABSTRACT SUPERTYPE OF (ONEOF(different_bounding_box, different_centroid, different_curve_length,
+ different_number_of_closed_shell, different_number_of_geometric_elements,
+ different_number_of_geometric_elements_wireframe_model,
+ different_number_of_topological_elements,
+ different_number_of_topological_elements_wireframe_model, different_surface_area,
+ different_volume))
+ SUBTYPE OF (a3m_equivalence_criterion_for_shape);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3m_element_type_name := SELF\a3m_equivalence_criterion.compared_element_types;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_of_shape_data_structure
+ ABSTRACT SUPERTYPE OF (ONEOF(mismatch_of_edges, mismatch_of_faces, missing_edge, missing_face))
+ SUBTYPE OF (a3m_equivalence_criterion_for_shape);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3m_element_type_name := SELF\a3m_equivalence_criterion.compared_element_types;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_report_item_with_measured_value
+ SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
+ representative_measured_value : equivalence_measured_value_select;
+ value_type : representative_value_type;
+END_ENTITY;
+
+ENTITY a3m_equivalence_criterion_with_specified_elements
+ SUBTYPE OF (a3m_equivalence_criterion);
+ comparing_specified_elements : SET [1 : ?] OF inspected_equivalence_element_select;
+ compared_specified_elements : SET [1 : ?] OF inspected_equivalence_element_select;
+END_ENTITY;
+
+ENTITY a3m_equivalence_inspection_instance_report_item
+ SUBTYPE OF (data_equivalence_inspection_instance_report_item);
+ measured_value_for_inspected_element : equivalence_measured_value_select;
+END_ENTITY;
+
+ENTITY a3m_equivalence_inspection_requirement_with_values
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (data_equivalence_inspection_requirement);
+ applied_values : SET [1 : ?] OF measure_representation_item;
+END_ENTITY;
+
+ENTITY a3m_equivalence_inspection_result_representation
+ SUBTYPE OF (data_equivalence_inspection_result_representation);
+END_ENTITY;
+
+ENTITY a3m_equivalence_inspection_result_representation_for_assembly
+ SUBTYPE OF (a3m_equivalence_inspection_result_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MS_EQUIVALENCE_INSPECTION_RESULT' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY a3m_equivalence_inspection_result_representation_for_shape
+ SUBTYPE OF (a3m_equivalence_inspection_result_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MA_EQUIVALENCE_INSPECTION_RESULT' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY a3m_equivalence_summary_report_request_with_representative_value
+ SUBTYPE OF (data_equivalence_report_request);
+ report_request_type : representative_value_type;
+END_ENTITY;
+
+ENTITY a3m_inspected_model_and_inspection_result_relationship;
+ inspected_model : target_annotated_3d_model_select;
+ equivalence_result : a3m_equivalence_inspection_result_representation;
+END_ENTITY;
+
+ENTITY a3ma_assembly_and_shape_criteria_relationship
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : different_component_shape;
+ SELF\representation_item_relationship.related_representation_item : a3m_equivalence_criterion_for_shape;
+END_ENTITY;
+
+ENTITY a3ma_equivalence_criterion_assessment_threshold_relationship
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : different_placement_of_component;
+ SELF\representation_item_relationship.related_representation_item : shape_data_quality_lower_value_limit;
+END_ENTITY;
+
+ENTITY a3ma_equivalence_inspection_result
+ SUBTYPE OF (data_equivalence_inspection_result);
+ SELF\data_equivalence_inspection_result.criterion_inspected : a3m_equivalence_criterion_for_assembly;
+WHERE
+ WR1: a3ma_validate_accuracy_types(SELF, SELF\data_equivalence_inspection_result.criterion_inspected);
+ WR2: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ma_validate_element_types(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+ WR3: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ma_validate_detected_difference_types(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+ WR4: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ma_validate_measured_type(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+END_ENTITY;
+
+ENTITY a3ma_length_measure_and_context_dependent_measure_pair
+ SUBTYPE OF (compound_representation_item);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIST_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\compound_representation_item.item_element);
+ WR2: SIZEOF(SELF\compound_representation_item.item_element) = 2;
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\compound_representation_item.item_element[1]);
+ WR4: SIZEOF(QUERY(vri
+ <* [SELF\compound_representation_item.item_element[1]]
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ TYPEOF(vri.value_component))) =
+ 1;
+ WR5: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\compound_representation_item.item_element[2]);
+ WR6: SIZEOF(QUERY(vri
+ <* [SELF\compound_representation_item.item_element[2]]
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN
+ TYPEOF(vri.value_component))) =
+ 1;
+END_ENTITY;
+
+ENTITY a3ms_equivalence_criterion_with_specified_elements
+ SUBTYPE OF (a3m_equivalence_criterion_for_shape, a3m_equivalence_criterion_with_specified_elements);
+ SELF\a3m_equivalence_criterion_with_specified_elements.comparing_specified_elements : SET [1 : ?] OF a3ms_inspected_equivalence_element_select;
+ SELF\a3m_equivalence_criterion_with_specified_elements.compared_specified_elements : SET [1 : ?] OF a3ms_inspected_equivalence_element_select;
+WHERE
+ WR1: (a3ms_get_element_type(SELF.comparing_specified_elements) = etns_external_representation_item) OR
+ (a3ms_get_element_type(SELF.comparing_specified_elements) IN
+ SELF\a3m_equivalence_criterion_for_shape.comparing_element_types);
+ WR2: (a3ms_get_element_type(SELF.compared_specified_elements) = etns_external_representation_item) OR
+ (a3ms_get_element_type(SELF.compared_specified_elements) IN
+ SELF\a3m_equivalence_criterion_for_shape.compared_element_types);
+END_ENTITY;
+
+ENTITY a3ms_equivalence_inspection_result
+ SUBTYPE OF (data_equivalence_inspection_result);
+ SELF\data_equivalence_inspection_result.criterion_inspected : a3m_equivalence_criterion_for_shape;
+WHERE
+ WR1: a3ms_validate_accuracy_types(SELF, SELF\data_equivalence_inspection_result.criterion_inspected);
+ WR2: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ms_validate_element_types(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+ WR3: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ms_validate_detected_difference_types(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+ WR4: SIZEOF(QUERY(re
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | NOT (a3ms_validate_measured_type(re,
+ SELF\data_equivalence_inspection_result.criterion_inspected)))) =
+ 0;
+END_ENTITY;
+
+ENTITY abrupt_change_of_surface_normal
+ SUBTYPE OF (geometry_with_local_irregularity);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ small_vector_tolerance : length_measure;
+ test_point_distance_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY abs_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY absorbed_dose_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABSORBED_DOSE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY absorbed_dose_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.gray);
+END_ENTITY;
+
+ENTITY abstract_variable
+ SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item);
+END_ENTITY;
+
+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;
+
+ENTITY acceleration_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACCELERATION_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY acos_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY action;
+ name : label;
+ description : OPTIONAL text;
+ chosen_method : action_method;
+DERIVE
+ id : identifier := get_id_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY action_actual
+ SUBTYPE OF (executed_action);
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY action_directive;
+ name : label;
+ description : OPTIONAL text;
+ analysis : text;
+ comment : text;
+ requests : SET [1 : ?] OF versioned_action_request;
+END_ENTITY;
+
+ENTITY action_directive_relationship;
+ name : label;
+ description : OPTIONAL STRING;
+ relating : action_directive;
+ related : action_directive;
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_action_directive_relationship(SELF, [related],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY action_happening
+ SUBTYPE OF (action_relationship);
+END_ENTITY;
+
+ENTITY action_method;
+ name : label;
+ description : OPTIONAL text;
+ consequence : text;
+ purpose : text;
+END_ENTITY;
+
+ENTITY action_method_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_action_method : action_method;
+ role : action_method_role;
+END_ENTITY;
+
+ENTITY action_method_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_method : action_method;
+ related_method : action_method;
+END_ENTITY;
+
+ENTITY action_method_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY action_property;
+ name : label;
+ description : text;
+ definition : characterized_action_definition;
+END_ENTITY;
+
+ENTITY action_property_representation;
+ name : label;
+ description : text;
+ property : action_property;
+ representation : representation;
+END_ENTITY;
+
+ENTITY action_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_action : action;
+ related_action : action;
+END_ENTITY;
+
+ENTITY action_request_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_action_request : versioned_action_request;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY action_request_status;
+ status : label;
+ assigned_request : versioned_action_request;
+END_ENTITY;
+
+ENTITY action_resource;
+ name : label;
+ description : OPTIONAL text;
+ usage : SET [1 : ?] OF supported_item;
+ kind : action_resource_type;
+END_ENTITY;
+
+ENTITY action_resource_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_resource : action_resource;
+ related_resource : action_resource;
+END_ENTITY;
+
+ENTITY action_resource_requirement;
+ name : label;
+ description : text;
+ kind : resource_requirement_type;
+ operations : SET [1 : ?] OF characterized_action_definition;
+END_ENTITY;
+
+ENTITY action_resource_type;
+ name : label;
+END_ENTITY;
+
+ENTITY action_status;
+ status : label;
+ assigned_action : executed_action;
+END_ENTITY;
+
+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;
+
+ENTITY add_element
+ SUBTYPE OF (change_element);
+END_ENTITY;
+
+ENTITY additive_manufacturing_build_plate_relationship
+ SUBTYPE OF (additive_manufacturing_setup_relationship);
+END_ENTITY;
+
+ENTITY additive_manufacturing_setup
+ SUBTYPE OF (product);
+END_ENTITY;
+
+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;
+
+ENTITY additive_manufacturing_setup_workpiece_relationship
+ SUBTYPE OF (additive_manufacturing_setup_relationship);
+END_ENTITY;
+
+ENTITY additive_manufacturing_support_structure_geometry_relationship
+ SUBTYPE OF (additive_manufacturing_setup_relationship);
+END_ENTITY;
+
+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;
+
+ENTITY advanced_brep_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1))) >
+ 0;
+ WR3: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(csh
+ <* msb_shells(msb)
+ | NOT (SIZEOF(QUERY(fcs
+ <* csh\connected_face_set.cfs_faces
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fcs)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
+ TYPEOF(msb\manifold_solid_brep.outer)))) =
+ 0;
+ WR5: SIZEOF(QUERY(brv
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+END_ENTITY;
+
+ENTITY advanced_face
+ SUBTYPE OF (face_surface);
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE'] *
+ TYPEOF(face_geometry)) =
+ 1;
+ WR2: SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe\oriented_edge.edge_element)))) =
+ 0))) =
+ 0;
+ WR3: SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
+ TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
+ 1))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe\edge.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
+ TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry))) AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe\edge.edge_end)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
+ TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound)))) =
+ 0;
+ WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
+ TYPEOF(face_geometry\swept_surface.swept_curve)) =
+ 1);
+ WR7: SIZEOF(QUERY(vlp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
+ TYPEOF(bnd.bound)) =
+ 1))) =
+ 0;
+ WR9: SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* bounds
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
+ TYPEOF(sc_ag)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR10: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY agc_with_dimension
+ SUBTYPE OF (angle_geometric_constraint);
+ angle_value : plane_angle_measure;
+END_ENTITY;
+
+ENTITY aggregate_id_attribute;
+ attribute_value : identifier;
+ identified_item : SET [1 : ?] OF id_attribute_select;
+END_ENTITY;
+
+ENTITY all_around_shape_aspect
+ SUBTYPE OF (continuous_shape_aspect);
+END_ENTITY;
+
+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;
+
+ENTITY alternative_solution_relationship
+ SUBTYPE OF (product_definition_formation_relationship);
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_alternative_solution_relationship(SELF,
+ [SELF\product_definition_formation_relationship.related_product_definition_formation],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATIVE_SOLUTION_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY amount_of_substance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY analysis_assignment
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY analysis_item
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : 1] OF analysed_item;
+ SELF\group_assignment.assigned_group : analysis_assignment;
+END_ENTITY;
+
+ENTITY analysis_model
+ SUBTYPE OF (representation);
+ SELF\representation.context_of_items : analysis_representation_context;
+END_ENTITY;
+
+ENTITY analysis_representation_context
+ SUBTYPE OF (representation_context);
+END_ENTITY;
+
+ENTITY and_expression
+ SUBTYPE OF (multiple_arity_boolean_expression);
+END_ENTITY;
+
+ENTITY angle_assembly_constraint_with_dimension
+ SUBTYPE OF (binary_assembly_constraint, agc_with_dimension);
+END_ENTITY;
+
+ENTITY angle_direction_reference
+ SUBTYPE OF (representation_item_relationship, geometric_representation_item);
+ SELF\representation_item_relationship.relating_representation_item : orientation_basis_select;
+ SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN
+ TYPEOF(relating_representation_item)) OR
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(relating_representation_item));
+END_ENTITY;
+
+ENTITY angle_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF linear_geometry_constraint_element;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
+END_ENTITY;
+
+ENTITY angular_dimension
+ SUBTYPE OF (dimension_curve_directed_callout);
+END_ENTITY;
+
+ENTITY angular_location
+ SUBTYPE OF (dimensional_location);
+ angle_selection : angle_relator;
+END_ENTITY;
+
+ENTITY angular_size
+ SUBTYPE OF (dimensional_size);
+ angle_selection : angle_relator;
+END_ENTITY;
+
+ENTITY angularity_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY annotation_curve_occurrence
+ SUPERTYPE OF ((ONEOF(leader_curve, projection_curve)))
+ SUBTYPE OF (annotation_occurrence);
+ SELF\styled_item.item : curve_or_curve_set;
+END_ENTITY;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN TYPEOF(curve)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE' IN TYPEOF(curve)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(curve)) AND
+ (curve\b_spline_curve.closed_curve = true)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(curve)) AND
+ (curve\composite_curve.closed_curve = true)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(curve)) AND
+ (curve\polyline.points[LOINDEX(curve\polyline.points)] =
+ curve\polyline.points[HIINDEX(curve\polyline.points)]))))) =
+ 0);
+END_ENTITY;
+
+ENTITY annotation_fill_area_occurrence
+ SUBTYPE OF (annotation_occurrence);
+ fill_style_target : point;
+ SELF\styled_item.item : annotation_fill_area;
+END_ENTITY;
+
+ENTITY annotation_occurrence
+ SUPERTYPE OF ((ONEOF(annotation_point_occurrence, annotation_curve_occurrence, annotation_fill_area_occurrence,
+ annotation_text_occurrence, annotation_symbol_occurrence)) ANDOR
+ (ONEOF(annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_plane,
+ annotation_symbol_occurrence, annotation_text_occurrence)))
+ SUBTYPE OF (styled_item);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+ WR2: SIZEOF(QUERY(reps
+ <* using_representations(SELF)
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN
+ TYPEOF(reps)))) =
+ 0;
+END_ENTITY;
+
+ENTITY annotation_occurrence_associativity
+ SUBTYPE OF (annotation_occurrence_relationship);
+WHERE
+ WR1: SIZEOF(TYPEOF(SELF.related_annotation_occurrence) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE']) =
+ 1;
+END_ENTITY;
+
+ENTITY annotation_occurrence_relationship;
+ name : label;
+ description : text;
+ relating_annotation_occurrence : annotation_occurrence;
+ related_annotation_occurrence : annotation_occurrence;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(SELF\styled_item.item\planar_box.placement));
+ WR3: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(SELF\styled_item.item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY annotation_point_occurrence
+ SUBTYPE OF (annotation_occurrence);
+ SELF\styled_item.item : point;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NULL_STYLE' IN TYPEOF(sty.styles[1])))) =
+ 0;
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item));
+ WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN
+ TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation));
+END_ENTITY;
+
+ENTITY annotation_symbol
+ SUBTYPE OF (mapped_item);
+ SELF\mapped_item.mapping_source : symbol_representation_map;
+ SELF\mapped_item.mapping_target : symbol_target;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+END_ENTITY;
+
+ENTITY annotation_symbol_occurrence
+ SUBTYPE OF (annotation_occurrence);
+ SELF\styled_item.item : annotation_symbol_occurrence_item;
+END_ENTITY;
+
+ENTITY annotation_text
+ SUBTYPE OF (mapped_item);
+ SELF\mapped_item.mapping_target : axis2_placement;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STRING_REPRESENTATION' IN
+ TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+END_ENTITY;
+
+ENTITY annotation_text_character
+ SUBTYPE OF (mapped_item);
+ alignment : text_alignment;
+ SELF\mapped_item.mapping_target : axis2_placement;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN
+ TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+END_ENTITY;
+
+ENTITY annotation_text_occurrence
+ SUBTYPE OF (annotation_occurrence);
+ SELF\styled_item.item : annotation_text_occurrence_item;
+END_ENTITY;
+
+ENTITY ap242_assignment_object_relationship
+ SUBTYPE OF (assignment_object_relationship);
+ SELF\assignment_object_relationship.related : ap242_assignment_object_select;
+ SELF\assignment_object_relationship.relating : ap242_assignment_object_select;
+END_ENTITY;
+
+ENTITY apex
+ SUBTYPE OF (derived_shape_aspect);
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY application_context_element
+ SUPERTYPE OF (ONEOF(product_concept_context, product_context, product_definition_context));
+ name : label;
+ frame_of_reference : application_context;
+END_ENTITY;
+
+ENTITY application_protocol_definition;
+ status : label;
+ application_interpreted_model_schema_name : label;
+ application_protocol_year : year_number;
+ application : application_context;
+END_ENTITY;
+
+ENTITY applied_action_assignment
+ SUBTYPE OF (action_assignment);
+ items : SET [1 : ?] OF action_items;
+END_ENTITY;
+
+ENTITY applied_action_method_assignment
+ SUBTYPE OF (action_method_assignment);
+ items : SET [1 : ?] OF action_method_items;
+END_ENTITY;
+
+ENTITY applied_action_request_assignment
+ SUBTYPE OF (action_request_assignment);
+ items : SET [1 : ?] OF action_request_item;
+END_ENTITY;
+
+ENTITY applied_approval_assignment
+ SUBTYPE OF (approval_assignment);
+ items : SET [1 : ?] OF approval_item;
+END_ENTITY;
+
+ENTITY applied_area
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT ({2 <= SIZEOF(impl_rep.used_representation.items) <= 3})))) =
+ 0)))) =
+ 0);
+ WR4: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'effective length')))) =
+ 1)))) =
+ 0)))) <=
+ 1);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'maximum length')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR7: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+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;
+
+ENTITY applied_certification_assignment
+ SUBTYPE OF (certification_assignment);
+ items : SET [1 : ?] OF certification_item;
+END_ENTITY;
+
+ENTITY applied_classification_assignment
+ SUBTYPE OF (classification_assignment);
+ items : SET [1 : ?] OF classification_item;
+END_ENTITY;
+
+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;
+
+ENTITY applied_contract_assignment
+ SUBTYPE OF (contract_assignment);
+ items : SET [1 : ?] OF contract_item;
+END_ENTITY;
+
+ENTITY applied_date_and_time_assignment
+ SUBTYPE OF (date_and_time_assignment);
+ items : SET [1 : ?] OF date_and_time_item;
+END_ENTITY;
+
+ENTITY applied_date_assignment
+ SUBTYPE OF (date_assignment);
+ items : SET [1 : ?] OF date_item;
+END_ENTITY;
+
+ENTITY applied_description_text_assignment
+ SUBTYPE OF (description_text_assignment);
+ items : SET [1 : ?] OF description_item;
+END_ENTITY;
+
+ENTITY applied_description_text_assignment_relationship
+ SUBTYPE OF (description_text_assignment_relationship);
+ SELF\description_text_assignment_relationship.related : applied_description_text_assignment;
+ SELF\description_text_assignment_relationship.relating : applied_description_text_assignment;
+END_ENTITY;
+
+ENTITY applied_directed_action_assignment
+ SUBTYPE OF (directed_action_assignment);
+ items : SET [1 : ?] OF action_request_item;
+END_ENTITY;
+
+ENTITY applied_document_reference
+ SUBTYPE OF (document_reference);
+ items : SET [1 : ?] OF document_reference_item;
+END_ENTITY;
+
+ENTITY applied_document_usage_constraint_assignment
+ SUBTYPE OF (document_usage_constraint_assignment);
+ items : SET [1 : ?] OF document_reference_item;
+END_ENTITY;
+
+ENTITY applied_effectivity_assignment
+ SUBTYPE OF (effectivity_assignment);
+ items : SET [1 : ?] OF effectivity_item;
+END_ENTITY;
+
+ENTITY applied_event_occurrence_assignment
+ SUBTYPE OF (event_occurrence_assignment);
+ items : SET [1 : ?] OF event_occurrence_item;
+END_ENTITY;
+
+ENTITY applied_external_identification_assignment
+ SUBTYPE OF (external_identification_assignment);
+ items : SET [1 : ?] OF external_identification_item;
+END_ENTITY;
+
+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;
+
+ENTITY applied_group_assignment
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : ?] OF groupable_item;
+END_ENTITY;
+
+ENTITY applied_identification_assignment
+ SUBTYPE OF (identification_assignment);
+ items : SET [1 : ?] OF identification_item;
+END_ENTITY;
+
+ENTITY applied_ineffectivity_assignment
+ SUBTYPE OF (effectivity_assignment);
+ items : SET [1 : ?] OF effectivity_item;
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOT_EFFECTIVITY',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SERIAL_NUMBERED_EFFECTIVITY',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_EFFECTIVITY'] *
+ TYPEOF(SELF.assigned_effectivity)) =
+ 0;
+END_ENTITY;
+
+ENTITY applied_location_assignment
+ SUBTYPE OF (location_assignment);
+ items : SET [1 : ?] OF location_item;
+END_ENTITY;
+
+ENTITY applied_location_representation_assignment
+ SUBTYPE OF (location_representation_assignment);
+ items : SET [1 : ?] OF location_representation_item;
+END_ENTITY;
+
+ENTITY applied_name_assignment
+ SUBTYPE OF (name_assignment);
+ item : name_item;
+END_ENTITY;
+
+ENTITY applied_organization_assignment
+ SUBTYPE OF (organization_assignment);
+ items : SET [1 : ?] OF organization_item;
+END_ENTITY;
+
+ENTITY applied_organization_type_assignment
+ SUBTYPE OF (organization_type_assignment);
+ items : SET [1 : ?] OF organization_type_item;
+END_ENTITY;
+
+ENTITY applied_organizational_project_assignment
+ SUBTYPE OF (organizational_project_assignment);
+ items : SET [1 : ?] OF project_item;
+END_ENTITY;
+
+ENTITY applied_person_and_organization_assignment
+ SUBTYPE OF (person_and_organization_assignment);
+ items : SET [1 : ?] OF person_and_organization_item;
+END_ENTITY;
+
+ENTITY applied_presented_item
+ SUBTYPE OF (presented_item);
+ items : SET [1 : ?] OF presented_item_select;
+END_ENTITY;
+
+ENTITY applied_security_classification_assignment
+ SUBTYPE OF (security_classification_assignment);
+ items : SET [1 : ?] OF security_classification_item;
+END_ENTITY;
+
+ENTITY applied_state_observed_assignment
+ SUBTYPE OF (state_observed_assignment);
+ items : SET [1 : ?] OF state_observed_of_item;
+END_ENTITY;
+
+ENTITY applied_state_type_assignment
+ SUBTYPE OF (state_type_assignment);
+ items : SET [1 : ?] OF state_type_of_item;
+END_ENTITY;
+
+ENTITY applied_time_interval_assignment
+ SUBTYPE OF (time_interval_assignment);
+ items : SET [0 : ?] OF time_interval_item;
+END_ENTITY;
+
+ENTITY applied_usage_right
+ SUBTYPE OF (action_assignment);
+ items : SET [1 : ?] OF ir_usage_item;
+END_ENTITY;
+
+ENTITY approval;
+ status : approval_status;
+ level : label;
+END_ENTITY;
+
+ENTITY approval_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_approval : approval;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY approval_date_time;
+ date_time : date_time_select;
+ dated_approval : approval;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY approval_person_organization;
+ person_organization : person_organization_select;
+ authorized_approval : approval;
+ role : approval_role;
+END_ENTITY;
+
+ENTITY approval_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_approval : approval;
+ related_approval : approval;
+END_ENTITY;
+
+ENTITY approval_role;
+ role : label;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY approval_status;
+ name : label;
+END_ENTITY;
+
+ENTITY area_in_set;
+ area : presentation_area;
+ in_set : presentation_set;
+END_ENTITY;
+
+ENTITY area_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY area_with_outer_boundary
+ SUBTYPE OF (half_space_2d);
+ SELF\half_space_2d.base_curve : composite_curve;
+WHERE
+ WR1: base_curve\composite_curve.closed_curve = true;
+END_ENTITY;
+
+ENTITY array_placement_group
+ SUPERTYPE OF (ONEOF(linear_array_placement_group_component, rectangular_array_placement_group_component))
+ SUBTYPE OF (assembly_group_component);
+END_ENTITY;
+
+ENTITY ascribable_state;
+ name : label;
+ description : OPTIONAL text;
+ pertaining_state_type : state_type;
+ ascribed_state_observed : state_observed;
+END_ENTITY;
+
+ENTITY ascribable_state_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_ascribable_state : ascribable_state;
+ related_ascribable_state : ascribable_state;
+DERIVE
+ id : identifier := get_id_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY asin_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY assembly_bond_definition
+ SUBTYPE OF ( shape_aspect );
+ UNIQUE
+ ur1 : SELF\shape_aspect.name;
+END_ENTITY;
+
+ENTITY assembly_joint
+ SUBTYPE OF (component_feature_joint);
+WHERE
+ WR1: acyclic_shape_aspect_relationship(SELF, [SELF\shape_aspect_relationship.related_shape_aspect],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_JOINT');
+END_ENTITY;
+
+ENTITY component_mating_constraint_condition
+ SUBTYPE OF ( shape_aspect );
+ UNIQUE
+ ur1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
+END_ENTITY;
+
+ENTITY connection_zone_based_assembly_joint
+ SUBTYPE OF ( assembly_joint );
+END_ENTITY;
+
+ENTITY assembly_component
+ SUBTYPE OF (component_definition, product_definition_shape);
+DERIVE
+ SELF\property_definition.definition : assembly_component := SELF;
+WHERE
+ WR1: NOT EXISTS(SELF\property_definition.description);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY assembly_geometric_constraint
+ ABSTRACT SUPERTYPE OF (ONEOF(binary_assembly_constraint, fixed_constituent_assembly_constraint))
+ SUBTYPE OF (explicit_constraint);
+END_ENTITY;
+
+ENTITY assembly_group_component
+ SUBTYPE OF (assembly_component);
+END_ENTITY;
+
+ENTITY assembly_group_component_definition_placement_link
+ SUBTYPE OF (product_definition, product_definition_relationship);
+ SELF\product_definition_relationship.relating_product_definition : assembly_component;
+ SELF\product_definition_relationship.related_product_definition : assembly_component;
+WHERE
+ WR1: SELF\product_definition_relationship.related_product_definition :<>:
+ SELF\product_definition_relationship.relating_product_definition;
+ WR2: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK');
+END_ENTITY;
+
+ENTITY assembly_shape_constraint
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY assembly_shape_constraint_item_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : assembly_shape_constraint;
+END_ENTITY;
+
+ENTITY assembly_shape_joint
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY assembly_shape_joint_item_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : assembly_shape_joint;
+END_ENTITY;
+
+ENTITY assigned_analysis
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : 1] OF product_definition_formation;
+ SELF\group_assignment.assigned_group : analysis_assignment;
+END_ENTITY;
+
+ENTITY assigned_requirement
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : requirement_assignment;
+ items : SET [1 : 1] OF product_definition;
+END_ENTITY;
+
+ENTITY assignment_object_relationship;
+ id : OPTIONAL identifier;
+ description : OPTIONAL text;
+ relating : assignment_object_select;
+ related : assignment_object_select;
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_assignment_object_relationship(SELF, [related],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSIGNMENT_OBJECT_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY atan_function
+ SUBTYPE OF (binary_function_call);
+END_ENTITY;
+
+ENTITY atom_based_literal
+ SUBTYPE OF (generic_literal);
+ lit_value : atom_based_value;
+END_ENTITY;
+
+ENTITY atomic_formula
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+ENTITY attachment_slot_as_planned
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY attachment_slot_as_realized
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY attachment_slot_design
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY attachment_slot_design_to_planned
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_design;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : attachment_slot_as_planned;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY attachment_slot_design_to_realized
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_design;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : attachment_slot_as_realized;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY attachment_slot_on_product
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY attachment_slot_planned_to_realized
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_as_planned;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : attachment_slot_as_realized;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY attribute_assertion
+ SUBTYPE OF (fact_type, property_definition_representation, representation);
+END_ENTITY;
+
+ENTITY attribute_classification_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_class : group;
+ attribute_name : label;
+ role : classification_role;
+END_ENTITY;
+
+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;
+
+ENTITY attribute_value_assignment
+ ABSTRACT SUPERTYPE;
+ attribute_name : label;
+ attribute_value : attribute_type;
+ role : attribute_value_role;
+END_ENTITY;
+
+ENTITY attribute_value_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY auxiliary_geometric_representation_item
+ SUBTYPE OF (geometric_representation_item, variational_representation_item);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_CURVE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_CURVE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY b_spline_curve_knot_locator
+ SUBTYPE OF (founded_item);
+ basis_curve : b_spline_curve;
+ knot_index : INTEGER;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+ENTITY b_spline_curve_segment
+ SUBTYPE OF (founded_item);
+ basis_curve : b_spline_curve;
+ start_knot_index : INTEGER;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+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;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY b_spline_surface_knot_locator
+ SUBTYPE OF (founded_item);
+ basis_surface : b_spline_surface;
+ knot_index : INTEGER;
+ surface_parameter : u_or_v_parameter;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+ENTITY b_spline_surface_patch
+ SUBTYPE OF (founded_item);
+ basis_surface : b_spline_surface;
+ u_start_knot_index : INTEGER;
+ v_start_knot_index : INTEGER;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+ENTITY b_spline_surface_strip
+ SUBTYPE OF (founded_item);
+ basis_surface : b_spline_surface;
+ start_knot_index : INTEGER;
+ surface_parameter : u_or_v_parameter;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_VOLUME' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_VOLUME' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_VOLUME' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_VOLUME_WITH_KNOTS' IN TYPEOF(SELF));
+END_ENTITY;
+
+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;
+
+ENTITY back_chaining_rule
+ SUBTYPE OF (rule_definition);
+END_ENTITY;
+
+ENTITY back_chaining_rule_body
+ SUBTYPE OF (property_definition, property_definition_representation, representation);
+END_ENTITY;
+
+ENTITY background_colour
+ SUBTYPE OF (colour);
+ presentation : area_or_view;
+UNIQUE
+ UR1: presentation;
+END_ENTITY;
+
+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;
+
+ENTITY barring_hole
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
+ TYPEOF(sar.relating_shape_aspect)) =
+ 1))) =
+ 1))) =
+ 1;
+ WR2: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'barring profile') AND (sa.description = 'closed profile occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage'))) =
+ 1))) =
+ 1;
+ WR3: (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ {1 <= SIZEOF(pdr.used_representation.items) <= 2})) =
+ 1);
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | NOT (i.name IN ['orientation','base radius']))) >
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) <>
+ 1))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY bead
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) <=
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(pdr.used_representation.items) > 2))) =
+ 0);
+ WR2: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | NOT (i.name IN ['orientation','base radius']))) >
+ 0))) =
+ 0;
+ WR3: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) >
+ 1))) =
+ 0;
+ WR4: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'sweep path') AND (sa.description = 'path feature component occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'path feature component usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
+ TYPEOF(sar.relating_shape_aspect)))) =
+ 1))) =
+ 1;
+ WR5: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'bead profile') AND (sa.description = 'open profile occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE'] *
+ TYPEOF(sar.relating_shape_aspect)) =
+ 1))) =
+ 1))) =
+ 1;
+ WR6: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'end condition') AND (sa.description = 'bead end occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'bead end usage') AND (sar.description = 'starting') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN
+ TYPEOF(sar.relating_shape_aspect)))) =
+ 1))) =
+ 1;
+ WR7: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'end condition') AND (sa.description = 'bead end occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'bead end usage') AND (sar.description = 'ending') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN
+ TYPEOF(sar.relating_shape_aspect)))) =
+ 1))) =
+ 1;
+END_ENTITY;
+
+ENTITY bead_end
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SELF.description IN ['linear','open','radiused'];
+ WR3: (SELF.description <> 'linear') XOR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) >
+ 0);
+ WR4: (SELF.description <> 'linear') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(pdr.used_representation.items) = 2))) =
+ 1);
+ WR5: (SELF.description <> 'linear') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'end length') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1);
+ WR6: (SELF.description <> 'linear') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'end shape') AND
+ (i\descriptive_representation_item.description IN ['straight','tapered']) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)))) =
+ 1))) =
+ 1);
+ WR7: SIZEOF(QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'bead end usage') AND (sar.description IN ['starting','ending']) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD' IN
+ TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
+ (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'end condition') AND
+ (sar.related_shape_aspect.of_shape.definition\characterized_object.description =
+ 'bead end occurrence'))) =
+ 1;
+END_ENTITY;
+
+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;
+
+ENTITY beveled_sheet_representation
+ SUBTYPE OF (shape_representation);
+END_ENTITY;
+
+ENTITY bezier_curve
+ SUBTYPE OF (b_spline_curve);
+END_ENTITY;
+
+ENTITY bezier_surface
+ SUBTYPE OF (b_spline_surface);
+END_ENTITY;
+
+ENTITY bezier_volume
+ SUBTYPE OF (b_spline_volume);
+END_ENTITY;
+
+ENTITY binary_assembly_constraint
+ ABSTRACT SUPERTYPE OF (ONEOF(parallel_assembly_constraint, surface_distance_assembly_constraint_with_dimension,
+ angle_assembly_constraint_with_dimension, perpendicular_assembly_constraint,
+ incidence_assembly_constraint, coaxial_assembly_constraint, tangent_assembly_constraint))
+ SUBTYPE OF (assembly_geometric_constraint, representation_relationship_with_transformation);
+ SELF\representation_relationship.rep_1 : representative_shape_representation;
+ SELF\representation_relationship.rep_2 : representative_shape_representation;
+WHERE
+ WR1: (SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3) AND
+ (SELF\explicit_constraint.reference_elements[1]\geometric_representation_item.dim = 3);
+ WR2: (SELF\representation_relationship.rep_1 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1))) AND
+ (SELF\representation_relationship.rep_2 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2)));
+ WR3: (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND
+ (SIZEOF(SELF\explicit_constraint.reference_elements) = 1);
+ WR4: (SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1 =
+ SELF\explicit_constraint.reference_elements[1]) AND
+ (SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2 =
+ SELF\explicit_constraint.constrained_elements[1]);
+END_ENTITY;
+
+ENTITY binary_boolean_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(xor_expression, equals_expression))
+ SUBTYPE OF (boolean_expression, binary_generic_expression);
+END_ENTITY;
+
+ENTITY binary_function_call
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+ENTITY binary_generic_expression
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (generic_expression);
+ operands : LIST [2 : 2] OF generic_expression;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY block_volume
+ SUBTYPE OF (volume);
+ position : axis2_placement_3d;
+ x : positive_length_measure;
+ y : positive_length_measure;
+ z : positive_length_measure;
+END_ENTITY;
+
+ENTITY boolean_defined_function
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (defined_function, boolean_expression);
+END_ENTITY;
+
+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;
+
+ENTITY boolean_literal
+ SUBTYPE OF (simple_boolean_expression, generic_literal);
+ the_value : BOOLEAN;
+END_ENTITY;
+
+ENTITY boolean_representation_item
+ SUBTYPE OF (representation_item, boolean_literal);
+END_ENTITY;
+
+ENTITY boolean_result
+ SUBTYPE OF (geometric_representation_item);
+ operator : boolean_operator;
+ first_operand : boolean_operand;
+ second_operand : boolean_operand;
+END_ENTITY;
+
+ENTITY boolean_result_2d
+ SUBTYPE OF (boolean_result);
+ SELF\boolean_result.first_operand : boolean_operand_2d;
+ SELF\boolean_result.second_operand : boolean_operand_2d;
+END_ENTITY;
+
+ENTITY boolean_variable
+ SUBTYPE OF (simple_boolean_expression, variable);
+END_ENTITY;
+
+ENTITY boss
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SELF\characterized_object.description IN ['circular','complex','rectangular'];
+ WR2: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'boss height occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description =
+ 'path feature component usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({1 <= SIZEOF(pdr.used_representation.items) <= 2}))) =
+ 1)) =
+ 1;
+ WR4: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'circular profile occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR7: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'top condition occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'boss top usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'change in diameter occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'taper usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr.related_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'enclosed boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'change in boundary occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (sar.description = 'taper usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr.related_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'rectangular profile occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR12: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY boss_top
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0));
+ WR4: ((NOT (SELF.description = 'planar')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0));
+ WR5: (NOT (SELF.description = 'complex')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION') IN
+ TYPEOF(pdr.used_representation))) =
+ 1)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar.description = 'boss top usage') AND
+ (sar.name IN ['boss height start','boss height end'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ((fcr.related_shape_aspect.description = 'top condition occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS_TOP' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1);
+ WR7: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) <=
+ 1)))) =
+ 0);
+ WR8: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'top radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY bound_parameter_environment
+ SUBTYPE OF (environment);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN
+ TYPEOF(SELF\environment.syntactic_representation)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE' IN
+ TYPEOF(SELF\environment.semantics));
+END_ENTITY;
+
+ENTITY bound_variable_semantics
+ SUBTYPE OF (variable_semantics);
+END_ENTITY;
+
+ENTITY bound_variational_parameter
+ SUBTYPE OF (variational_parameter);
+DERIVE
+ SELF\variational_parameter.parameter_current_value : maths_value := ?;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_PARAMETER_ENVIRONMENT' IN
+ TYPEOF(SELF\generic_variable.interpretation);
+END_ENTITY;
+
+ENTITY boundary_curve
+ SUBTYPE OF (composite_curve_on_surface);
+WHERE
+ WR1: SELF\composite_curve.closed_curve;
+END_ENTITY;
+
+ENTITY boundary_curve_of_b_spline_or_rectangular_composite_surface
+ SUBTYPE OF (founded_item);
+ basis_surface : b_spline_or_rectangular_composite_surface_select;
+ boundary_type : surface_boundary_type;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+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;
+
+ENTITY bounded_pcurve
+ SUBTYPE OF (pcurve, bounded_curve);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN
+ TYPEOF(SELF\pcurve.reference_to_curve.items[1]));
+END_ENTITY;
+
+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;
+
+ENTITY bounded_surface_curve
+ SUBTYPE OF (surface_curve, bounded_curve);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve.curve_3d));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOXED_HALF_SPACE' IN TYPEOF(item)))) =
+ 0;
+END_ENTITY;
+
+ENTITY boxed_half_space
+ SUBTYPE OF (half_space_solid);
+ enclosure : box_domain;
+END_ENTITY;
+
+ENTITY breakdown_context
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+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;
+
+ENTITY breakdown_element_realization
+ SUBTYPE OF (characterized_object, product_definition_element_relationship);
+END_ENTITY;
+
+ENTITY breakdown_element_usage
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY breakdown_of
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY brep_with_voids
+ SUBTYPE OF (manifold_solid_brep);
+ voids : SET [1 : ?] OF oriented_closed_shell;
+END_ENTITY;
+
+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;
+
+ENTITY camera_image
+ SUPERTYPE OF (ONEOF(camera_image_2d_with_scale, 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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
+END_ENTITY;
+
+ENTITY camera_image_2d_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_d2.view_window\planar_extent.size_in_x);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D2' 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_d2.view_window);
+ WR3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window_clipping;
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
+ TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement));
+END_ENTITY;
+
+ENTITY camera_model
+ ABSTRACT SUPERTYPE OF (ONEOF(camera_model_d2, camera_model_d3))
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: (SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION.TRANSFORM_ITEM_1')) +
+ SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPING_ORIGIN'))) >
+ 0;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')) = 0;
+END_ENTITY;
+
+ENTITY camera_model_d2
+ SUBTYPE OF (camera_model);
+ view_window : planar_box;
+ view_window_clipping : BOOLEAN;
+WHERE
+ WR1: SELF\geometric_representation_item.dim = 2;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY camera_model_d3_with_hlhsr
+ SUBTYPE OF (camera_model_d3);
+ hidden_line_surface_removal : BOOLEAN;
+END_ENTITY;
+
+ENTITY camera_model_with_light_sources
+ SUBTYPE OF (camera_model_d3);
+ sources : SET [1 : ?] OF light_source;
+END_ENTITY;
+
+ENTITY camera_usage
+ SUBTYPE OF (representation_map);
+ SELF\representation_map.mapping_origin : camera_model;
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
+ TYPEOF(SELF\representation_map.mapped_representation));
+END_ENTITY;
+
+ENTITY capacitance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAPACITANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY capacitance_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.farad);
+END_ENTITY;
+
+ENTITY cartesian_11
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF);
+END_ENTITY;
+
+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;
+
+ENTITY cartesian_point
+ SUPERTYPE OF (ONEOF(cylindrical_point, polar_point, spherical_point))
+ SUBTYPE OF (point);
+ coordinates : LIST [1 : 3] OF length_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY cc_design_approval
+ SUBTYPE OF (approval_assignment);
+ items : SET [1 : ?] OF approved_item;
+END_ENTITY;
+
+ENTITY cc_design_certification
+ SUBTYPE OF (certification_assignment);
+ items : SET [1 : ?] OF certified_item;
+END_ENTITY;
+
+ENTITY cc_design_contract
+ SUBTYPE OF (contract_assignment);
+ items : SET [1 : ?] OF contracted_item;
+END_ENTITY;
+
+ENTITY cc_design_date_and_time_assignment
+ SUBTYPE OF (date_and_time_assignment);
+ items : SET [1 : ?] OF date_time_item;
+END_ENTITY;
+
+ENTITY cc_design_person_and_organization_assignment
+ SUBTYPE OF (person_and_organization_assignment);
+ items : SET [1 : ?] OF cc_person_organization_item;
+WHERE
+ WR1: cc_design_person_and_organization_correlation(SELF);
+END_ENTITY;
+
+ENTITY cc_design_security_classification
+ SUBTYPE OF (security_classification_assignment);
+ items : SET [1 : ?] OF cc_classified_item;
+END_ENTITY;
+
+ENTITY cc_design_specification_reference
+ SUBTYPE OF (document_reference);
+ items : SET [1 : ?] OF cc_specified_item;
+END_ENTITY;
+
+ENTITY cdgc_with_dimension
+ SUBTYPE OF (curve_distance_geometric_constraint);
+ distance_value : non_negative_length_measure;
+END_ENTITY;
+
+ENTITY celsius_temperature_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY centre_of_symmetry
+ SUBTYPE OF (derived_shape_aspect);
+END_ENTITY;
+
+ENTITY certification;
+ name : label;
+ purpose : text;
+ kind : certification_type;
+END_ENTITY;
+
+ENTITY certification_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_certification : certification;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY certification_type;
+ description : label;
+END_ENTITY;
+
+ENTITY chain_based_geometric_item_specific_usage
+ SUBTYPE OF (geometric_item_specific_usage, chain_based_item_identified_representation_usage);
+END_ENTITY;
+
+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];
+ directed_link : LIST [1 : ?] OF representation_relationship := get_directed_link(nodes, undirected_link);
+ leaf : representation := SELF\item_identified_representation_usage.used_representation;
+WHERE
+ WR1: EXISTS(directed_link);
+END_ENTITY;
+
+ENTITY chamfer
+ SUBTYPE OF (transition_feature);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
+ TYPEOF(fcr.related_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (fcr.related_shape_aspect.description = 'first offset')))) =
+ 1);
+ WR3: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
+ TYPEOF(fcr.related_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (fcr.related_shape_aspect.description = 'second offset')))) =
+ 1);
+END_ENTITY;
+
+ENTITY chamfer_offset
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: (SELF.description IN ['first offset','second offset']);
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'offset amount')) OR
+ ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
+ TYPEOF(sdr.related_shape_aspect))))) =
+ 1);
+END_ENTITY;
+
+ENTITY change
+ SUBTYPE OF (action_assignment);
+ items : SET [1 : ?] OF work_item;
+END_ENTITY;
+
+ENTITY change_composition_relationship
+ SUBTYPE OF (group_relationship);
+ SELF\group_relationship.relating_group : change_group;
+ SELF\group_relationship.related_group : change_element;
+DERIVE
+ composition : change_group := SELF\group_relationship.relating_group;
+ element : change_element := SELF\group_relationship.related_group;
+END_ENTITY;
+
+ENTITY change_element
+ ABSTRACT SUPERTYPE OF (ONEOF(modify_element, delete_element, add_element))
+ SUBTYPE OF (group, characterized_object);
+END_ENTITY;
+
+ENTITY change_element_sequence
+ SUBTYPE OF (group_relationship);
+ SELF\group_relationship.relating_group : change_element;
+ SELF\group_relationship.related_group : change_element;
+DERIVE
+ next : change_element := SELF\group_relationship.related_group;
+ previous : change_element := SELF\group_relationship.relating_group;
+END_ENTITY;
+
+ENTITY change_group
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY change_group_assignment
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : change_group;
+ item : change_relationship_select;
+END_ENTITY;
+
+ENTITY change_request
+ SUBTYPE OF (action_request_assignment);
+ items : SET [1 : ?] OF change_request_item;
+END_ENTITY;
+
+ENTITY character_glyph_font_usage;
+ character : generic_character_glyph_symbol;
+ font : text_font;
+END_ENTITY;
+
+ENTITY character_glyph_style_outline
+ SUBTYPE OF (founded_item);
+ outline_style : curve_style;
+END_ENTITY;
+
+ENTITY character_glyph_style_stroke
+ SUBTYPE OF (founded_item);
+ stroke_style : curve_style;
+END_ENTITY;
+
+ENTITY character_glyph_symbol
+ SUBTYPE OF (generic_character_glyph_symbol);
+ character_box : planar_extent;
+ baseline_ratio : ratio_measure;
+DERIVE
+ box_height : length_measure := character_box.size_in_y;
+WHERE
+ WR1: {0.0 <= baseline_ratio <= 1.0};
+ WR2: item_in_context(character_box, SELF\representation.context_of_items);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(box_height);
+END_ENTITY;
+
+ENTITY character_glyph_symbol_outline
+ SUBTYPE OF (character_glyph_symbol);
+ outlines : SET [1 : ?] OF annotation_fill_area;
+WHERE
+ WR1: outlines <= SELF\representation.items;
+END_ENTITY;
+
+ENTITY character_glyph_symbol_stroke
+ SUBTYPE OF (character_glyph_symbol);
+ strokes : SET [1 : ?] OF curve;
+WHERE
+ WR1: strokes <= SELF\representation.items;
+END_ENTITY;
+
+ENTITY characteristic_data_column_header
+ SUBTYPE OF (general_property);
+END_ENTITY;
+
+ENTITY characteristic_data_column_header_link
+ SUBTYPE OF (general_property_relationship);
+END_ENTITY;
+
+ENTITY characteristic_data_table_header
+ SUBTYPE OF (general_property);
+END_ENTITY;
+
+ENTITY characteristic_data_table_header_decomposition
+ SUBTYPE OF (general_property_relationship);
+END_ENTITY;
+
+ENTITY characteristic_type
+ SUBTYPE OF (group);
+END_ENTITY;
+
+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];
+ directed_link : LIST [1 : ?] OF representation_relationship := get_directed_link(nodes, undirected_link);
+ leaf : representation := SELF\characterized_item_within_representation.rep;
+WHERE
+ WR1: EXISTS(directed_link);
+END_ENTITY;
+
+ENTITY characterized_class
+ SUBTYPE OF (characterized_object, class);
+END_ENTITY;
+
+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;
+
+ENTITY characterized_location_object
+ SUBTYPE OF (characterized_object, location);
+END_ENTITY;
+
+ENTITY characterized_object;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY characterized_object_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_object : characterized_object;
+ related_object : characterized_object;
+END_ENTITY;
+
+ENTITY characterized_product_concept_feature
+ SUBTYPE OF (product_concept_feature, characterized_object);
+END_ENTITY;
+
+ENTITY characterized_product_concept_feature_category
+ SUBTYPE OF (product_concept_feature_category, characterized_object);
+END_ENTITY;
+
+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;
+
+ENTITY circle
+ SUBTYPE OF (conic);
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY circular_area
+ SUBTYPE OF (primitive_2d);
+ centre : cartesian_point;
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY circular_closed_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'diameter')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+ENTITY circular_involute
+ SUBTYPE OF (curve);
+ position : axis2_placement;
+ base_radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY circular_path
+ SUBTYPE OF (path_node);
+ via_point : cartesian_point;
+END_ENTITY;
+
+ENTITY circular_pattern
+ SUBTYPE OF (replicate_feature);
+WHERE
+ WR1: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.related_shape_aspect)))) =
+ 1)))) <=
+ 3)))) =
+ 0);
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'diameter')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'base feature rotation')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'angular spacing')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR8: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+ENTITY circular_runout_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY class
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY class_by_extension
+ SUBTYPE OF (class);
+END_ENTITY;
+
+ENTITY class_by_intension
+ SUBTYPE OF (class);
+END_ENTITY;
+
+ENTITY class_system
+ SUBTYPE OF (group);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)))) =
+ 0;
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN
+ TYPEOF(i)))) =
+ 0);
+END_ENTITY;
+
+ENTITY classification_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_class : group;
+ role : classification_role;
+END_ENTITY;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFICATION_ASSIGNMENT_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY classification_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY clgc_with_dimension
+ SUBTYPE OF (curve_length_geometric_constraint);
+ length_value : positive_length_measure;
+END_ENTITY;
+
+ENTITY closed_curve_style_parameters
+ SUBTYPE OF (curve_style_parameters_representation);
+END_ENTITY;
+
+ENTITY closed_path_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY closed_shell
+ SUBTYPE OF (connected_face_set);
+END_ENTITY;
+
+ENTITY clothoid
+ SUBTYPE OF (curve);
+ position : axis2_placement;
+ clothoid_constant : length_measure;
+END_ENTITY;
+
+ENTITY coaxial_assembly_constraint
+ SUBTYPE OF (binary_assembly_constraint, coaxial_geometric_constraint);
+END_ENTITY;
+
+ENTITY coaxial_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF axial_geometry_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF axial_geometry_constraint_element;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\explicit_constraint.reference_elements
+ | SIZEOF(TYPEOF(q) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERE']) >
+ 0)) =
+ 0;
+END_ENTITY;
+
+ENTITY coaxiality_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY collection
+ SUBTYPE OF (product);
+END_ENTITY;
+
+ENTITY collection_assignment
+ SUBTYPE OF (applied_group_assignment);
+END_ENTITY;
+
+ENTITY collection_membership
+ SUBTYPE OF (applied_group_assignment);
+END_ENTITY;
+
+ENTITY collection_relationship
+ SUBTYPE OF (product_relationship);
+ SELF\product_relationship.relating_product : collection;
+ SELF\product_relationship.related_product : collection;
+DERIVE
+ related_collection : collection := SELF\product_relationship.related_product;
+ relating_collection : collection := SELF\product_relationship.relating_product;
+END_ENTITY;
+
+ENTITY collection_version
+ SUBTYPE OF (product_definition_formation);
+ SELF\product_definition_formation.of_product : collection;
+DERIVE
+ of_collection : collection := SELF\product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY collection_version_relationship
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : collection_version;
+DERIVE
+ related_version : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
+ relating_version : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
+END_ENTITY;
+
+ENTITY collection_version_sequence_relationship
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : collection_version;
+DERIVE
+ predecessor : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
+ successor : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
+END_ENTITY;
+
+ENTITY collection_view_definition
+ SUBTYPE OF (product_definition);
+ SELF\product_definition.formation : collection_version;
+DERIVE
+ defined_version : collection_version := SELF\product_definition.formation;
+END_ENTITY;
+
+ENTITY colour;
+END_ENTITY;
+
+ENTITY colour_rgb
+ SUBTYPE OF (colour_specification);
+ red : REAL;
+ green : REAL;
+ blue : REAL;
+WHERE
+ WR1: {0.0 <= red <= 1.0};
+ WR2: {0.0 <= green <= 1.0};
+ WR3: {0.0 <= blue <= 1.0};
+END_ENTITY;
+
+ENTITY colour_specification
+ SUBTYPE OF (colour);
+ name : label;
+END_ENTITY;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
+ TYPEOF(sar.related_shape_aspect)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM' IN
+ TYPEOF(sar.related_shape_aspect))))) =
+ 0;
+END_ENTITY;
+
+ENTITY comparison_equal
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+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: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[2]))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[2]))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[2])));
+END_ENTITY;
+
+ENTITY comparison_greater
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+ENTITY comparison_greater_equal
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+ENTITY comparison_less
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+ENTITY comparison_less_equal
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+ENTITY comparison_not_equal
+ SUBTYPE OF (comparison_expression);
+END_ENTITY;
+
+ENTITY complex_area
+ ABSTRACT SUPERTYPE OF (path_area_with_parameters ANDOR primitive_2d_with_inner_boundary)
+ SUBTYPE OF (primitive_2d);
+END_ENTITY;
+
+ENTITY complex_clause
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+ENTITY complex_conjunctive_clause
+ SUBTYPE OF (complex_clause);
+END_ENTITY;
+
+ENTITY complex_disjunctive_clause
+ SUBTYPE OF (complex_clause);
+END_ENTITY;
+
+ENTITY complex_number_literal
+ SUBTYPE OF (generic_literal);
+ real_part : REAL;
+ imag_part : REAL;
+END_ENTITY;
+
+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 <= 2 * PI};
+END_ENTITY;
+
+ENTITY complex_shelled_solid
+ SUBTYPE OF (shelled_solid);
+ thickened_face_list : LIST [1 : ?] OF SET [1 : ?] OF face_surface;
+ thickness_list : LIST [1 : ?] OF length_measure;
+WHERE
+ WR1: SIZEOF(thickened_face_list) = SIZEOF(thickness_list);
+ WR2: SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY component_definition
+ SUBTYPE OF (product_definition, product_definition_relationship);
+DERIVE
+ SELF\product_definition_relationship.related_product_definition : component_definition := SELF;
+WHERE
+ WR1: NOT EXISTS(SELF\product_definition_relationship.description);
+ WR2: NOT EXISTS(SELF\property_definition.description);
+ WR3: SELF\product_definition_relationship.id = SELF\product_definition.id;
+ WR4: SELF\product_definition_relationship.name = 'definition usage';
+ WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY component_feature
+ SUBTYPE OF (shape_aspect);
+ SELF\shape_aspect.of_shape : assembly_component;
+END_ENTITY;
+
+ENTITY component_feature_joint
+ SUBTYPE OF (shape_aspect_relationship, shape_aspect);
+ SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
+ SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
+END_ENTITY;
+
+ENTITY component_feature_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
+ SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
+WHERE
+ WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>: SELF\shape_aspect_relationship.relating_shape_aspect;
+END_ENTITY;
+
+ENTITY component_path_shape_aspect
+ SUBTYPE OF (shape_aspect);
+ location : multi_or_next_assembly_usage_occurrence;
+ component_shape_aspect : internal_or_reflected_shape_aspect;
+UNIQUE
+ UR1: location, component_shape_aspect;
+END_ENTITY;
+
+ENTITY component_terminal
+ SUBTYPE OF (component_feature);
+END_ENTITY;
+
+ENTITY composite_assembly_sequence_definition
+ SUBTYPE OF (product_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
+ TYPEOF(pdr))) >
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve));
+END_ENTITY;
+
+ENTITY composite_curve_transition_locator
+ SUBTYPE OF (founded_item);
+ basis_curve : composite_curve;
+ transition_index : INTEGER;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+ENTITY composite_group_shape_aspect
+ SUBTYPE OF (composite_shape_aspect);
+END_ENTITY;
+
+ENTITY composite_hole
+ SUBTYPE OF (compound_feature);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SELF\characterized_object.description IN ['counterbore','countersunk']);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
+ TYPEOF(sar.related_shape_aspect)))))) =
+ 2)))) =
+ 1)))) =
+ 1);
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ ((NOT (SELF\characterized_object.description = 'countersunk')) OR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
+ TYPEOF(sar.related_shape_aspect)) AND
+ (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(sar.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description =
+ 'change in diameter occurrence') AND
+ (SIZEOF(QUERY(fcr2
+ <* QUERY(sar2
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar2.description =
+ 'taper usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar2))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr2.related_shape_aspect)))) =
+ 1)))) =
+ 0)))) =
+ 0))))) =
+ 1)))) =
+ 1)))) =
+ 1));
+END_ENTITY;
+
+ENTITY composite_material_designation
+ SUBTYPE OF (material_designation);
+END_ENTITY;
+
+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;
+
+ENTITY composite_sheet_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] *
+ TYPEOF(SELF)) =
+ 1;
+END_ENTITY;
+
+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;
+
+ENTITY composite_text_with_associated_curves
+ SUBTYPE OF (composite_text);
+ associated_curves : SET [1 : ?] OF curve;
+END_ENTITY;
+
+ENTITY composite_text_with_blanking_box
+ SUBTYPE OF (composite_text);
+ blanking : planar_box;
+END_ENTITY;
+
+ENTITY composite_text_with_delineation
+ SUBTYPE OF (composite_text);
+ delineation : text_delineation;
+END_ENTITY;
+
+ENTITY composite_text_with_extent
+ SUBTYPE OF (composite_text);
+ extent : planar_extent;
+END_ENTITY;
+
+ENTITY composite_unit_shape_aspect
+ SUBTYPE OF (composite_shape_aspect);
+END_ENTITY;
+
+ENTITY compound_feature
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((csa.name = 'compound feature in solid') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa))))) =
+ 1))) =
+ 1);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa))) =
+ 1))) =
+ 1);
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (SIZEOF(QUERY(fcr
+ <* csa.component_relationships
+ | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(fcr))))) =
+ 0)))) =
+ 1)))) =
+ 1);
+ WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)))) =
+ 1))) =
+ 1);
+ WR5: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THREAD' IN
+ TYPEOF(sar.related_shape_aspect)))) =
+ 0)))) =
+ 1)))) =
+ 1);
+ WR6: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY compound_representation_item
+ SUPERTYPE OF ((ONEOF(point_and_vector, point_array)) ANDOR
+ ((ONEOF(row_representation_item, table_representation_item))))
+ SUBTYPE OF (representation_item);
+ item_element : compound_item_definition;
+END_ENTITY;
+
+ENTITY compound_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(cbsr_i)) <>
+ 1)) =
+ 0;
+ WR3: SIZEOF(QUERY(cbsr_i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(cbsr_i)) =
+ 1)) >
+ 0;
+ WR4: SIZEOF(QUERY(cbsr_i
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(cbsr_i)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] *
+ TYPEOF(cbsr_i\mapped_item.mapping_source)) <>
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY concat_expression
+ SUBTYPE OF (string_expression, multiple_arity_generic_expression);
+ SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF string_expression;
+END_ENTITY;
+
+ENTITY concentricity_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY concept_feature_operator;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+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;
+
+ENTITY concept_feature_relationship_with_condition
+ SUBTYPE OF (concept_feature_relationship);
+ conditional_operator : concept_feature_operator;
+END_ENTITY;
+
+ENTITY condition
+ SUBTYPE OF (action_method);
+END_ENTITY;
+
+ENTITY conditional_concept_feature
+ SUBTYPE OF (product_concept_feature);
+ condition : concept_feature_relationship_with_condition;
+END_ENTITY;
+
+ENTITY conditional_effectivity
+ SUBTYPE OF (condition, effectivity);
+END_ENTITY;
+
+ENTITY conductance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDUCTANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY conductance_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.siemens);
+END_ENTITY;
+
+ENTITY configurable_item
+ SUBTYPE OF (configuration_item);
+ item_concept_feature : SET [1 : ?] OF product_concept_feature_association;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY configuration_effectivity
+ SUBTYPE OF (product_definition_effectivity);
+ configuration : configuration_design;
+UNIQUE
+ UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN
+ TYPEOF(SELF\product_definition_effectivity.usage);
+END_ENTITY;
+
+ENTITY configuration_item;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ item_concept : product_concept;
+ purpose : OPTIONAL label;
+END_ENTITY;
+
+ENTITY configuration_item_hierarchical_relationship
+ SUBTYPE OF (configuration_item_relationship);
+END_ENTITY;
+
+ENTITY configuration_item_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_configuration_item : configuration_item;
+ related_configuration_item : configuration_item;
+END_ENTITY;
+
+ENTITY configuration_item_revision_sequence
+ SUBTYPE OF (configuration_item_relationship);
+END_ENTITY;
+
+ENTITY configured_effectivity_assignment
+ SUBTYPE OF (effectivity_assignment);
+ items : SET [1 : ?] OF configured_effectivity_item;
+WHERE
+ WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN
+ TYPEOF(x))) =
+ 1;
+END_ENTITY;
+
+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;
+
+ENTITY conic
+ SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola))
+ SUBTYPE OF (curve);
+ position : axis2_placement;
+END_ENTITY;
+
+ENTITY conical_stepped_hole_transition
+ SUBTYPE OF (geometric_representation_item);
+ transition_number : positive_integer;
+ cone_apex_angle : plane_angle_measure;
+ cone_base_radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY conical_surface
+ SUBTYPE OF (elementary_surface);
+ radius : length_measure;
+ semi_angle : plane_angle_measure;
+WHERE
+ WR1: radius >= 0.0;
+END_ENTITY;
+
+ENTITY connected_edge_set
+ SUBTYPE OF (topological_representation_item);
+ ces_edges : SET [1 : ?] OF edge;
+END_ENTITY;
+
+ENTITY connected_edge_with_length_set_representation
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : ?] OF connected_edge_with_length_set_items;
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET' IN TYPEOF(it))) =
+ 1;
+END_ENTITY;
+
+ENTITY connected_face_set
+ SUPERTYPE OF (ONEOF(closed_shell, open_shell))
+ SUBTYPE OF (topological_representation_item);
+ cfs_faces : SET [1 : ?] OF face;
+END_ENTITY;
+
+ENTITY connected_face_sub_set
+ SUBTYPE OF (connected_face_set);
+ parent_face_set : connected_face_set;
+END_ENTITY;
+
+ENTITY connected_volume_set
+ SUBTYPE OF (topological_representation_item);
+ cvs_volumes : SET [1 : ?] OF volume_with_faces;
+END_ENTITY;
+
+ENTITY connected_volume_sub_set
+ SUBTYPE OF (connected_volume_set);
+ parent_volume_set : connected_volume_set;
+END_ENTITY;
+
+ENTITY connection_zone_interface_plane_relationship
+ SUBTYPE OF (shape_aspect, shape_aspect_relationship);
+UNIQUE
+ UR1: SELF\shape_aspect_relationship.name;
+END_ENTITY;
+
+ENTITY connectivity_definition
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY connectivity_definition_item_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : connectivity_definition;
+END_ENTITY;
+
+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;
+
+ENTITY constituent_shape_aspect
+ SUBTYPE OF (shape_aspect);
+ parent : shape_aspect;
+DERIVE
+ SELF\shape_aspect.of_shape : product_definition_shape := get_root_shape_aspect(SELF);
+END_ENTITY;
+
+ENTITY constrained_kinematic_motion_representation
+ SUBTYPE OF (representation_relationship_with_transformation);
+ SELF\representation_relationship.rep_1 : representative_shape_representation;
+ SELF\representation_relationship.rep_2 : representative_shape_representation;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
+ WR2: ((dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) =
+ 3) AND
+ (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) =
+ 3));
+ WR3: (SELF\representation_relationship.rep_1 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1))) AND
+ (SELF\representation_relationship.rep_2 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2)));
+ WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_PAIR' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
+END_ENTITY;
+
+ENTITY constructive_geometry_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
+ TYPEOF(SELF\representation.context_of_items)) AND
+ ({2 <= SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension <= 3});
+ WR2: SIZEOF(QUERY(cgr_i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] *
+ TYPEOF(cgr_i)) <>
+ 1)) =
+ 0;
+ WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) > 0;
+END_ENTITY;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
+ TYPEOF(SELF.rep_1.context_of_items));
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN
+ TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY contact_feature
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY contact_feature_definition
+ SUBTYPE OF (shape_feature_definition);
+END_ENTITY;
+
+ENTITY contact_feature_definition_fit_relationship
+ SUBTYPE OF (shape_feature_definition_fit_relationship);
+ SELF\characterized_object_relationship.relating_object : contact_feature_definition;
+ SELF\characterized_object_relationship.related_object : contact_feature_definition;
+END_ENTITY;
+
+ENTITY contact_feature_fit_relationship
+ SUBTYPE OF (shape_feature_fit_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : contact_feature;
+ SELF\shape_aspect_relationship.related_shape_aspect : contact_feature;
+END_ENTITY;
+
+ENTITY contact_ratio_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) = 1) AND
+ (SIZEOF(QUERY(i
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) =
+ 1) AND
+ (i.name = 'ratio value'))) =
+ 1);
+ WR2: (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | pdr\property_definition_representation.name = 'contact ratio reference')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | (pdr\property_definition_representation.name = 'contact ratio reference') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(pdr\property_definition_representation.definition\property_definition.definition)))) =
+ 1);
+ WR3: (SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | SIZEOF(QUERY(gpa
+ <* USEDIN(pdr.definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY contacting_feature
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: SELF\shape_aspect.product_definitional = false;
+END_ENTITY;
+
+ENTITY containing_message
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : 1] OF structured_message;
+ SELF\group_assignment.assigned_group : message_contents_group;
+DERIVE
+ message_contents_group : message_contents_group := SELF\group_assignment.assigned_group;
+END_ENTITY;
+
+ENTITY context_dependent_invisibility
+ SUBTYPE OF (invisibility);
+ presentation_context : invisibility_context;
+END_ENTITY;
+
+ENTITY context_dependent_kinematic_link_representation;
+ representation_relation : kinematic_link_representation_association;
+ represented_product_relation : product_definition_relationship_kinematics;
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc))) =
+ 1) OR
+ (SIZEOF(QUERY(sc
+ <* style_context
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN
+ TYPEOF(sc)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN
+ TYPEOF(sc)))) =
+ SIZEOF(style_context));
+END_ENTITY;
+
+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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN
+ TYPEOF(SELF.represented_product_relation.definition);
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+ WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY context_dependent_unit
+ SUBTYPE OF (named_unit);
+ name : label;
+END_ENTITY;
+
+ENTITY continuous_shape_aspect
+ SUPERTYPE OF (ONEOF(between_shape_aspect, all_around_shape_aspect))
+ SUBTYPE OF (composite_shape_aspect);
+END_ENTITY;
+
+ENTITY contract;
+ name : label;
+ purpose : text;
+ kind : contract_type;
+END_ENTITY;
+
+ENTITY contract_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_contract : contract;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY contract_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ relating_contract : contract;
+ related_contract : contract;
+END_ENTITY;
+
+ENTITY contract_type;
+ description : label;
+END_ENTITY;
+
+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;
+
+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;
+
+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 < 24};
+ WR2: {0 <= actual_minute_offset <= 59};
+ WR3: NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (sense = exact));
+END_ENTITY;
+
+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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPOSITIONED_TESSELLATED_ITEM'] * TYPEOF(SELF)) = 0;
+END_ENTITY;
+
+ENTITY cos_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
+ WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
+ WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
+END_ENTITY;
+
+ENTITY counterbore_hole_occurrence
+ SUBTYPE OF (shape_aspect_occurrence);
+ SELF\shape_aspect_occurrence.definition : counterbore_hole_definition;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
+ WR2: SELF\shape_aspect.product_definitional = true;
+END_ENTITY;
+
+ENTITY counterbore_hole_occurrence_in_assembly
+ SUBTYPE OF (counterbore_hole_occurrence);
+ modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
+END_ENTITY;
+
+ENTITY counterdrill_hole_definition
+ SUBTYPE OF (explicit_composite_hole);
+ counterbore : explicit_round_hole;
+ counterdrill_angle : positive_plane_angle_measure_with_unit;
+ counterdrill_angle_tolerance : 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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(counterdrill_angle_tolerance\tolerance_value.lower_bound);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(counterdrill_angle_tolerance\tolerance_value.upper_bound);
+ WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
+ WR5: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
+ WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
+ WR7: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
+END_ENTITY;
+
+ENTITY counterdrill_hole_occurrence
+ SUBTYPE OF (shape_aspect_occurrence);
+ SELF\shape_aspect_occurrence.definition : counterdrill_hole_definition;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
+ WR2: SELF\shape_aspect.product_definitional = true;
+END_ENTITY;
+
+ENTITY counterdrill_hole_occurrence_in_assembly
+ SUBTYPE OF (counterdrill_hole_occurrence);
+ modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
+END_ENTITY;
+
+ENTITY countersink_hole_definition
+ SUBTYPE OF (explicit_composite_hole);
+ countersink_angle : positive_plane_angle_measure_with_unit;
+ countersink_angle_tolerance : 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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(countersink_angle_tolerance\tolerance_value.lower_bound);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(countersink_angle_tolerance\tolerance_value.upper_bound);
+ WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(countersink_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(countersink_diameter_tolerance\tolerance_value.lower_bound));
+ WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(countersink_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(countersink_diameter_tolerance\tolerance_value.upper_bound));
+ WR6: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
+ WR7: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
+ WR8: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
+ WR9: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
+ TYPEOF(drilled_hole_diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
+END_ENTITY;
+
+ENTITY countersink_hole_occurrence
+ SUBTYPE OF (shape_aspect_occurrence);
+ SELF\shape_aspect_occurrence.definition : countersink_hole_definition;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
+ WR2: SELF\shape_aspect.product_definitional = true;
+END_ENTITY;
+
+ENTITY countersink_hole_occurrence_in_assembly
+ SUBTYPE OF (countersink_hole_occurrence);
+ modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
+END_ENTITY;
+
+ENTITY criterion_report_item_with_number_of_instances
+ SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
+ statistical_value : count_measure;
+ value_type : summary_report_style_type;
+END_ENTITY;
+
+ENTITY criterion_report_item_with_value
+ SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
+ report_value : measure_with_unit;
+ value_type : label;
+END_ENTITY;
+
+ENTITY cross_sectional_alternative_shape_element
+ SUBTYPE OF (cross_sectional_part_shape_element);
+INVERSE
+ items : SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
+END_ENTITY;
+
+ENTITY cross_sectional_group_shape_element
+ SUPERTYPE OF (ONEOF(cross_sectional_group_shape_element_with_tubular_cover,
+ cross_sectional_group_shape_element_with_lacing, twisted_cross_sectional_group_shape_element))
+ SUBTYPE OF (cross_sectional_part_shape_element);
+INVERSE
+ items : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
+END_ENTITY;
+
+ENTITY cross_sectional_group_shape_element_with_lacing
+ SUBTYPE OF (cross_sectional_group_shape_element);
+END_ENTITY;
+
+ENTITY cross_sectional_group_shape_element_with_tubular_cover
+ SUBTYPE OF (cross_sectional_group_shape_element);
+END_ENTITY;
+
+ENTITY cross_sectional_occurrence_shape_element
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY cross_sectional_part_shape_element
+ SUPERTYPE OF (ONEOF(cross_sectional_alternative_shape_element, cross_sectional_group_shape_element))
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY csg_2d_shape_representation
+ SUBTYPE OF (shape_representation);
+ SELF\representation.items : SET [1 : ?] OF csg_2d_shape_select;
+WHERE
+ WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID'] * TYPEOF(it)) = 1) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION' IN
+ TYPEOF(it\mapped_item.mapping_source.mapped_representation))))) >=
+ 1;
+ WR3: SIZEOF(QUERY(it
+ <* SELF.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) AND
+ (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION') IN
+ TYPEOF(it\mapped_item.mapping_source.mapped_representation)))))) =
+ 0;
+END_ENTITY;
+
+ENTITY csg_primitive_solid_2d
+ SUBTYPE OF (csg_solid_2d);
+ SELF\csg_solid.tree_root_expression : bounded_primitive_2d;
+END_ENTITY;
+
+ENTITY csg_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID'] *
+ TYPEOF(it)) <>
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR4: SIZEOF(QUERY(sr
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA' IN TYPEOF(it)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID'] *
+ TYPEOF(sr\solid_replica.parent_solid)) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) >
+ 0;
+END_ENTITY;
+
+ENTITY csg_solid
+ SUBTYPE OF (solid_model);
+ tree_root_expression : csg_select;
+END_ENTITY;
+
+ENTITY csg_solid_2d
+ SUBTYPE OF (csg_solid);
+ SELF\csg_solid.tree_root_expression : csg_select_2d;
+WHERE
+ WR1: valid_csg_2d_primitives(SELF);
+END_ENTITY;
+
+ENTITY cubic_bezier_tessellated_edge
+ SUBTYPE OF (tessellated_edge);
+ SELF\tessellated_edge.line_strip : LIST [4 : ?] OF INTEGER;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY currency
+ ABSTRACT SUPERTYPE OF ((ONEOF(externally_defined_currency, iso4217_currency)))
+ SUBTYPE OF (context_dependent_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;
+
+ENTITY currency_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+ SELF\measure_with_unit.unit_component : currency;
+END_ENTITY;
+
+ENTITY current_change_element_assignment
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : current_element_assignment_select;
+ items : SET [1 : ?] OF change_management_object;
+END_ENTITY;
+
+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;
+
+ENTITY curve_11
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY curve_based_path
+ SUBTYPE OF (path_node);
+ path_curve : curve;
+END_ENTITY;
+
+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;
+
+ENTITY curve_based_path_with_orientation_and_parameters
+ SUBTYPE OF (curve_based_path_with_orientation);
+ parameters : path_parameter_representation;
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) =
+ 0);
+ WR2: (NOT (implicit_outer)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface));
+ WR3: SIZEOF(QUERY(temp
+ <* boundaries
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) <=
+ 1;
+ WR4: SIZEOF(QUERY(temp <* boundaries | (temp\composite_curve_on_surface.basis_surface[1] <> SELF.basis_surface))) = 0;
+END_ENTITY;
+
+ENTITY curve_dimension
+ SUBTYPE OF (dimension_curve_directed_callout);
+END_ENTITY;
+
+ENTITY curve_distance_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF curve;
+ SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
+ near_points : SET [0 : 4] OF near_point_relationship;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
+ WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
+ WR3: SIZEOF(QUERY(q
+ <* near_points
+ | NOT (q\representation_item_relationship.relating_representation_item IN
+ SELF\explicit_constraint.reference_elements))) =
+ 0;
+END_ENTITY;
+
+ENTITY curve_length_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF bounded_curve;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+END_ENTITY;
+
+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;
+
+ENTITY curve_segment_set
+ SUBTYPE OF (geometric_representation_item);
+ segments : SET [1 : ?] OF composite_curve_segment;
+END_ENTITY;
+
+ENTITY curve_smoothness_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF curve_segment_set;
+ smoothness : transition_code;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+END_ENTITY;
+
+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;
+
+ENTITY curve_style_font
+ SUBTYPE OF (founded_item);
+ name : label;
+ pattern_list : LIST [1 : ?] OF curve_style_font_pattern;
+END_ENTITY;
+
+ENTITY curve_style_font_and_scaling
+ SUBTYPE OF (founded_item);
+ name : label;
+ curve_font : curve_style_font_select;
+ curve_font_scaling : REAL;
+END_ENTITY;
+
+ENTITY curve_style_font_pattern
+ SUBTYPE OF (founded_item);
+ visible_segment_length : positive_length_measure;
+ invisible_segment_length : positive_length_measure;
+END_ENTITY;
+
+ENTITY curve_style_parameters_representation
+ SUBTYPE OF (representation);
+END_ENTITY;
+
+ENTITY curve_style_parameters_with_ends
+ SUBTYPE OF (curve_style_parameters_representation);
+END_ENTITY;
+
+ENTITY curve_style_rendering;
+ rendering_method : shading_curve_method;
+ rendering_properties : surface_rendering_properties;
+END_ENTITY;
+
+ENTITY curve_swept_solid_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_AREA_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_AREA_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR4: SIZEOF(QUERY(scsas
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN
+ TYPEOF(it))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN
+ TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
+ TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) =
+ 0;
+END_ENTITY;
+
+ENTITY curve_with_excessive_segments
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_COMPOSITE_CURVE_SELECT']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY curve_with_small_curvature_radius
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+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;
+
+ENTITY cylindrical_11
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF));
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY cylindrical_surface
+ SUBTYPE OF (elementary_surface);
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY cylindrical_volume
+ SUBTYPE OF (volume);
+ position : axis2_placement_3d;
+ radius : positive_length_measure;
+ height : positive_length_measure;
+END_ENTITY;
+
+ENTITY cylindricity_tolerance
+ SUBTYPE OF (geometric_tolerance);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY data_environment;
+ name : label;
+ description : text;
+ elements : SET [1 : ?] OF characterized_property_representation;
+END_ENTITY;
+
+ENTITY data_equivalence_assessment_specification;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY data_equivalence_criteria_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION' IN TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_criterion
+ SUBTYPE OF (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_definition;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY data_equivalence_definition_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ relating_data_equivalence_definition : data_equivalence_definition;
+ related_data_equivalence_definition : data_equivalence_definition;
+END_ENTITY;
+
+ENTITY data_equivalence_definition_representation_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ definition : data_equivalence_definition;
+ used_representation : used_equivalence_representation_select;
+END_ENTITY;
+
+ENTITY data_equivalence_inspected_element_pair
+ SUBTYPE OF (representation_item);
+ comparing_elements : SET [1 : ?] OF inspected_equivalence_element_select;
+ compared_elements : SET [1 : ?] OF inspected_equivalence_element_select;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_criterion_report
+ SUBTYPE OF (data_equivalence_inspection_report);
+ statistical_values : SET [1 : ?] OF data_equivalence_inspection_criterion_report_item;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_criterion_report_item
+ ABSTRACT SUPERTYPE OF ((ONEOF(criterion_report_item_with_number_of_instances,
+ criterion_report_item_with_value)) ANDOR
+ (ONEOF(a3m_equivalence_criterion_report_item_with_measured_value,
+ criterion_report_item_with_number_of_instances, criterion_report_item_with_value)))
+ SUBTYPE OF (representation_item);
+INVERSE
+ criterion_report : data_equivalence_inspection_criterion_report FOR statistical_values;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_instance_report
+ SUBTYPE OF (data_equivalence_inspection_report);
+ inspected_instances : LIST [1 : ?] OF data_equivalence_inspection_instance_report_item;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_instance_report_item
+ SUBTYPE OF (representation_item);
+ inspected_element : data_equivalence_inspected_element_pair;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_report
+ ABSTRACT SUPERTYPE OF (ONEOF(data_equivalence_inspection_criterion_report,
+ data_equivalence_inspection_instance_report))
+ SUBTYPE OF (representation_item);
+ inspection_result : data_equivalence_inspection_result;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_requirement
+ SUBTYPE OF (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_result
+ SUBTYPE OF (representation_item);
+ criterion_inspected : data_equivalence_criterion;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_result_representation
+ SUBTYPE OF (representation);
+ criteria_inspected : data_equivalence_criteria_representation;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT' IN
+ TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY data_equivalence_inspection_result_with_judgement
+ SUBTYPE OF (data_equivalence_inspection_result);
+ judgement : BOOLEAN;
+END_ENTITY;
+
+ENTITY data_equivalence_report_request;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ criterion_of_report_request : data_equivalence_criterion;
+END_ENTITY;
+
+ENTITY data_quality_assessment_measurement_association;
+ assessment_specification : data_quality_criterion_assessment_association;
+ measurement_requirement : data_quality_criterion_measurement_association;
+WHERE
+ WR1: SELF.measurement_requirement\representation_item_relationship.relating_representation_item :=:
+ SELF.assessment_specification.criterion;
+END_ENTITY;
+
+ENTITY data_quality_assessment_specification;
+ description : text;
+END_ENTITY;
+
+ENTITY data_quality_criteria_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION' IN TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_criterion
+ SUBTYPE OF (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_criterion_assessment_association;
+ criterion : data_quality_criterion;
+ assessment_specification : data_quality_assessment_specification;
+END_ENTITY;
+
+ENTITY data_quality_criterion_measurement_association
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : data_quality_criterion;
+ SELF\representation_item_relationship.related_representation_item : data_quality_measurement_requirement;
+END_ENTITY;
+
+ENTITY data_quality_definition;
+ description : text;
+END_ENTITY;
+
+ENTITY data_quality_definition_relationship;
+ description : text;
+ relating_data_quality_definition : data_quality_definition;
+ related_data_quality_definition : data_quality_definition;
+END_ENTITY;
+
+ENTITY data_quality_definition_representation_relationship;
+ description : text;
+ definition : data_quality_definition;
+ used_representation : used_quality_representation_select;
+END_ENTITY;
+
+ENTITY data_quality_inspection_criterion_report
+ SUBTYPE OF (data_quality_inspection_report);
+ statistical_values : SET [1 : 2] OF data_quality_inspection_criterion_report_item;
+WHERE
+ WR1: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUMMARY_REPORT_REQUEST' IN TYPEOF(i1))) >
+ 0;
+ WR2: (SIZEOF(SELF.statistical_values) = 1) OR
+ (SELF.statistical_values[1].value_type <> SELF.statistical_values[2].value_type);
+END_ENTITY;
+
+ENTITY data_quality_inspection_criterion_report_item
+ SUBTYPE OF (representation_item);
+ statistical_value : INTEGER;
+ value_type : statistical_value_type;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_instance_report
+ SUBTYPE OF (data_quality_inspection_report);
+ inspected_instances : LIST [1 : ?] OF data_quality_inspection_instance_report_item;
+WHERE
+ WR1: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DETAILED_REPORT_REQUEST' IN TYPEOF(i1))) >
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_instance_report_item
+ SUBTYPE OF (representation_item);
+ inspected_elements : SET [1 : ?] OF inspected_element_select;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_report
+ SUPERTYPE OF (ONEOF(data_quality_inspection_criterion_report, data_quality_inspection_instance_report))
+ SUBTYPE OF (representation_item);
+ inspection_result : data_quality_inspection_result;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_result
+ SUBTYPE OF (representation_item);
+ criterion_inspected : data_quality_criterion;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_result_representation
+ SUBTYPE OF (representation);
+ criteria_inspected : data_quality_criteria_representation;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q))) >
+ 0;
+ WR2: SIZEOF(inspected_product_definition(SELF)) > 0;
+END_ENTITY;
+
+ENTITY data_quality_inspection_result_with_judgement
+ SUBTYPE OF (data_quality_inspection_result);
+ judgement : BOOLEAN;
+END_ENTITY;
+
+ENTITY data_quality_measurement_requirement
+ SUBTYPE OF (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
+ TYPEOF(q))) =
+ 0;
+END_ENTITY;
+
+ENTITY data_quality_report_measurement_association
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : data_quality_measurement_requirement;
+ SELF\representation_item_relationship.related_representation_item : data_quality_inspection_report;
+END_ENTITY;
+
+ENTITY data_quality_report_request
+ ABSTRACT SUPERTYPE OF (ONEOF(summary_report_request, detailed_report_request));
+ description : text;
+ criterion_of_report_request : data_quality_criterion;
+END_ENTITY;
+
+ENTITY date
+ SUPERTYPE OF (ONEOF(calendar_date, ordinal_date, week_of_year_and_day_date, year_month));
+ year_component : year_number;
+END_ENTITY;
+
+ENTITY date_and_time;
+ date_component : date;
+ time_component : local_time;
+END_ENTITY;
+
+ENTITY date_and_time_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_date_and_time : date_and_time;
+ role : date_time_role;
+END_ENTITY;
+
+ENTITY date_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_date : date;
+ role : date_role;
+END_ENTITY;
+
+ENTITY date_representation_item
+ SUBTYPE OF (representation_item, date);
+END_ENTITY;
+
+ENTITY date_role;
+ name : label;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY date_time_representation_item
+ SUBTYPE OF (representation_item, date_and_time);
+END_ENTITY;
+
+ENTITY date_time_role;
+ name : label;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR
+ ((SIZEOF(QUERY(x
+ <* SELF\datum.established_by_relationships
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET'] *
+ TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)) =
+ 1)) >=
+ 1));
+ WR2: SIZEOF(QUERY(x
+ <* SELF\datum.established_by_relationships
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
+ TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) =
+ 1;
+ WR2: SELF\shape_aspect.product_definitional = true;
+END_ENTITY;
+
+ENTITY datum_feature_callout
+ SUBTYPE OF (draughting_callout);
+END_ENTITY;
+
+ENTITY datum_reference;
+ precedence : INTEGER;
+ referenced_datum : datum;
+WHERE
+ WR1: precedence > 0;
+END_ENTITY;
+
+ENTITY datum_reference_compartment
+ SUBTYPE OF (general_datum_reference);
+INVERSE
+ owner : datum_system FOR constituents;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
+ TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) =
+ 1;
+ WR2: SELF\shape_aspect.product_definitional = true;
+END_ENTITY;
+
+ENTITY datum_target_callout
+ SUBTYPE OF (draughting_callout);
+END_ENTITY;
+
+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;
+
+ENTITY default_tolerance_table
+ SUBTYPE OF (representation);
+WHERE
+ WR1: SIZEOF(QUERY(i
+ <* SELF.items
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN
+ TYPEOF(i)))) =
+ 0;
+ WR2: (SIZEOF(QUERY(rr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
+ | rr.name < 'general tolerance definition')) =
+ 0) AND
+ (SIZEOF(QUERY(rr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
+ | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance'))) =
+ 0) AND
+ (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) = 0);
+END_ENTITY;
+
+ENTITY default_tolerance_table_cell
+ SUBTYPE OF (compound_representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(x
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY defined_character_glyph
+ SUBTYPE OF (geometric_representation_item);
+ definition : defined_glyph_select;
+ placement : axis2_placement;
+END_ENTITY;
+
+ENTITY defined_constraint
+ ABSTRACT SUPERTYPE OF (equal_parameter_constraint)
+ SUBTYPE OF (explicit_constraint);
+END_ENTITY;
+
+ENTITY defined_function
+ ABSTRACT SUPERTYPE OF ((ONEOF(numeric_defined_function, string_defined_function, boolean_defined_function)) ANDOR
+ sql_mappable_defined_function);
+END_ENTITY;
+
+ENTITY defined_symbol
+ SUBTYPE OF (geometric_representation_item);
+ definition : defined_symbol_select;
+ target : symbol_target;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY definitional_product_definition_usage
+ SUBTYPE OF (product_definition_usage);
+UNIQUE
+ UR1: relating_product_definition, related_product_definition;
+END_ENTITY;
+
+ENTITY definitional_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN
+ TYPEOF(SELF\representation.context_of_items);
+END_ENTITY;
+
+ENTITY definitional_representation_relationship
+ SUBTYPE OF (representation_relationship);
+WHERE
+ WR1: acyclic_representation_relationship(SELF, [SELF\representation_relationship.rep_2],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION');
+END_ENTITY;
+
+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;
+
+ENTITY degenerate_pcurve
+ SUBTYPE OF (point);
+ basis_surface : surface;
+ reference_to_curve : definitional_representation;
+WHERE
+ WR1: SIZEOF(reference_to_curve\representation.items) = 1;
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
+ WR3: reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
+END_ENTITY;
+
+ENTITY degenerate_toroidal_surface
+ SUBTYPE OF (toroidal_surface);
+ select_outer : BOOLEAN;
+WHERE
+ WR1: major_radius < minor_radius;
+END_ENTITY;
+
+ENTITY delete_element
+ SUBTYPE OF (change_element);
+END_ENTITY;
+
+ENTITY dependent_variable_definition
+ SUBTYPE OF (unary_generic_expression);
+ name : label;
+ description : text;
+END_ENTITY;
+
+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;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY derived_unit_element;
+ unit : named_unit;
+ exponent : REAL;
+END_ENTITY;
+
+ENTITY description_attribute;
+ attribute_value : text;
+ described_item : description_attribute_select;
+END_ENTITY;
+
+ENTITY description_text;
+ description : text;
+END_ENTITY;
+
+ENTITY description_text_assignment
+ ABSTRACT SUPERTYPE;
+ description : description_text;
+END_ENTITY;
+
+ENTITY description_text_assignment_relationship;
+ id : OPTIONAL identifier;
+ description : OPTIONAL text;
+ relating : description_text_assignment;
+ related : description_text_assignment;
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_description_text_assignment_relationship(SELF, [related],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_TEXT_ASSIGNMENT_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY descriptive_representation_item
+ SUPERTYPE OF (ONEOF(tagged_text_item, uniform_resource_identifier))
+ SUBTYPE OF (representation_item);
+ description : text;
+END_ENTITY;
+
+ENTITY design_context
+ SUBTYPE OF (product_definition_context);
+WHERE
+ WR1: SELF.life_cycle_stage = 'design';
+END_ENTITY;
+
+ENTITY design_make_from_relationship
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY detailed_equivalence_report_request
+ SUBTYPE OF (data_equivalence_report_request);
+ report_request_type : detailed_report_style_type;
+ report_sequence : preferred_report_ordering;
+END_ENTITY;
+
+ENTITY detailed_equivalence_report_request_with_number_of_instances
+ SUBTYPE OF (detailed_equivalence_report_request);
+ number_of_instances : INTEGER;
+DERIVE
+ SELF\detailed_equivalence_report_request.report_request_type : detailed_report_style_type := inspected_element;
+END_ENTITY;
+
+ENTITY detailed_report_request
+ SUBTYPE OF (data_quality_report_request);
+ detailed_report_request_type : detailed_report_type;
+ report_sequence : preferred_ordering;
+END_ENTITY;
+
+ENTITY detailed_report_request_with_number_of_data
+ SUBTYPE OF (detailed_report_request);
+ number_of_data : INTEGER;
+DERIVE
+ SELF\detailed_report_request.detailed_report_request_type : detailed_report_type := measured_element;
+END_ENTITY;
+
+ENTITY diameter_dimension
+ SUBTYPE OF (dimension_curve_directed_callout);
+END_ENTITY;
+
+ENTITY dielectric_constant_measure_with_unit
+ SUBTYPE OF (ratio_measure_with_unit);
+END_ENTITY;
+
+ENTITY different_angle_of_assembly_constraint
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_plane_angle_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY different_assembly_centroid
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_cartesian_point];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY different_assembly_centroid_using_notional_solid
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_cartesian_point];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY different_assembly_constraint_type
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
+END_ENTITY;
+
+ENTITY different_assembly_volume
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_volume_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_volume_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY different_bounding_box
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [3 : 3] OF a3ms_element_type_name := [etns_manifold_solid_brep,
+ etns_shell_based_surface_model,
+ etns_shell_based_wireframe_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_two_cartesian_points];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
+END_ENTITY;
+
+ENTITY different_centroid
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [3 : 3] OF a3ms_element_type_name := [etns_manifold_solid_brep,
+ etns_shell_based_surface_model,
+ etns_shell_based_wireframe_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_cartesian_point];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
+END_ENTITY;
+
+ENTITY different_component_identification_via_multi_level_reference
+ SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_multi_level_reference_designator];
+END_ENTITY;
+
+ENTITY different_component_shape
+ SUBTYPE OF (a3m_equivalence_criterion_of_component_property_difference);
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_shape_representation];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_shape_representation];
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_a3ms_inspected_equivalence_element_select];
+INVERSE
+ shape_criteria : SET [1:?] OF a3ma_assembly_and_shape_criteria_relationship FOR relating_representation_item;
+END_ENTITY;
+
+ENTITY different_component_type
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_assembly_component_usage];
+END_ENTITY;
+
+ENTITY different_curve_length
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_edge_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_length_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
+END_ENTITY;
+
+ENTITY different_length_of_assembly_constraint
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY different_number_of_closed_shell
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_manifold_solid_brep];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_count_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY different_number_of_components
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_count_measure];
+END_ENTITY;
+
+ENTITY different_number_of_geometric_elements
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [2 : 2] OF a3ms_element_type_name := [etns_manifold_solid_brep,
+ etns_shell_based_surface_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_three_count_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY different_number_of_geometric_elements_wireframe_model
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_shell_based_wireframe_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_two_count_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY different_number_of_topological_elements
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [2 : 2] OF a3ms_element_type_name := [etns_manifold_solid_brep,
+ etns_shell_based_surface_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_five_count_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY different_number_of_topological_elements_wireframe_model
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_shell_based_wireframe_model];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_four_count_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY different_placement_of_component
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_length_measure_and_context_dependent_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_context_dependent_shape_representation];
+INVERSE
+ assessment_threshold_2 : a3ma_equivalence_criterion_assessment_threshold_relationship FOR relating_representation_item;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ mdna_length_measure);
+ WR2: (a3ma_get_value_limit_type(SELF.assessment_threshold_2\representation_item_relationship.related_representation_item) =
+ mdna_context_dependent_measure) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_UNIT' IN
+ TYPEOF(SELF.assessment_threshold_2\representation_item_relationship.related_representation_item\measure_with_unit.unit_component));
+END_ENTITY;
+
+ENTITY different_surface_area
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_area_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_area_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_area_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
+END_ENTITY;
+
+ENTITY different_surface_normal
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_plane_angle_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
+ ddns_point_on_surface];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_plane_angle_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
+ 'discretization_distance_tolerance');
+END_ENTITY;
+
+ENTITY different_volume
+ SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_manifold_solid_brep];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_volume_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_volume_measure];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_volume_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
+END_ENTITY;
+
+ENTITY dimension_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
+ (SIZEOF(QUERY(dce_1
+ <* SELF\draughting_callout.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(dce_1))))) =
+ 0);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
+ (SIZEOF(QUERY(dce_1
+ <* SELF\draughting_callout.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(dce_1))))) =
+ 0);
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
+ (SIZEOF(QUERY(dce_1
+ <* SELF\draughting_callout.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(dce_1))))) =
+ 0);
+END_ENTITY;
+
+ENTITY dimension_callout_component_relationship
+ SUBTYPE OF (draughting_callout_relationship);
+WHERE
+ WR1: SELF.name IN ['prefix','suffix'];
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' IN
+ TYPEOF(SELF.relating_draughting_callout);
+ WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
+ TYPEOF(con)))
+ | NOT (ato.name = 'suffix text'))) =
+ 0));
+END_ENTITY;
+
+ENTITY dimension_callout_relationship
+ SUBTYPE OF (draughting_callout_relationship);
+WHERE
+ WR1: SELF.name IN ['primary','secondary'];
+ WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) >=
+ 1;
+ WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT']) =
+ 0;
+ WR4: SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents =
+ SELF.related_draughting_callout.contents;
+END_ENTITY;
+
+ENTITY dimension_curve
+ SUBTYPE OF (annotation_curve_occurrence);
+WHERE
+ WR1: (SIZEOF(QUERY(dct
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
+ TYPEOF(dct))))) <=
+ 2);
+ WR2: SIZEOF(QUERY(dcdc
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN
+ TYPEOF(dcdc)))) >=
+ 1;
+ WR3: (SIZEOF(QUERY(dct1
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
+ TYPEOF(dct1)) AND
+ (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin)))) <=
+ 1) AND
+ (SIZEOF(QUERY(dct2
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
+ TYPEOF(dct2)) AND
+ (dct2\dimension_curve_terminator.role = dimension_extent_usage.target)))) <=
+ 1);
+END_ENTITY;
+
+ENTITY dimension_curve_directed_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(QUERY(d_c
+ <* SELF\draughting_callout.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c)))) <=
+ 2;
+ WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
+END_ENTITY;
+
+ENTITY dimension_curve_terminator
+ SUBTYPE OF (terminator_symbol);
+ role : dimension_extent_usage;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN
+ TYPEOF(SELF\terminator_symbol.annotated_curve);
+END_ENTITY;
+
+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;
+
+ENTITY dimension_pair
+ SUBTYPE OF (draughting_callout_relationship);
+WHERE
+ WR1: SELF.name IN ['chained','parallel'];
+ WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) =
+ 1;
+ WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) =
+ 1;
+END_ENTITY;
+
+ENTITY dimension_related_tolerance_zone_element;
+ related_dimension : dimensional_location;
+ related_element : tolerance_zone_definition;
+END_ENTITY;
+
+ENTITY dimension_text_associativity
+ SUBTYPE OF (text_literal, mapped_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' IN
+ TYPEOF(SELF\mapped_item.mapping_source.mapped_representation));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN
+ TYPEOF(SELF\mapped_item.mapping_target));
+ WR3: SIZEOF(QUERY(ato
+ <* QUERY(si
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
+ TYPEOF(si)))
+ | NOT (SIZEOF(QUERY(dc
+ <* USEDIN(ato,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN
+ TYPEOF(dc))) *
+ [SELF\mapped_item.mapping_target]) =
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY dimensional_characteristic_representation;
+ dimension : dimensional_characteristic;
+ representation : shape_dimension_representation;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY dimensional_location_with_datum_feature
+ SUBTYPE OF (datum_feature, dimensional_location);
+END_ENTITY;
+
+ENTITY dimensional_location_with_path
+ SUBTYPE OF (dimensional_location);
+ path : shape_aspect;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY dimensional_size_with_datum_feature
+ SUBTYPE OF (datum_feature, dimensional_size);
+WHERE
+ WR1: SELF\dimensional_size.applies_to :=: SELF;
+END_ENTITY;
+
+ENTITY dimensional_size_with_path
+ SUBTYPE OF (dimensional_size);
+ path : shape_aspect;
+END_ENTITY;
+
+ENTITY directed_action
+ SUBTYPE OF (executed_action);
+ directive : action_directive;
+END_ENTITY;
+
+ENTITY directed_action_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_directed_action : directed_action;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY directed_angle
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1;
+ WR3: SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(pdr.used_representation.items) = 1))) =
+ 1;
+ WR4: SELF.description IN ['punch direction','profile normal','surface normal'];
+ WR5: SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'angle') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+END_ENTITY;
+
+ENTITY directed_dimensional_location
+ SUBTYPE OF (dimensional_location);
+END_ENTITY;
+
+ENTITY directed_tolerance_zone
+ SUBTYPE OF (tolerance_zone_with_datum);
+ direction : directed_tolerance_zone_type;
+END_ENTITY;
+
+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;
+
+ENTITY direction_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) = 1);
+ WR2: (SIZEOF(QUERY(it
+ <* SELF.items
+ | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(it))))) =
+ 0);
+END_ENTITY;
+
+ENTITY disallowed_assembly_relationship_usage
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE']);
+END_ENTITY;
+
+ENTITY disconnected_face_set
+ SUBTYPE OF (erroneous_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY discontinuous_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuous_curve, g2_discontinuous_curve, g1_discontinuous_surface,
+ g2_discontinuous_surface))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY div_expression
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY document_identifier
+ SUBTYPE OF (group);
+UNIQUE
+ UR1: SELF\group.name, SELF\group.description;
+END_ENTITY;
+
+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;
+
+ENTITY document_product_association;
+ name : label;
+ description : OPTIONAL text;
+ relating_document : document;
+ related_product : product_or_formation_or_definition;
+END_ENTITY;
+
+ENTITY document_product_equivalence
+ SUBTYPE OF (document_product_association);
+WHERE
+ WR1: SELF\document_product_association.name = 'equivalence';
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'document')) =
+ 1));
+ WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'document')) =
+ 1));
+ WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'document')) =
+ 1));
+END_ENTITY;
+
+ENTITY document_reference
+ ABSTRACT SUPERTYPE;
+ assigned_document : document;
+ source : label;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY document_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_document : document;
+ related_document : document;
+END_ENTITY;
+
+ENTITY document_representation_type;
+ name : label;
+ represented_document : document;
+END_ENTITY;
+
+ENTITY document_type;
+ product_data_type : label;
+END_ENTITY;
+
+ENTITY document_usage_constraint;
+ source : document;
+ subject_element : label;
+ subject_element_value : text;
+END_ENTITY;
+
+ENTITY document_usage_constraint_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_document_usage : document_usage_constraint;
+ role : document_usage_role;
+END_ENTITY;
+
+ENTITY document_usage_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY dose_equivalent_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOSE_EQUIVALENT_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY dose_equivalent_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.sievert);
+END_ENTITY;
+
+ENTITY double_offset_shelled_solid
+ SUBTYPE OF (shelled_solid);
+ thickness2 : length_measure;
+WHERE
+ WR1: thickness2 <> 0;
+ WR2: SELF\shelled_solid.thickness <> thickness2;
+END_ENTITY;
+
+ENTITY draped_defined_transformation
+ SUBTYPE OF (transformation_with_derived_angle);
+END_ENTITY;
+
+ENTITY draped_orientation_angle
+ SUBTYPE OF (ply_orientation_angle);
+END_ENTITY;
+
+ENTITY draughting_annotation_occurrence
+ SUBTYPE OF (annotation_occurrence);
+WHERE
+ WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(QUERY(sty
+ <* SELF.styles
+ | NOT ((SIZEOF(sty.styles) = 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sty.styles[1]))))) =
+ 0);
+ WR2: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(QUERY(sty
+ <* SELF.styles
+ | NOT ((SIZEOF(sty.styles) = 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
+ TYPEOF(sty.styles[1]))))) =
+ 0);
+ WR3: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(QUERY(bound
+ <* SELF.item\annotation_fill_area.boundaries
+ | NOT (SIZEOF(QUERY(si
+ <* USEDIN(bound,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
+ TYPEOF(si)))) >
+ 0))) =
+ 0);
+ WR4: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(QUERY(sty
+ <* SELF.styles
+ | NOT ((SIZEOF(sty.styles) = 1) AND
+ (SIZEOF(TYPEOF(sty.styles[1]) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_STYLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NULL_STYLE']) =
+ 1)))) =
+ 0);
+ WR5: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item)))) OR
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SYMBOL_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION'] *
+ TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation)) =
+ 1);
+ WR6: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(QUERY(sty
+ <* SELF.styles
+ | NOT ((SIZEOF(sty.styles) = 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE' IN
+ TYPEOF(sty.styles[1]))))) =
+ 0);
+ WR7: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF))) OR
+ (SIZEOF(TYPEOF(SELF.item) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL']) =
+ 1);
+ WR8: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
+ (SIZEOF(QUERY(tl
+ <* SELF.item\composite_text.collected_text
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(tl)))) =
+ 0);
+ WR9: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(SELF.item)))) OR
+ (SELF.item\text_literal.alignment IN ['baseline left','baseline centre','baseline right']);
+ WR10: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
+ (SIZEOF(QUERY(tl
+ <* QUERY(text
+ <* SELF.item\composite_text.collected_text
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(text)))
+ | NOT (tl\text_literal.alignment IN ['baseline left','baseline centre','baseline right']))) =
+ 0);
+ WR11: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR
+ check_text_alignment(SELF.item);
+ WR12: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR
+ check_text_font(SELF.item);
+ WR13: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
+ (SIZEOF(QUERY(tl
+ <* QUERY(text
+ <* SELF.item\composite_text.collected_text
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(text)))
+ | NOT (SIZEOF(TYPEOF(tl) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL_WITH_BLANKING_BOX',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) =
+ 0))) =
+ 0);
+ WR14: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
+ TYPEOF(si)))) >
+ 0))) =
+ 0);
+ WR15: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
+ TYPEOF(si)))) >
+ 0))) =
+ 0);
+ WR16: SIZEOF(QUERY(cs
+ <* QUERY(sty
+ <* SELF.styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sty.styles[1])))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(cs.styles[1]\curve_style.curve_width)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
+ TYPEOF(sty.styles[1])))
+ | NOT ((SIZEOF(QUERY(fs
+ <* fas.styles[1]\fill_area_style.fill_styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_TILES' IN
+ TYPEOF(fs)))) <=
+ 1) AND
+ (SIZEOF(QUERY(fst
+ <* QUERY(fs
+ <* fas.styles[1]\fill_area_style.fill_styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
+ TYPEOF(sty.styles[1])))
+ | NOT (SIZEOF(QUERY(fsh
+ <* QUERY(fs
+ <* fas.styles[1]\fill_area_style.fill_styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE' IN
+ TYPEOF(sty.styles[1])))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN
+ TYPEOF(ts.styles[1])))) =
+ 0;
+ WR20: SIZEOF(QUERY(ts
+ <* QUERY(sty
+ <* SELF.styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) =
+ 0) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
+ (SIZEOF(QUERY(l_1
+ <* SELF\draughting_callout.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) =
+ 0) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
+ (SIZEOF(QUERY(l_1
+ <* SELF\draughting_callout.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) =
+ 0) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF)));
+END_ENTITY;
+
+ENTITY draughting_callout_relationship;
+ name : label;
+ description : text;
+ relating_draughting_callout : draughting_callout;
+ related_draughting_callout : draughting_callout;
+END_ENTITY;
+
+ENTITY draughting_elements
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(QUERY(l_c
+ <* QUERY(con
+ <* SELF.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(con)))
+ | NOT (SIZEOF(QUERY(ldc
+ <* USEDIN(l_c,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN
+ TYPEOF(ldc)))) <=
+ 1))) =
+ 0;
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF)) OR
+ (SIZEOF(QUERY(con
+ <* SELF.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN TYPEOF(con)))) <=
+ 2);
+ WR3: SIZEOF(QUERY(rc
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
+ TYPEOF(rc)) AND
+ (rc.name = 'primary'))) <=
+ 1;
+ WR4: SIZEOF(QUERY(rc
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
+ TYPEOF(rc)) AND
+ (rc.name = 'secondary'))) <=
+ 1;
+ WR5: SIZEOF(QUERY(sec
+ <* QUERY(rc
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
+ TYPEOF(rc)) AND
+ (rc.name = 'secondary'))
+ | NOT (SIZEOF(QUERY(prim
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
+ TYPEOF(prim)) AND
+ (prim.name = 'primary'))) =
+ 1))) =
+ 0;
+END_ENTITY;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL'] *
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(smi
+ <* QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
+ TYPEOF(si\styled_item.item)))
+ | (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(psa))))) =
+ 1)))) =
+ 1))))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY draughting_model_item_association_with_placeholder
+ SUBTYPE OF (draughting_model_item_association);
+ SELF\draughting_model_item_association.definition : draughting_model_item_definition;
+ 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;
+
+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;
+
+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;
+
+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;
+
+ENTITY draughting_specification_reference
+ SUBTYPE OF (document_reference);
+ specified_items : SET [1 : ?] OF specified_item;
+WHERE
+ WR1: (SELF.assigned_document.kind.product_data_type = 'draughting specification');
+END_ENTITY;
+
+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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT'] *
+ TYPEOF(item)) =
+ 1)) >=
+ 1;
+ WR2: SIZEOF(QUERY(srm
+ <* QUERY(rm
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_REPRESENTATION_MAP' IN
+ TYPEOF(rm)))
+ | NOT (SIZEOF(QUERY(a_s
+ <* QUERY(mi
+ <* srm.map_usage
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN
+ TYPEOF(mi)))
+ | NOT (SIZEOF(QUERY(aso
+ <* USEDIN(a_s,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
+ TYPEOF(aso)))) =
+ 0))) =
+ 0))) >
+ 0;
+ WR3: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
+END_ENTITY;
+
+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) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) =
+ 1))) >=
+ 1;
+ WR2: SIZEOF(QUERY(item
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
+ TYPEOF(item))) =
+ 0;
+ WR3: SIZEOF(QUERY(rm
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_REPRESENTATION_MAP' IN
+ TYPEOF(rm)))) =
+ 0;
+ WR4: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
+END_ENTITY;
+
+ENTITY draughting_text_literal_with_delineation
+ SUBTYPE OF (text_literal_with_delineation);
+WHERE
+ WR1: SELF.delineation IN ['underline','overline'];
+END_ENTITY;
+
+ENTITY draughting_title;
+ items : SET [1 : ?] OF draughting_titled_item;
+ language : label;
+ contents : text;
+END_ENTITY;
+
+ENTITY drawing_definition;
+ drawing_number : identifier;
+ drawing_type : OPTIONAL label;
+END_ENTITY;
+
+ENTITY drawing_revision
+ SUBTYPE OF (presentation_set);
+ revision_identifier : identifier;
+ drawing_identifier : drawing_definition;
+ intended_scale : OPTIONAL text;
+UNIQUE
+ UR1: revision_identifier, drawing_identifier;
+END_ENTITY;
+
+ENTITY drawing_revision_sequence;
+ predecessor : drawing_revision;
+ successor : drawing_revision;
+WHERE
+ WR1: predecessor :<>: successor;
+END_ENTITY;
+
+ENTITY drawing_sheet_layout
+ SUBTYPE OF (draughting_symbol_representation);
+END_ENTITY;
+
+ENTITY drawing_sheet_revision
+ SUBTYPE OF (presentation_area);
+ revision_identifier : identifier;
+WHERE
+ WR1: SIZEOF(QUERY(item
+ <* SELF\representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
+ (TYPEOF(item\mapped_item.mapping_source.mapped_representation))))) =
+ 0;
+END_ENTITY;
+
+ENTITY drawing_sheet_revision_sequence
+ SUBTYPE OF (representation_relationship);
+WHERE
+ WR1: SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
+ TYPEOF(SELF\representation_relationship.rep_1);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
+ TYPEOF(SELF\representation_relationship.rep_2);
+END_ENTITY;
+
+ENTITY drawing_sheet_revision_usage
+ SUBTYPE OF (area_in_set);
+ sheet_number : identifier;
+UNIQUE
+ UR1: sheet_number, SELF\area_in_set.in_set;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\area_in_set.area)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_REVISION' IN TYPEOF(SELF\area_in_set.in_set));
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY edge
+ SUPERTYPE OF (ONEOF(edge_curve, edge_with_length, oriented_edge, subedge))
+ SUBTYPE OF (topological_representation_item);
+ edge_start : vertex;
+ edge_end : vertex;
+END_ENTITY;
+
+ENTITY edge_based_wireframe_model
+ SUBTYPE OF (geometric_representation_item);
+ ebwm_boundary : SET [1 : ?] OF connected_edge_set;
+END_ENTITY;
+
+ENTITY edge_based_wireframe_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1))) >=
+ 1;
+ WR3: SIZEOF(QUERY(ebwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(edges)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(ebwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(edges.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(edges.edge_end))))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(ebwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY edge_blended_solid
+ ABSTRACT SUPERTYPE OF (track_blended_solid ANDOR
+ (ONEOF(solid_with_constant_radius_edge_blend, solid_with_chamfered_edges)))
+ SUBTYPE OF (modified_solid);
+ blended_edges : LIST [1 : ?] OF UNIQUE edge_curve;
+END_ENTITY;
+
+ENTITY edge_curve
+ SUBTYPE OF (edge, geometric_representation_item);
+ edge_geometry : curve;
+ same_sense : BOOLEAN;
+END_ENTITY;
+
+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;
+
+ENTITY edge_round
+ SUBTYPE OF (transition_feature);
+WHERE
+ WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second offset'))) <=
+ 1))) =
+ 0))) =
+ 0);
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'edge round face'))) <=
+ 1))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'first face shape'))) <=
+ 1))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'second face shape'))) <=
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY edge_with_excessive_segments
+ SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY edge_with_length
+ SUBTYPE OF (edge);
+ edge_length : positive_length_measure;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY effectivity_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_effectivity : effectivity;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY effectivity_context_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_effectivity_assignment : effectivity_assignment;
+ role : effectivity_context_role;
+END_ENTITY;
+
+ENTITY effectivity_context_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY effectivity_relationship;
+ name : label;
+ description : OPTIONAL text;
+ related_effectivity : effectivity;
+ relating_effectivity : effectivity;
+END_ENTITY;
+
+ENTITY electric_charge_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CHARGE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY electric_charge_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.coulomb);
+END_ENTITY;
+
+ENTITY electric_current_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CURRENT_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY electric_potential_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY electric_potential_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.volt);
+END_ENTITY;
+
+ENTITY elementary_brep_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(csh
+ <* msb_shells(msb)
+ | NOT (SIZEOF(QUERY(fcs
+ <* csh.cfs_faces
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
+ TYPEOF(fcs)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(csh
+ <* msb_shells(msb)
+ | NOT (SIZEOF(QUERY(fcs
+ <* csh\connected_face_set.cfs_faces
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN
+ TYPEOF(fcs\face_surface.face_geometry))))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element)))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'] *
+ TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_end))))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
+ TYPEOF(msb\manifold_solid_brep.outer))) =
+ 0;
+ WR10: SIZEOF(QUERY(brv
+ <* QUERY(it
+ <* items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR12: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
+ TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY elementary_function
+ SUBTYPE OF (maths_function, generic_literal);
+ func_id : elementary_function_enumerators;
+END_ENTITY;
+
+ENTITY elementary_space
+ SUBTYPE OF (maths_space, generic_literal);
+ space_id : elementary_space_enumerators;
+END_ENTITY;
+
+ENTITY elementary_surface
+ SUPERTYPE OF (ONEOF(plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface))
+ SUBTYPE OF (surface);
+ position : axis2_placement_3d;
+END_ENTITY;
+
+ENTITY ellipse
+ SUBTYPE OF (conic);
+ semi_axis_1 : positive_length_measure;
+ semi_axis_2 : positive_length_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY elliptic_area
+ SUBTYPE OF (primitive_2d);
+ position : axis2_placement_2d;
+ semi_axis_1 : positive_length_measure;
+ semi_axis_2 : positive_length_measure;
+END_ENTITY;
+
+ENTITY energy_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY energy_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.joule);
+END_ENTITY;
+
+ENTITY entirely_narrow_face
+ SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ width_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY entirely_narrow_solid
+ SUBTYPE OF (inapt_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ width_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY entirely_narrow_surface
+ SUBTYPE OF (nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ width_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY entity_assertion
+ SUBTYPE OF (fact_type);
+END_ENTITY;
+
+ENTITY enum_reference_prefix
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY envelope
+ SUBTYPE OF (characterized_object, product);
+END_ENTITY;
+
+ENTITY envelope_relationship
+ SUBTYPE OF (product_relationship);
+END_ENTITY;
+
+ENTITY environment;
+ syntactic_representation : generic_variable;
+ semantics : variable_semantics;
+END_ENTITY;
+
+ENTITY equal_parameter_constraint
+ SUBTYPE OF (defined_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF variational_parameter;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) >= 2;
+END_ENTITY;
+
+ENTITY equals_expression
+ SUBTYPE OF (binary_boolean_expression);
+END_ENTITY;
+
+ENTITY equivalence_instance_report_item_with_notable_instances
+ SUBTYPE OF (a3m_equivalence_inspection_instance_report_item);
+ notable_instances : LIST [1 : ?] OF equivalence_notable_instance;
+END_ENTITY;
+
+ENTITY equivalence_notable_instance;
+ comparing_elements : LIST [0 : ?] OF equivalence_detected_difference_select;
+ compared_elements : LIST [0 : ?] OF equivalence_detected_difference_select;
+ measured_value : equivalence_measured_value_select;
+WHERE
+ WR1: (SIZEOF(comparing_elements) <> 0) OR (SIZEOF(compared_elements) <> 0);
+END_ENTITY;
+
+ENTITY erroneous_b_spline_curve_definition
+ SUBTYPE OF (erroneous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY erroneous_b_spline_surface_definition
+ SUBTYPE OF (erroneous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY erroneous_data
+ ABSTRACT SUPERTYPE OF (ONEOF(erroneous_topology, erroneous_geometry, erroneous_topology_and_geometry_relationship,
+ erroneous_manifold_solid_brep))
+ SUBTYPE OF (shape_data_quality_criterion);
+END_ENTITY;
+
+ENTITY erroneous_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(inconsistent_curve_transition_code, erroneous_b_spline_curve_definition,
+ inconsistent_surface_transition_code, erroneous_b_spline_surface_definition))
+ SUBTYPE OF (erroneous_data);
+END_ENTITY;
+
+ENTITY erroneous_manifold_solid_brep
+ ABSTRACT SUPERTYPE OF (ONEOF(wrongly_oriented_void, wrongly_placed_void, intersecting_shells_in_solid,
+ solid_with_wrong_number_of_voids))
+ SUBTYPE OF (erroneous_data);
+END_ENTITY;
+
+ENTITY erroneous_topology
+ ABSTRACT SUPERTYPE OF (ONEOF(open_edge_loop, open_closed_shell, inconsistent_adjacent_face_normals,
+ disconnected_face_set))
+ SUBTYPE OF (erroneous_data);
+END_ENTITY;
+
+ENTITY erroneous_topology_and_geometry_relationship
+ ABSTRACT SUPERTYPE OF (ONEOF(inconsistent_edge_and_curve_directions, inconsistent_face_and_surface_normals,
+ inconsistent_face_and_closed_shell_normals, intersecting_loops_in_face,
+ wrongly_placed_loop))
+ SUBTYPE OF (erroneous_data);
+END_ENTITY;
+
+ENTITY evaluated_characteristic
+ SUBTYPE OF (representation, representation_relationship);
+UNIQUE
+ UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
+WHERE
+ WR1: SELF\representation_relationship.rep_1 <> SELF\representation_relationship.rep_2;
+END_ENTITY;
+
+ENTITY evaluated_characteristic_of_product_as_individual_test_result
+ SUBTYPE OF (evaluated_characteristic);
+END_ENTITY;
+
+ENTITY evaluated_degenerate_pcurve
+ SUBTYPE OF (degenerate_pcurve);
+ equivalent_point : cartesian_point;
+END_ENTITY;
+
+ENTITY evaluation_product_definition
+ SUBTYPE OF (product_definition);
+END_ENTITY;
+
+ENTITY event_occurrence;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY event_occurrence_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_event_occurrence : event_occurrence;
+ role : event_occurrence_role;
+END_ENTITY;
+
+ENTITY event_occurrence_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_event : event_occurrence;
+ related_event : event_occurrence;
+END_ENTITY;
+
+ENTITY event_occurrence_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY evidence
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : ?] OF evidence_item;
+END_ENTITY;
+
+ENTITY excessive_use_of_groups
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP']);
+END_ENTITY;
+
+ENTITY excessive_use_of_layers
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT']);
+END_ENTITY;
+
+ENTITY excessively_high_degree_curve
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY excessively_high_degree_surface
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY exclusive_product_concept_feature_category
+ SUBTYPE OF (product_concept_feature_category);
+END_ENTITY;
+
+ENTITY executed_action
+ SUBTYPE OF (action);
+END_ENTITY;
+
+ENTITY exp_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY expanded_uncertainty
+ SUBTYPE OF (standard_uncertainty);
+ coverage_factor : REAL;
+END_ENTITY;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY explicit_constraint
+ ABSTRACT SUPERTYPE OF (ONEOF(defined_constraint, free_form_constraint))
+ SUBTYPE OF (variational_representation_item);
+ description : OPTIONAL text;
+ constrained_elements : SET [1 : ?] OF representation_item;
+ reference_elements : SET [0 : ?] OF representation_item;
+WHERE
+ WR1: SIZEOF(constrained_elements * reference_elements) = 0;
+END_ENTITY;
+
+ENTITY explicit_geometric_constraint
+ ABSTRACT SUPERTYPE OF (ONEOF(fixed_element_geometric_constraint, parallel_geometric_constraint,
+ point_distance_geometric_constraint, skew_line_distance_geometric_constraint,
+ curve_distance_geometric_constraint, surface_distance_geometric_constraint,
+ radius_geometric_constraint, curve_length_geometric_constraint,
+ parallel_offset_geometric_constraint, angle_geometric_constraint,
+ perpendicular_geometric_constraint, incidence_geometric_constraint,
+ coaxial_geometric_constraint, tangent_geometric_constraint,
+ symmetry_geometric_constraint, swept_point_curve_geometric_constraint,
+ swept_curve_surface_geometric_constraint, curve_smoothness_geometric_constraint,
+ surface_smoothness_geometric_constraint))
+ SUBTYPE OF (defined_constraint, geometric_representation_item);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_representation_item;
+ SELF\explicit_constraint.reference_elements : SET [0 : ?] OF geometric_representation_item;
+END_ENTITY;
+
+ENTITY explicit_procedural_geometric_representation_item_relationship
+ SUBTYPE OF (explicit_procedural_representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence;
+ SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' IN
+ TYPEOF(SELF\representation_item_relationship.related_representation_item));
+END_ENTITY;
+
+ENTITY explicit_procedural_representation_item_relationship
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence;
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' IN
+ TYPEOF(SELF\representation_item_relationship.related_representation_item));
+ WR2: SIZEOF(QUERY(q
+ <* using_representations(SELF\representation_item_relationship.related_representation_item)
+ | item_in_context(SELF\representation_item_relationship.relating_representation_item,
+ q.context_of_items))) >
+ 0;
+END_ENTITY;
+
+ENTITY explicit_procedural_representation_relationship
+ SUBTYPE OF (representation_relationship);
+ SELF\representation_relationship.rep_1 : procedural_representation;
+WHERE
+ WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION' IN
+ TYPEOF(SELF\representation_relationship.rep_2))) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION' IN
+ TYPEOF(SELF\representation_relationship.rep_2)));
+ WR2: SELF\representation_relationship.rep_1.context_of_items :=:
+ SELF\representation_relationship.rep_2.context_of_items;
+END_ENTITY;
+
+ENTITY explicit_procedural_shape_representation_relationship
+ SUBTYPE OF (explicit_procedural_representation_relationship);
+ SELF\representation_relationship.rep_1 : procedural_shape_representation;
+ SELF\representation_relationship.rep_2 : shape_representation;
+END_ENTITY;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(ri)))) =
+ 1;
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(depth_tolerance\tolerance_value.lower_bound);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(depth_tolerance\tolerance_value.upper_bound);
+ WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN TYPEOF(diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(diameter_tolerance\tolerance_value.lower_bound));
+ WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN TYPEOF(diameter_tolerance)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(diameter_tolerance\tolerance_value.upper_bound));
+END_ENTITY;
+
+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;
+
+ENTITY expression
+ ABSTRACT SUPERTYPE OF (ONEOF(numeric_expression, boolean_expression, string_expression))
+ SUBTYPE OF (generic_expression);
+END_ENTITY;
+
+ENTITY expression_conversion_based_unit
+ SUBTYPE OF (context_dependent_unit, variable_semantics);
+INVERSE
+ associated_variable_environment : environment FOR semantics;
+END_ENTITY;
+
+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;
+
+ENTITY expression_extension_numeric
+ SUBTYPE OF (measure_with_unit, numeric_expression);
+END_ENTITY;
+
+ENTITY expression_extension_string
+ SUBTYPE OF (measure_with_unit, string_expression);
+END_ENTITY;
+
+ENTITY expression_extension_to_select;
+ type_expression_associated : expression_extension_select;
+END_ENTITY;
+
+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;
+
+ENTITY extension
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
+END_ENTITY;
+
+ENTITY extent
+ SUBTYPE OF (characterized_object);
+END_ENTITY;
+
+ENTITY external_class_library
+ SUBTYPE OF (external_source);
+END_ENTITY;
+
+ENTITY external_identification_assignment
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (identification_assignment);
+ source : external_source;
+END_ENTITY;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY external_source;
+ source_id : source_item;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY external_source_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_source : external_source;
+ related_source : external_source;
+END_ENTITY;
+
+ENTITY externally_conditioned_data_quality_criteria_representation
+ SUBTYPE OF (data_quality_criteria_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN
+ TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY externally_conditioned_data_quality_criterion
+ SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
+ 0;
+ WR2: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+ WR3: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+END_ENTITY;
+
+ENTITY externally_conditioned_data_quality_inspection_instance_report_item
+ SUBTYPE OF (data_quality_inspection_instance_report_item);
+ SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_ecdq_element_select;
+WHERE
+ WR1: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT.INSPECTED_INSTANCES'))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(i1.inspection_result)))) =
+ 0;
+END_ENTITY;
+
+ENTITY externally_conditioned_data_quality_inspection_result
+ SUBTYPE OF (data_quality_inspection_result);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN
+ TYPEOF(SELF\data_quality_inspection_result.criterion_inspected);
+END_ENTITY;
+
+ENTITY externally_conditioned_data_quality_inspection_result_representation
+ SUBTYPE OF (data_quality_inspection_result_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY externally_defined_character_glyph
+ SUBTYPE OF (externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_class
+ SUBTYPE OF (class, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_colour
+ SUBTYPE OF (colour_specification, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_context_dependent_unit
+ SUBTYPE OF (context_dependent_unit, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_conversion_based_unit
+ SUBTYPE OF (conversion_based_unit, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_currency
+ SUBTYPE OF (currency, externally_defined_context_dependent_unit);
+END_ENTITY;
+
+ENTITY externally_defined_curve_font
+ SUBTYPE OF (externally_defined_item);
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')
+ | (adr.assigned_document.description = 'external size dimension specification')));
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({5 <= SIZEOF(pdr.used_representation.items) <= 10}))) =
+ 1)) =
+ 1));
+ WR3: ((NOT (SELF\characterized_object.description = 'marking')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'partial area occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied area usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) <=
+ 1)))) =
+ 0);
+ WR6: ((NOT (SELF\characterized_object.description = 'marking')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'number of threads')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR14: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'fit class 2')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR15: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied shape') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'root fillet radius')))) <=
+ 1)))) =
+ 0)))) =
+ 0));
+END_ENTITY;
+
+ENTITY externally_defined_general_property
+ SUBTYPE OF (general_property, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_hatch_style
+ SUBTYPE OF (externally_defined_item, geometric_representation_item);
+END_ENTITY;
+
+ENTITY externally_defined_item;
+ item_id : source_item;
+ source : external_source;
+END_ENTITY;
+
+ENTITY externally_defined_item_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_item : externally_defined_item;
+ related_item : externally_defined_item;
+END_ENTITY;
+
+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;
+
+ENTITY externally_defined_marker
+ SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
+END_ENTITY;
+
+ENTITY externally_defined_representation
+ SUBTYPE OF (representation, externally_defined_item);
+ SELF\representation.items : SET [1 : ?] OF externally_defined_representation_item;
+END_ENTITY;
+
+ENTITY externally_defined_representation_item
+ SUBTYPE OF (representation_item, externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_string
+ SUBTYPE OF (externally_defined_representation_item);
+END_ENTITY;
+
+ENTITY externally_defined_style
+ SUBTYPE OF (externally_defined_item, founded_item);
+END_ENTITY;
+
+ENTITY externally_defined_symbol
+ SUBTYPE OF (externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_terminator_symbol
+ SUBTYPE OF (externally_defined_symbol);
+END_ENTITY;
+
+ENTITY externally_defined_text_font
+ SUBTYPE OF (externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_tile
+ SUBTYPE OF (externally_defined_item);
+END_ENTITY;
+
+ENTITY externally_defined_tile_style
+ SUBTYPE OF (externally_defined_item, geometric_representation_item);
+END_ENTITY;
+
+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;
+
+ENTITY extreme_instance;
+ locations_of_extreme_value : SET [1 : ?] OF location_of_extreme_value_select;
+ measured_value : measured_value_select;
+END_ENTITY;
+
+ENTITY extreme_patch_width_variation
+ SUBTYPE OF (geometry_with_local_irregularity);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY extruded_face_solid_with_draft_angle
+ SUBTYPE OF (extruded_face_solid_with_trim_conditions);
+ draft_angle : plane_angle_measure;
+WHERE
+ WR1: draft_angle <> 0;
+END_ENTITY;
+
+ENTITY extruded_face_solid_with_multiple_draft_angles
+ SUBTYPE OF (extruded_face_solid_with_trim_conditions);
+ drafted_edges : LIST [2 : ?] OF SET [1 : ?] OF edge_curve;
+ draft_angles : LIST [2 : ?] OF plane_angle_measure;
+WHERE
+ WR1: SIZEOF(drafted_edges) = SIZEOF(draft_angles);
+ WR2: SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0;
+ WR3: SIZEOF(QUERY(q
+ <* drafted_edges
+ | (SIZEOF(QUERY(r <* q | NOT (SELF\swept_face_solid.swept_face IN using_items(r, [])))) > 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY extruded_face_solid_with_trim_conditions
+ SUPERTYPE OF (ONEOF(extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles))
+ SUBTYPE OF (extruded_face_solid);
+ first_trim_condition : trim_condition_select;
+ second_trim_condition : trim_condition_select;
+ first_trim_intent : trim_intent;
+ second_trim_intent : trim_intent;
+ first_offset : non_negative_length_measure;
+ second_offset : non_negative_length_measure;
+WHERE
+ WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(first_trim_condition)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(second_trim_condition)));
+ WR2: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND
+ ((first_trim_intent = trim_intent.offset) OR (first_trim_intent = trim_intent.up_to_next))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)) AND
+ ((second_trim_intent = trim_intent.offset) OR (second_trim_intent = trim_intent.up_to_next))));
+ WR3: NOT (((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ TYPEOF(first_trim_condition))) AND
+ ((first_trim_intent = trim_intent.blind) OR (first_trim_intent = trim_intent.through_all))) OR
+ ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ TYPEOF(second_trim_condition))) AND
+ ((second_trim_intent = trim_intent.blind) OR (second_trim_intent = trim_intent.through_all))));
+ WR4: (((first_trim_intent = trim_intent.offset) AND (first_offset > 0)) XOR
+ ((first_trim_intent <> trim_intent.offset) AND (first_offset = 0))) AND
+ (((second_trim_intent = trim_intent.offset) AND (second_offset > 0)) XOR
+ ((second_trim_intent <> trim_intent.offset) AND (second_offset = 0)));
+ WR5: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition))) AND
+ (first_trim_condition = second_trim_condition));
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF(temp))) <=
+ 1;
+END_ENTITY;
+
+ENTITY face_based_surface_model
+ SUBTYPE OF (geometric_representation_item);
+ fbsm_faces : SET [1 : ?] OF connected_face_set;
+END_ENTITY;
+
+ENTITY face_bound
+ SUBTYPE OF (topological_representation_item);
+ bound : loop;
+ orientation : BOOLEAN;
+END_ENTITY;
+
+ENTITY face_outer_bound
+ SUBTYPE OF (face_bound);
+END_ENTITY;
+
+ENTITY face_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) >= 1);
+ WR2: (SIZEOF(QUERY(it
+ <* SELF.items
+ | (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(it)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF(it)))))) =
+ 0);
+END_ENTITY;
+
+ENTITY face_shape_representation_relationship
+ SUBTYPE OF (representation_relationship);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_1));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_2));
+END_ENTITY;
+
+ENTITY face_surface
+ SUBTYPE OF (face, geometric_representation_item);
+ face_geometry : surface;
+ same_sense : BOOLEAN;
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry));
+END_ENTITY;
+
+ENTITY face_surface_with_excessive_patches_in_one_direction
+ SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY faceted_brep
+ SUBTYPE OF (manifold_solid_brep);
+END_ENTITY;
+
+ENTITY faceted_brep_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1))) >
+ 0;
+ WR3: SIZEOF(QUERY(fbrep
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(csh
+ <* msb_shells(fbrep)
+ | NOT (SIZEOF(QUERY(fcs
+ <* csh\connected_face_set.cfs_faces
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
+ TYPEOF(fcs)) AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(fcs\face_surface.face_geometry)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
+ TYPEOF(fcs\face_surface.face_geometry\elementary_surface.position.location)))))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(fbrep
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN
+ TYPEOF(bnds)))) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(msb
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
+ TYPEOF(msb\manifold_solid_brep.outer)))) =
+ 0;
+ WR6: SIZEOF(QUERY(brv
+ <* QUERY(it
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY fact_type
+ SUBTYPE OF (property_definition);
+END_ENTITY;
+
+ENTITY feature_component_definition
+ SUBTYPE OF (characterized_object);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY feature_component_relationship
+ SUPERTYPE OF (ONEOF(pattern_omit_membership, pattern_offset_membership))
+ SUBTYPE OF (shape_aspect_relationship);
+WHERE
+ WR1: ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRANSITION_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN'] *
+ TYPEOF(SELF.relating_shape_aspect)) =
+ 1) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MACHINING_FEATURE_DEFINITION' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition)));
+END_ENTITY;
+
+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;
+
+ENTITY feature_definition_with_connection_area
+ SUBTYPE OF (shape_feature_definition);
+END_ENTITY;
+
+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;
+
+ENTITY feature_in_panel
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SELF.description IN ['pocket','boss','stairstep'];
+ WR2: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 3}))) =
+ 0;
+ WR3: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | NOT (i.name IN ['orientation','base radius','target radius']))) >
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR5: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'target radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR6: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'base boundary') AND
+ (sa.description IN ['directed angle occurrence','closed profile occurrence']))) =
+ 1;
+ WR7: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'target boundary') AND
+ (sa.description IN ['directed angle occurrence','closed profile occurrence']))) =
+ 1;
+ WR8: SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'directed angle occurrence'))) <= 1;
+ WR9: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.description = 'directed angle occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'directed angle usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTED_ANGLE' IN
+ TYPEOF(sar.relating_shape_aspect)))) =
+ 1))) =
+ SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'directed angle occurrence')));
+ WR10: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.description = 'closed profile occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
+ TYPEOF(sar.relating_shape_aspect)) =
+ 1))) =
+ 1))) =
+ SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'closed profile occurrence')));
+ WR11: (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation))) <=
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ NOT (pdr.used_representation.name = 'target face'))) =
+ 0);
+ WR12: (SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'target boundary') AND (sa.description = 'directed angle occurrence'))) =
+ 0) OR
+ (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1);
+END_ENTITY;
+
+ENTITY feature_pattern
+ SUBTYPE OF (replicate_feature);
+WHERE
+ WR1: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(srwp_i
+ <* pdr.used_representation.items
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(srwp_i)))) >
+ 0))) >
+ 0)) =
+ 0;
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'base feature placement'))) >
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_COLOUR' IN
+ TYPEOF(fill_style))) <=
+ 1;
+END_ENTITY;
+
+ENTITY fill_area_style_colour;
+ name : label;
+ fill_colour : colour;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(closed_curve))) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN TYPEOF(closed_curve)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE' IN TYPEOF(closed_curve)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(closed_curve)) AND
+ (closed_curve\b_spline_curve.closed_curve = true)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(closed_curve)) AND
+ (closed_curve\composite_curve.closed_curve = true)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY fill_area_style_tile_curve_with_style
+ SUBTYPE OF (geometric_representation_item);
+ styled_curve : annotation_curve_occurrence;
+END_ENTITY;
+
+ENTITY fill_area_style_tile_symbol_with_style
+ SUBTYPE OF (geometric_representation_item);
+ symbol : annotation_symbol_occurrence;
+END_ENTITY;
+
+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;
+
+ENTITY fillet
+ SUBTYPE OF (transition_feature);
+WHERE
+ WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second offset'))) <=
+ 1))) =
+ 0))) =
+ 0);
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'fillet face'))) =
+ 1))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'first face shape'))) =
+ 1))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'second face shape'))) =
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY final_solution
+ SUBTYPE OF (product_definition_formation);
+ status : STRING;
+INVERSE
+ specification : SET [1:?] OF product_definition FOR formation;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY fixed_constituent_assembly_constraint
+ SUBTYPE OF (assembly_geometric_constraint, fixed_element_geometric_constraint);
+ fixed_constituent : representative_shape_representation;
+WHERE
+ WR1: SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3;
+ WR2: (assembly_leaf(using_product_definition_of_shape_representation(fixed_constituent)[1]));
+ WR3: (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND
+ (SIZEOF(SELF\explicit_constraint.reference_elements) = 0);
+ WR4: fixed_constituent IN
+ (using_representations(SELF\explicit_constraint.constrained_elements[1]) +
+ using_representation_with_mapping(SELF\explicit_constraint.constrained_elements[1]));
+END_ENTITY;
+
+ENTITY fixed_element_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+END_ENTITY;
+
+ENTITY fixed_instance_attribute_set
+ SUBTYPE OF (variational_representation_item);
+ fixed_attributes : SET [1 : ?] OF instance_attribute_reference;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* using_representations(SELF)
+ | SIZEOF(QUERY(r
+ <* q.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET' IN
+ TYPEOF(r))) >
+ 1)) =
+ 0;
+END_ENTITY;
+
+ENTITY fixed_reference_swept_surface
+ SUBTYPE OF (swept_surface);
+ directrix : curve;
+ fixed_reference : direction;
+END_ENTITY;
+
+ENTITY flat_face
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'course of travel occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'removal boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ (sdr.name = 'removal boundary')))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR4: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'enclosed boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+ WR6: SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (csa.name = 'uncut volume') AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION'] *
+ TYPEOF(sar.related_shape_aspect)) =
+ 1)))) =
+ 1)))) <=
+ 1)))) =
+ 1;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'removal depth'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY flat_pattern_ply_representation_relationship
+ SUBTYPE OF (shape_representation_relationship);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
+ (TYPEOF(SELF\representation_relationship.rep_1) * TYPEOF(SELF\representation_relationship.rep_2));
+ WR2: SELF\representation_relationship.rep_1.context_of_items\geometric_representation_context.coordinate_space_dimension =
+ 3;
+END_ENTITY;
+
+ENTITY flatness_tolerance
+ SUBTYPE OF (geometric_tolerance);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY force_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY force_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.newton);
+END_ENTITY;
+
+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: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION') IN TYPEOF(value_to_format)) AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION') IN TYPEOF(format_string));
+END_ENTITY;
+
+ENTITY forward_chaining_rule
+ SUBTYPE OF (rule_definition);
+END_ENTITY;
+
+ENTITY forward_chaining_rule_premise
+ SUBTYPE OF (property_definition, property_definition_representation, representation);
+END_ENTITY;
+
+ENTITY founded_item
+ SUPERTYPE OF ((ONEOF(b_spline_curve_knot_locator, b_spline_curve_segment, b_spline_surface_knot_locator,
+ b_spline_surface_patch, b_spline_surface_strip,
+ boundary_curve_of_b_spline_or_rectangular_composite_surface, box_domain,
+ character_glyph_style_outline, character_glyph_style_stroke, composite_curve_segment,
+ composite_curve_transition_locator, curve_style, curve_style_font, curve_style_font_and_scaling,
+ curve_style_font_pattern, externally_defined_style, fill_area_style,
+ interpolated_configuration_segment, kinematic_path_segment, plane_angle_and_length_pair,
+ plane_angle_and_ratio_pair, point_style, presentation_style_assignment,
+ rectangular_composite_surface_transition_locator, surface_patch, 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, view_volume)) ANDOR
+ (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;
+
+ENTITY free_edge
+ SUBTYPE OF (inapt_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, []);
+ WR5: SIZEOF(QUERY(sdqr
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(sdqr)) AND
+ (SIZEOF(QUERY(sdqiir
+ <* bag_to_set(USEDIN(sdqr,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(sdqiir)) AND
+ (SIZEOF(QUERY(sdqiri
+ <* sdqiir.inspected_instances
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN
+ TYPEOF(sdqiri.inspected_elements[1])))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY free_form_assignment
+ SUBTYPE OF (free_form_constraint);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\free_form_constraint.constrained_elements
+ | q IN used_variables(SELF\free_form_constraint.constraining_expression))) =
+ 0;
+ WR2: SIZEOF(QUERY(q
+ <* SELF\free_form_constraint.reference_elements
+ | NOT (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) =
+ 0;
+ WR3: SIZEOF(SELF\free_form_constraint.reference_elements) >= 1;
+ WR4: SIZEOF(QUERY(q
+ <* SELF\free_form_constraint.constrained_elements
+ | NOT (compatible_spaces(values_space_of(SELF\free_form_constraint.constraining_expression),
+ q\maths_variable.values_space)))) =
+ 0;
+END_ENTITY;
+
+ENTITY free_form_constraint
+ ABSTRACT SUPERTYPE OF (ONEOF(free_form_assignment, free_form_relation))
+ SUBTYPE OF (explicit_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
+ SELF\explicit_constraint.reference_elements : SET [0 : ?] OF variational_parameter;
+ constraining_expression : expression;
+END_ENTITY;
+
+ENTITY free_form_relation
+ SUBTYPE OF (free_form_constraint);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
+ TYPEOF(SELF\free_form_constraint.constraining_expression);
+ WR2: SIZEOF(QUERY(q
+ <* (SELF\free_form_constraint.constrained_elements + SELF\free_form_constraint.reference_elements)
+ | NOT (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) =
+ 0;
+END_ENTITY;
+
+ENTITY free_kinematic_motion_representation
+ SUBTYPE OF (representation_relationship_with_transformation);
+ SELF\representation_relationship.rep_1 : representative_shape_representation;
+ SELF\representation_relationship.rep_2 : representative_shape_representation;
+ motion : kinematic_path;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
+ WR3: ((dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) =
+ 3) AND
+ (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) =
+ 3));
+ WR4: (SELF\representation_relationship.rep_1 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1))) AND
+ (SELF\representation_relationship.rep_2 IN
+ (using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) +
+ using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2)));
+END_ENTITY;
+
+ENTITY free_variable_semantics
+ SUBTYPE OF (variable_semantics);
+END_ENTITY;
+
+ENTITY frequency_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREQUENCY_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY frequency_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.hertz);
+END_ENTITY;
+
+ENTITY frozen_assignment
+ SUBTYPE OF (approval_assignment);
+ items : SET [1 : ?] OF change_management_object;
+END_ENTITY;
+
+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;
+
+ENTITY func
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY functional_breakdown_context
+ SUBTYPE OF (breakdown_context);
+END_ENTITY;
+
+ENTITY functional_element_usage
+ SUBTYPE OF (breakdown_element_usage);
+END_ENTITY;
+
+ENTITY functionally_defined_transformation;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY g1_discontinuity_between_adjacent_faces
+ SUBTYPE OF (non_smooth_geometry_transition_across_edge);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
+END_ENTITY;
+
+ENTITY g1_discontinuous_curve
+ SUBTYPE OF (discontinuous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY g1_discontinuous_surface
+ SUBTYPE OF (discontinuous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
+END_ENTITY;
+
+ENTITY g2_discontinuity_between_adjacent_faces
+ SUBTYPE OF (non_smooth_geometry_transition_across_edge);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
+ flat_curvature_radius_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
+ value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
+ WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR5: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR6: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE']);
+END_ENTITY;
+
+ENTITY g2_discontinuous_curve
+ SUBTYPE OF (discontinuous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
+ flat_curvature_radius_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
+ value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
+ WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR5: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
+ WR6: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY g2_discontinuous_surface
+ SUBTYPE OF (discontinuous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
+ flat_curvature_radius_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
+ value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
+ WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR5: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
+ WR6: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_adjacent_edges_in_loop
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_edge_and_base_surface
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_faces_related_to_an_edge
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_pcurves_related_to_an_edge
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_vertex_and_base_surface
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gap_between_vertex_and_edge
+ SUBTYPE OF (geometric_gap_in_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY gear
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'root angle'))) =
+ 1))) =
+ 0))) =
+ 0);
+ WR16: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'applied shape') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.relating_shape_aspect))) =
+ 1)) =
+ 1))) =
+ 0;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN TYPEOF(base)) OR
+ (SELF\shape_aspect.of_shape = base\shape_aspect.of_shape);
+ WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM_LIST' IN TYPEOF(base)) OR
+ (SELF\shape_aspect.of_shape = base[1]\shape_aspect.of_shape);
+END_ENTITY;
+
+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)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage'))) =
+ 1)));
+ WR5: (SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)))) <=
+ 1) AND
+ (SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND
+ (sa.name = 'general compound feature') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE' IN
+ TYPEOF(sar.related_shape_aspect)))) >=
+ 2))) <=
+ 1);
+END_ENTITY;
+
+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;
+
+ENTITY general_material_property
+ SUBTYPE OF (general_property);
+WHERE
+ WR1: SIZEOF(QUERY(gpa
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION')
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_PROPERTY' IN
+ TYPEOF(gpa\general_property_association.derived_definition)))) =
+ 0;
+END_ENTITY;
+
+ENTITY general_property;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY general_property_association;
+ name : label;
+ description : OPTIONAL text;
+ base_definition : general_property;
+ derived_definition : derived_property_select;
+WHERE
+ WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE'] *
+ TYPEOF(derived_definition)) >
+ 0) OR
+ (SIZEOF(USEDIN(derived_definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')) =
+ 1);
+ WR2: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE'] *
+ TYPEOF(derived_definition)) >
+ 0) OR
+ (derived_definition.name = base_definition.name);
+END_ENTITY;
+
+ENTITY general_property_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_property : general_property;
+ related_property : general_property;
+END_ENTITY;
+
+ENTITY generic_character_glyph_symbol
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (symbol_representation);
+END_ENTITY;
+
+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;
+
+ENTITY generic_literal
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (simple_generic_expression);
+END_ENTITY;
+
+ENTITY generic_product_definition_reference
+ ABSTRACT SUPERTYPE OF (ONEOF(product_definition_reference, product_definition_reference_with_local_representation));
+ source : external_source;
+END_ENTITY;
+
+ENTITY generic_property_relationship;
+ name : label;
+ description : text;
+ relating : generic_property_definition_select;
+ related : generic_property_definition_select;
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_generic_property_relationship(SELF, [related],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_PROPERTY_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY generic_variable
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (simple_generic_expression);
+INVERSE
+ interpretation : environment FOR syntactic_representation;
+END_ENTITY;
+
+ENTITY geometric_alignment
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
+END_ENTITY;
+
+ENTITY geometric_contact
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 2;
+END_ENTITY;
+
+ENTITY geometric_curve_set
+ SUBTYPE OF (geometric_set);
+WHERE
+ WR1: SIZEOF(QUERY(temp
+ <* SELF\geometric_set.elements
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(temp)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(temp))))) =
+ 0;
+END_ENTITY;
+
+ENTITY geometric_gap_in_topology
+ ABSTRACT SUPERTYPE OF (ONEOF(gap_between_adjacent_edges_in_loop, gap_between_vertex_and_base_surface,
+ gap_between_vertex_and_edge, gap_between_edge_and_base_surface,
+ gap_between_pcurves_related_to_an_edge, gap_between_faces_related_to_an_edge))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY geometric_intersection
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY geometric_representation_context_with_parameter
+ SUBTYPE OF (geometric_representation_context);
+ parameter_unit : OPTIONAL unit;
+END_ENTITY;
+
+ENTITY geometric_representation_item
+ SUPERTYPE OF ((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, primitive_2d, 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(annotation_fill_area, curve, point, text_literal))) ANDOR
+ ((ONEOF(camera_model, curve, direction))) ANDOR
+ ((ONEOF(curve, externally_defined_hatch_style, externally_defined_tile_style, fill_area_style_hatching,
+ fill_area_style_tile_symbol_with_style, fill_area_style_tiles, one_direction_repeat_factor,
+ point, vector))) ANDOR
+ ((ONEOF(curve, planar_extent))) ANDOR (ONEOF(kinematic_path, placement)) ANDOR
+ (ONEOF(rotation_about_direction, su_parameters)))
+ SUBTYPE OF (representation_item);
+DERIVE
+ dim : dimension_count := dimension_of(SELF);
+WHERE
+ WR1: SIZEOF(QUERY(using_rep
+ <* using_representations(SELF)
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
+ TYPEOF(using_rep.context_of_items)))) =
+ 0;
+END_ENTITY;
+
+ENTITY geometric_set
+ SUBTYPE OF (geometric_representation_item);
+ elements : SET [1 : ?] OF geometric_set_select;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+ WR5: SIZEOF(QUERY(tr <* tolerance_relationship | tr.name = 'composite tolerance')) <= 1;
+END_ENTITY;
+
+ENTITY geometric_tolerance_auxiliary_classification;
+ attribute_value : geometric_tolerance_auxiliary_classification_enum;
+ described_item : geometric_tolerance;
+END_ENTITY;
+
+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
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN
+ TYPEOF(relating_geometric_tolerance)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN
+ TYPEOF(related_geometric_tolerance))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN
+ TYPEOF(relating_geometric_tolerance)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN
+ TYPEOF(related_geometric_tolerance))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' IN
+ TYPEOF(relating_geometric_tolerance)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE');
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN TYPEOF(ds))) =
+ 0) OR
+ (SIZEOF(datum_system) = 1);
+END_ENTITY;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(second_unit_size));
+ WR3: NOT (area_type = area_unit_type.rectangular) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(second_unit_size));
+ WR4: NOT (area_type = area_unit_type.spherical) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(second_unit_size));
+ WR5: NOT (area_type = area_unit_type.spherical) OR
+ (SIZEOF(QUERY(tz
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_ZONE.DEFINING_TOLERANCE')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_TOLERANCE_ZONE' IN
+ TYPEOF(tz)))) <>
+ 0);
+END_ENTITY;
+
+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;
+
+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;
+
+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
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)) AND
+ (SELF\geometric_tolerance.toleranced_shape_aspect\shape_aspect.product_definitional = true) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN
+ TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)));
+END_ENTITY;
+
+ENTITY geometrical_tolerance_callout
+ SUBTYPE OF (draughting_callout);
+END_ENTITY;
+
+ENTITY geometrically_bounded_2d_wireframe_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
+ WR2: SIZEOF(QUERY(item
+ <* SELF.items
+ | NOT (SIZEOF(TYPEOF(item) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(item
+ <* SELF.items
+ | SIZEOF(TYPEOF(item) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
+ 1)) >=
+ 1;
+ WR4: SIZEOF(QUERY(mi
+ <* QUERY(item
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(item)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR5: SIZEOF(QUERY(gcs
+ <* QUERY(item
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
+ | NOT (SIZEOF(QUERY(elem
+ <* gcs\geometric_set.elements
+ | NOT (SIZEOF(TYPEOF(elem) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE']) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(gcs
+ <* QUERY(item
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
+ | NOT (SIZEOF(QUERY(crv
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
+ TYPEOF(elem)))
+ | NOT (valid_basis_curve_in_2d_wireframe(crv)))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(gcs
+ <* QUERY(item
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
+ | NOT (SIZEOF(QUERY(pnt
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
+ TYPEOF(elem)))
+ | NOT (SIZEOF(TYPEOF(pnt) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']) =
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY geometrically_bounded_surface_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN
+ TYPEOF(mr_it)))) >
+ 0)))) =
+ 0;
+ WR4: SIZEOF(QUERY(gs
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(pnt
+ <* QUERY(gsel
+ <* gs\geometric_set.elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
+ TYPEOF(gsel))
+ | NOT (gbsf_check_point(pnt)))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(gs
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(cv
+ <* QUERY(gsel
+ <* gs\geometric_set.elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
+ TYPEOF(gsel))
+ | NOT (gbsf_check_curve(cv)))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(gs
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(sf
+ <* QUERY(gsel
+ <* gs\geometric_set.elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
+ TYPEOF(gsel))
+ | NOT (gbsf_check_surface(sf)))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(gs
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
+ | SIZEOF(QUERY(gsel
+ <* gs\geometric_set.elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(gsel))) >
+ 0)) >
+ 0;
+END_ENTITY;
+
+ENTITY geometrically_bounded_wireframe_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(TYPEOF(it) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(TYPEOF(it) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
+ 1))) >=
+ 1;
+ WR3: SIZEOF(QUERY(gcs
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(crv
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
+ TYPEOF(elem)))
+ | NOT valid_geometrically_bounded_wf_curve(crv))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(gcs
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(pnts
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
+ TYPEOF(elem)))
+ | NOT valid_geometrically_bounded_wf_point(pnts))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(gcs
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(cnc
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN
+ TYPEOF(elem)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(cnc\conic.position)))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(gcs
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(pline
+ <* QUERY(elem
+ <* gcs\geometric_set.elements
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
+ TYPEOF(elem)))
+ | NOT (SIZEOF(pline\polyline.points) > 2))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(mi
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+END_ENTITY;
+
+ENTITY geometry_with_local_irregularity
+ ABSTRACT SUPERTYPE OF (ONEOF(extreme_patch_width_variation, zero_surface_normal, abrupt_change_of_surface_normal))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY geometry_with_local_near_degeneracy
+ ABSTRACT SUPERTYPE OF (ONEOF(curve_with_small_curvature_radius, short_length_curve_segment,
+ surface_with_small_curvature_radius, small_area_surface_patch, narrow_surface_patch,
+ indistinct_surface_knots, indistinct_curve_knots, nearly_degenerate_surface_boundary,
+ nearly_degenerate_surface_patch))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY global_assignment
+ SUBTYPE OF (representation_item_relationship);
+END_ENTITY;
+
+ENTITY global_uncertainty_assigned_context
+ SUBTYPE OF (representation_context);
+ uncertainty : SET [1 : ?] OF uncertainty_measure_with_unit;
+END_ENTITY;
+
+ENTITY global_unit_assigned_context
+ SUBTYPE OF (representation_context);
+ units : SET [1 : ?] OF unit;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY gps_filtration_specification;
+ base_target : gps_filtration_specification_target;
+ filter_data : LIST [1 : ?] OF gps_filter;
+END_ENTITY;
+
+ENTITY ground_fact
+ SUBTYPE OF (atomic_formula);
+END_ENTITY;
+
+ENTITY group
+ SUPERTYPE OF (ONEOF(change_group, change_element));
+ name : label;
+ description : OPTIONAL text;
+DERIVE
+ id : identifier := get_id_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY group_assignment
+ ABSTRACT SUPERTYPE OF (ONEOF(current_change_element_assignment, previous_change_element_assignment,
+ change_group_assignment));
+ assigned_group : group;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY group_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_group : group;
+ related_group : group;
+END_ENTITY;
+
+ENTITY half_space_2d
+ SUBTYPE OF (primitive_2d);
+ base_curve : curve;
+ agreement_flag : BOOLEAN;
+END_ENTITY;
+
+ENTITY half_space_solid
+ SUBTYPE OF (geometric_representation_item);
+ base_surface : surface;
+ agreement_flag : BOOLEAN;
+END_ENTITY;
+
+ENTITY hardness_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: ({2 <= SIZEOF(SELF.items) <= 4}) AND
+ (SIZEOF(QUERY(i
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i.name IN ['measuring method','measuring position']))) +
+ SIZEOF(QUERY(i
+ <* items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | SIZEOF(QUERY(gpa
+ <* USEDIN(pdr.definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
+ TYPEOF(gpa.base_definition)) AND
+ (gpa\general_property_association.base_definition\general_property.name =
+ 'surface_condition'))) =
+ 1)) =
+ 1);
+END_ENTITY;
+
+ENTITY harness_node
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY harness_segment
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+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;
+
+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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN
+ TYPEOF(SELF.item\mapped_item.mapping_source.mapping_origin);
+END_ENTITY;
+
+ENTITY hierarchical_interface_connection
+ SUBTYPE OF (interface_connection);
+END_ENTITY;
+
+ENTITY high_degree_axi_symmetric_surface
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ approximation_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY high_degree_conic
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ approximation_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY high_degree_linear_curve
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ approximation_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY high_degree_planar_surface
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ approximation_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+ENTITY hole_bottom
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0));
+ WR5: ((NOT (SELF.description = 'flat')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar.description = 'hole bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'tip angle')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR14: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar.description = 'hole bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HOLE_BOTTOM' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1);
+ WR15: ((NOT (SELF.description = 'flat with taper')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'taper diameter')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+END_ENTITY;
+
+ENTITY hole_in_panel
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'profile usage') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
+ TYPEOF(sar.relating_shape_aspect)) =
+ 1))) =
+ 1))) =
+ 1;
+ WR2: SIZEOF(get_property_definition_representations(SELF)) =
+ SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | SIZEOF(pdr.used_representation.items) = 1));
+END_ENTITY;
+
+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;
+
+ENTITY homokinetic_pair
+ SUBTYPE OF (universal_pair);
+WHERE
+ WR1: NOT EXISTS(SELF.input_skew_angle);
+END_ENTITY;
+
+ENTITY hyperbola
+ SUBTYPE OF (conic);
+ semi_axis : positive_length_measure;
+ semi_imag_axis : positive_length_measure;
+END_ENTITY;
+
+ENTITY id_attribute;
+ attribute_value : identifier;
+ identified_item : id_attribute_select;
+END_ENTITY;
+
+ENTITY identification_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_id : identifier;
+ role : identification_role;
+END_ENTITY;
+
+ENTITY identification_assignment_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_identification_assignment : identification_assignment;
+ related_identification_assignment : identification_assignment;
+END_ENTITY;
+
+ENTITY identification_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY idrm_classification_assignment
+ SUBTYPE OF (classification_assignment);
+ items : SET [1 : ?] OF idrm_marked_item;
+END_ENTITY;
+
+ENTITY illuminance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ILLUMINANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY illuminance_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lux);
+END_ENTITY;
+
+ENTITY implicit_explicit_positioned_sketch_relationship
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : repositioned_neutral_sketch;
+ SELF\representation_item_relationship.related_representation_item : positioned_sketch;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* using_representations(SELF\representation_item_relationship.related_representation_item)
+ | item_in_context(SELF\representation_item_relationship.relating_representation_item,
+ q.context_of_items))) >
+ 0;
+END_ENTITY;
+
+ENTITY implicit_intersection_curve
+ SUBTYPE OF (implicit_planar_curve);
+ external_surface : surface;
+END_ENTITY;
+
+ENTITY implicit_model_intersection_curve
+ SUBTYPE OF (implicit_planar_curve);
+ intersected_model : surface_or_solid_model;
+END_ENTITY;
+
+ENTITY implicit_planar_curve
+ ABSTRACT SUPERTYPE OF (ONEOF(implicit_intersection_curve, implicit_projected_curve,
+ implicit_model_intersection_curve, implicit_silhouette_curve))
+ SUBTYPE OF (curve, auxiliary_geometric_representation_item);
+ using_sketch : positioned_sketch;
+ computed_representation : curve;
+DERIVE
+ curve_plane : plane := get_plane_of_implicit_geometry(using_sketch);
+WHERE
+ WR1: SIZEOF(TYPEOF(computed_representation) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IMPLICIT_PLANAR_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA']) =
+ 0;
+END_ENTITY;
+
+ENTITY implicit_planar_intersection_point
+ SUBTYPE OF (implicit_point_on_plane);
+ external_curve : curve;
+END_ENTITY;
+
+ENTITY implicit_planar_projection_point
+ SUBTYPE OF (implicit_point_on_plane);
+ external_point : point;
+ projection_direction : direction;
+END_ENTITY;
+
+ENTITY implicit_point_on_plane
+ ABSTRACT SUPERTYPE OF (ONEOF(implicit_planar_intersection_point, implicit_planar_projection_point))
+ SUBTYPE OF (point, auxiliary_geometric_representation_item);
+ using_sketch : positioned_sketch;
+ computed_representation : cartesian_point;
+DERIVE
+ plane_of_point : plane := get_plane_of_implicit_geometry(using_sketch);
+WHERE
+ WR1: (plane_of_point\elementary_surface.position.location = computed_representation) XOR
+ (dot_product(plane_of_point\elementary_surface.position.p[3],
+ get_relative_direction_2points(plane_of_point\elementary_surface.position.location,
+ computed_representation)) =
+ 0);
+ WR2: SIZEOF(TYPEOF(computed_representation) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IMPLICIT_POINT_ON_PLANE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA']) =
+ 0;
+END_ENTITY;
+
+ENTITY implicit_projected_curve
+ SUBTYPE OF (implicit_planar_curve);
+ external_curve : curve;
+ projection_direction : direction;
+END_ENTITY;
+
+ENTITY implicit_silhouette_curve
+ SUBTYPE OF (implicit_planar_curve);
+ silhouetted_model : surface_or_solid_model;
+ view_direction : direction;
+END_ENTITY;
+
+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;
+
+ENTITY imported_point_function
+ SUBTYPE OF (maths_function, generic_literal);
+ geometry : point;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY in_zone
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY inappropriate_element_visibility
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM']);
+END_ENTITY;
+
+ENTITY inappropriate_use_of_layer
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT']);
+END_ENTITY;
+
+ENTITY inapt_data
+ ABSTRACT SUPERTYPE OF (ONEOF(inapt_topology, inapt_geometry, inapt_topology_and_geometry_relationship,
+ inapt_manifold_solid_brep))
+ SUBTYPE OF (shape_data_quality_criterion);
+END_ENTITY;
+
+ENTITY inapt_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(nearly_degenerate_geometry, discontinuous_geometry, self_intersecting_geometry,
+ geometry_with_local_near_degeneracy, overlapping_geometry, multiply_defined_geometry,
+ geometry_with_local_irregularity, overcomplex_geometry))
+ SUBTYPE OF (inapt_data);
+END_ENTITY;
+
+ENTITY inapt_manifold_solid_brep
+ ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_solids, small_volume_solid, multiply_defined_solids,
+ entirely_narrow_solid, solid_with_excessive_number_of_voids))
+ SUBTYPE OF (inapt_data);
+END_ENTITY;
+
+ENTITY inapt_topology
+ ABSTRACT SUPERTYPE OF (ONEOF(free_edge, non_manifold_at_edge, non_manifold_at_vertex, over_used_vertex))
+ SUBTYPE OF (inapt_data);
+END_ENTITY;
+
+ENTITY inapt_topology_and_geometry_relationship
+ ABSTRACT SUPERTYPE OF (ONEOF(topology_related_to_nearly_degenerate_geometry, geometric_gap_in_topology,
+ non_smooth_geometry_transition_across_edge,
+ topology_related_to_self_intersecting_geometry, steep_geometry_transition_across_edge,
+ topology_related_to_overlapping_geometry, topology_related_to_multiply_defined_geometry,
+ overcomplex_topology_and_geometry_relationship))
+ SUBTYPE OF (inapt_data);
+END_ENTITY;
+
+ENTITY incidence_assembly_constraint
+ SUBTYPE OF (binary_assembly_constraint, incidence_geometric_constraint);
+END_ENTITY;
+
+ENTITY incidence_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : ?] OF geometric_constraint_element;
+ near_points : SET [0 : ?] OF near_point_relationship;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
+ WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
+ WR3: SIZEOF(QUERY(q
+ <* near_points
+ | NOT (q\representation_item_relationship.relating_representation_item IN
+ SELF\explicit_constraint.reference_elements))) =
+ 0;
+END_ENTITY;
+
+ENTITY included_text_block
+ SUBTYPE OF (mapped_item);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN
+ TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
+END_ENTITY;
+
+ENTITY inclusion_product_concept_feature
+ SUBTYPE OF (conditional_concept_feature);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
+ WR2: SIZEOF(QUERY(cfr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
+ TYPEOF(cfr))) +
+ SIZEOF(QUERY(cfr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
+ TYPEOF(cfr))) =
+ 0;
+ WR3: SELF.condition.conditional_operator.name = 'implication';
+END_ENTITY;
+
+ENTITY inconsistent_adjacent_face_normals
+ SUBTYPE OF (erroneous_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_OR_OPEN_SHELL_SELECT']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inconsistent_curve_transition_code
+ SUBTYPE OF (erroneous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ angle_tolerance : plane_angle_measure;
+ curvature_ratio_tolerance : ratio_measure;
+ distance_tolerance : length_measure;
+ flat_curvature_radius_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_TRANSITION_LOCATOR']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inconsistent_edge_and_curve_directions
+ SUBTYPE OF (erroneous_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ distance_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inconsistent_element_reference
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
+END_ENTITY;
+
+ENTITY inconsistent_face_and_closed_shell_normals
+ SUBTYPE OF (erroneous_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inconsistent_face_and_surface_normals
+ SUBTYPE OF (erroneous_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inconsistent_surface_transition_code
+ SUBTYPE OF (erroneous_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ angle_tolerance : plane_angle_measure;
+ curvature_ratio_tolerance : ratio_measure;
+ distance_tolerance : length_measure;
+ flat_curvature_radius_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE_TRANSITION_LOCATOR']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index));
+ WR2: is_int_expr(index);
+END_ENTITY;
+
+ENTITY indirectly_selected_elements
+ SUBTYPE OF (user_selected_elements);
+ indirectly_picked_items : SET [1 : ?] OF representation_item;
+END_ENTITY;
+
+ENTITY indirectly_selected_shape_elements
+ SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements);
+ SELF\indirectly_selected_elements.indirectly_picked_items : SET [1 : ?] OF shape_representation_item;
+END_ENTITY;
+
+ENTITY indistinct_curve_knots
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY indistinct_surface_knots
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY inductance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDUCTANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY inductance_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.henry);
+END_ENTITY;
+
+ENTITY information_right
+ SUBTYPE OF (action_method);
+END_ENTITY;
+
+ENTITY information_usage_right
+ SUBTYPE OF (action_method);
+END_ENTITY;
+
+ENTITY instance_attribute_reference
+ SUBTYPE OF (variable_semantics);
+ attribute_name : attribute_identifier;
+ owning_instance : representation_item;
+END_ENTITY;
+
+ENTITY instance_report_item_with_extreme_instances
+ SUBTYPE OF (shape_data_quality_inspection_instance_report_item);
+ extreme_instances : LIST [1 : ?] OF extreme_instance;
+END_ENTITY;
+
+ENTITY instance_usage_context_assignment
+ SUBTYPE OF (product_definition_context);
+ items : SET [1 : ?] OF instance_usage_context_select;
+END_ENTITY;
+
+ENTITY instanced_feature
+ SUBTYPE OF (feature_definition, shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
+ WR2: SELF.product_definitional;
+END_ENTITY;
+
+ENTITY int_literal
+ SUBTYPE OF (literal_number);
+ SELF\literal_number.the_value : INTEGER;
+END_ENTITY;
+
+ENTITY int_numeric_variable
+ SUBTYPE OF (numeric_variable);
+END_ENTITY;
+
+ENTITY int_value_function
+ SUBTYPE OF (value_function);
+END_ENTITY;
+
+ENTITY integer_defined_function
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (numeric_defined_function);
+END_ENTITY;
+
+ENTITY integer_interval_from_min
+ SUBTYPE OF (maths_space, generic_literal);
+ min : INTEGER;
+END_ENTITY;
+
+ENTITY integer_interval_to_max
+ SUBTYPE OF (maths_space, generic_literal);
+ max : INTEGER;
+END_ENTITY;
+
+ENTITY integer_representation_item
+ SUBTYPE OF (representation_item, int_literal);
+END_ENTITY;
+
+ENTITY integer_tuple_literal
+ SUBTYPE OF (generic_literal);
+ lit_value : LIST [1 : ?] OF INTEGER;
+END_ENTITY;
+
+ENTITY interface_component
+ SUBTYPE OF (physical_component);
+END_ENTITY;
+
+ENTITY interface_connection
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY interface_connector_as_planned
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY interface_connector_as_realized
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY interface_connector_definition
+ SUBTYPE OF (product_definition);
+END_ENTITY;
+
+ENTITY interface_connector_design
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY interface_connector_design_to_planned
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_design;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : interface_connector_as_planned;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY interface_connector_design_to_realized
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_design;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : interface_connector_as_realized;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY interface_connector_occurrence
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY interface_connector_planned_to_realized
+ SUBTYPE OF (product_definition_formation_relationship);
+ SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_as_planned;
+ SELF\product_definition_formation_relationship.related_product_definition_formation : interface_connector_as_realized;
+WHERE
+ WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
+END_ENTITY;
+
+ENTITY interface_connector_version
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY interface_definition_connection
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY interface_definition_for
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY interface_specification_definition
+ SUBTYPE OF (product_definition);
+END_ENTITY;
+
+ENTITY interface_specification_version
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY interfaced_group_component
+ SUBTYPE OF (assembly_group_component);
+END_ENTITY;
+
+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;
+
+ENTITY interpolated_configuration_segment
+ SUBTYPE OF (founded_item);
+ state : mechanism_state_representation;
+ t_parameter : parameter_value;
+ interpolation : interpolation_type;
+END_ENTITY;
+
+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;
+
+ENTITY intersecting_connected_face_sets
+ SUBTYPE OF (topology_related_to_self_intersecting_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY intersecting_loops_in_face
+ SUBTYPE OF (erroneous_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY intersecting_shells_in_solid
+ SUBTYPE OF (erroneous_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_low)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_high));
+ WR2: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_high)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_item))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_high)));
+END_ENTITY;
+
+ENTITY invisibility;
+ invisible_items : SET [1 : ?] OF invisible_item;
+END_ENTITY;
+
+ENTITY iso4217_currency
+ SUBTYPE OF (currency);
+END_ENTITY;
+
+ENTITY item_defined_transformation;
+ name : label;
+ description : OPTIONAL text;
+ transform_item_1 : representation_item;
+ transform_item_2 : representation_item;
+END_ENTITY;
+
+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: NOT (SIZEOF(identified_item) = 1) OR (used_representation IN using_representations(identified_item));
+ WR2: NOT (SIZEOF(identified_item) > 1) OR (used_representation IN get_representations_for_items(identified_item));
+END_ENTITY;
+
+ENTITY item_link_motion_relationship
+ SUBTYPE OF (link_motion_relationship);
+ SELF\representation_relationship.rep_1 : shape_representation;
+ item : geometric_representation_item;
+END_ENTITY;
+
+ENTITY joggle
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ NOT ({5 <= SIZEOF(pdr.used_representation.items) <= 10}))) =
+ 0;
+ WR2: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | NOT (i.name IN
+ ['orientation',
+ 'base radius 1',
+ 'base radius 2',
+ 'direction angle 1',
+ 'direction angle 2',
+ 'height',
+ 'slope angle 1',
+ 'slope angle 2',
+ 'top radius 1',
+ 'top radius 2']))) >
+ 0))) =
+ 0;
+ WR3: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'direction angle 1') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'direction angle 2') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR5: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'height') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+ WR6: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'slope angle 1') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR7: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'slope angle 2') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR8: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'defining path') AND (sa.description = 'path feature component occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.description = 'path feature component usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
+ TYPEOF(sar.relating_shape_aspect)) AND
+ (sar.relating_shape_aspect.description = 'linear'))) =
+ 1))) =
+ 1;
+ WR9: SIZEOF(QUERY(sa
+ <* get_shape_aspects(SELF)
+ | (sa.name = 'termination') AND (sa.description = 'joggle termination occurrence') AND
+ (SIZEOF(QUERY(sar
+ <* USEDIN(sa,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'joggle termination usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.JOGGLE_TERMINATION' IN
+ TYPEOF(sar.relating_shape_aspect)))) =
+ 1))) =
+ 1;
+ WR10: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius 1') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+ WR11: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius 2') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+ WR12: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'top radius 1') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+ WR13: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'top radius 2') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+END_ENTITY;
+
+ENTITY joggle_termination
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SELF.description IN ['value termination','face termination'];
+ WR3: (SELF.description = 'value termination') XOR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) =
+ 0);
+ WR4: (SELF.description <> 'value termination') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(pdr.used_representation.items) = 2))) =
+ 1);
+ WR5: (SELF.description <> 'value termination') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'depth') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1);
+ WR6: (SELF.description <> 'value termination') OR
+ (SIZEOF(QUERY(pdr
+ <* get_shape_aspect_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'angle') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1);
+ WR7: SIZEOF(QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar.name = 'joggle termination usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.JOGGLE' IN
+ TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
+ (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'termination') AND
+ (sar.related_shape_aspect.of_shape.definition\characterized_object.description =
+ 'joggle termination occurrence'))) =
+ 1;
+END_ENTITY;
+
+ENTITY kinematic_analysis_consistency;
+ control : kinematic_control;
+ result : kinematic_analysis_result;
+WHERE
+ WR1: control.controlled_mechanism :=: result.analysed_mechanism;
+END_ENTITY;
+
+ENTITY kinematic_analysis_result;
+ analysed_mechanism : mechanism_representation;
+ result : kinematic_result;
+END_ENTITY;
+
+ENTITY kinematic_control;
+ controlled_mechanism : mechanism_representation;
+ contained_kinematic_programs : kinematic_analysis_definition;
+END_ENTITY;
+
+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;
+
+ENTITY kinematic_link
+ SUBTYPE OF (vertex);
+END_ENTITY;
+
+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;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN
+ TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY kinematic_loop
+ SUBTYPE OF (edge_loop);
+ SELF\path.edge_list : LIST [1 : ?] OF UNIQUE oriented_joint;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER' IN
+ TYPEOF(using_rep.context_of_items)))) =
+ 0;
+END_ENTITY;
+
+ENTITY kinematic_path_defined_by_curves
+ SUBTYPE OF (kinematic_path);
+ SELF\kinematic_path.segments : LIST [1 : ?] OF curve_based_path_with_orientation;
+END_ENTITY;
+
+ENTITY kinematic_path_defined_by_nodes
+ SUBTYPE OF (kinematic_path);
+ SELF\kinematic_path.segments : LIST [1 : ?] OF path_node;
+ placement_start : placement;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY kinematic_topology_structure
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : ?] OF kinematic_joint;
+WHERE
+ WR1: SIZEOF(QUERY(item <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF(item))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY kinematic_topology_tree_structure
+ SUBTYPE OF (kinematic_topology_directed_structure);
+END_ENTITY;
+
+ENTITY known_source
+ SUBTYPE OF (external_source, pre_defined_item);
+END_ENTITY;
+
+ENTITY laid_defined_transformation
+ SUBTYPE OF (transformation_with_derived_angle);
+END_ENTITY;
+
+ENTITY laid_orientation_angle
+ SUBTYPE OF (ply_orientation_angle);
+END_ENTITY;
+
+ENTITY language
+ SUBTYPE OF (group);
+WHERE
+ WR1: SELF\group.name <> '';
+END_ENTITY;
+
+ENTITY leader_curve
+ SUBTYPE OF (annotation_curve_occurrence);
+WHERE
+ WR1: SIZEOF(QUERY(ldc
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >=
+ 1;
+END_ENTITY;
+
+ENTITY leader_directed_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(QUERY(l_1
+ <* SELF\draughting_callout.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >=
+ 1;
+ WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
+END_ENTITY;
+
+ENTITY leader_directed_dimension
+ SUBTYPE OF (leader_directed_callout);
+WHERE
+ WR1: SIZEOF(QUERY(con
+ <* SELF.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) =
+ 1;
+END_ENTITY;
+
+ENTITY leader_terminator
+ SUBTYPE OF (terminator_symbol);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(SELF\terminator_symbol.annotated_curve);
+END_ENTITY;
+
+ENTITY length_function
+ SUBTYPE OF (numeric_expression, unary_generic_expression);
+ SELF\unary_generic_expression.operand : string_expression;
+END_ENTITY;
+
+ENTITY length_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')) = 0;
+END_ENTITY;
+
+ENTITY light_source_ambient
+ SUBTYPE OF (light_source);
+END_ENTITY;
+
+ENTITY light_source_directional
+ SUBTYPE OF (light_source);
+ orientation : direction;
+END_ENTITY;
+
+ENTITY light_source_positional
+ SUBTYPE OF (light_source);
+ position : cartesian_point;
+ constant_attenuation : REAL;
+ distance_attenuation : REAL;
+END_ENTITY;
+
+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;
+
+ENTITY like_expression
+ SUBTYPE OF (comparison_expression);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
+ TYPEOF(SELF\binary_generic_expression.operands[2]));
+END_ENTITY;
+
+ENTITY limits_and_fits;
+ form_variance : label;
+ zone_variance : label;
+ grade : label;
+ source : text;
+END_ENTITY;
+
+ENTITY line
+ SUBTYPE OF (curve);
+ pnt : cartesian_point;
+ dir : vector;
+WHERE
+ WR1: dir.dim = pnt.dim;
+END_ENTITY;
+
+ENTITY line_profile_tolerance
+ SUBTYPE OF (geometric_tolerance);
+END_ENTITY;
+
+ENTITY linear_array_component_definition_link
+ SUBTYPE OF (product_definition, product_definition_relationship);
+ SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;
+ SELF\product_definition_relationship.related_product_definition : linear_array_placement_group_component;
+WHERE
+ WR1: SELF\product_definition_relationship.related_product_definition :<>:
+ SELF\product_definition_relationship.relating_product_definition;
+ WR2: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK');
+END_ENTITY;
+
+ENTITY linear_array_placement_group_component
+ SUBTYPE OF (array_placement_group);
+END_ENTITY;
+
+ENTITY linear_dimension
+ SUBTYPE OF (dimension_curve_directed_callout);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+ENTITY linear_flexible_link_representation
+ SUBTYPE OF (kinematic_link_representation);
+END_ENTITY;
+
+ENTITY linear_path
+ SUBTYPE OF (path_node);
+DERIVE
+ SELF\kinematic_path_segment.transition : transition_code := continuous;
+END_ENTITY;
+
+ENTITY linear_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'profile length')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY literal_conjunction
+ SUBTYPE OF (simple_clause);
+END_ENTITY;
+
+ENTITY literal_disjunction
+ SUBTYPE OF (simple_clause);
+END_ENTITY;
+
+ENTITY literal_number
+ ABSTRACT SUPERTYPE OF (ONEOF(int_literal, real_literal))
+ SUBTYPE OF (simple_numeric_expression, generic_literal);
+ the_value : NUMBER;
+END_ENTITY;
+
+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;
+
+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;
+
+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);
+END_ENTITY;
+
+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(SELF.scaling_factors);
+END_ENTITY;
+
+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(SELF.scaling_factors);
+END_ENTITY;
+
+ENTITY location;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY location_assignment
+ ABSTRACT SUPERTYPE;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ assigned_location : location;
+ role : location_role;
+END_ENTITY;
+
+ENTITY location_in_aggregate_representation_item
+ SUBTYPE OF (compound_representation_item);
+ SELF\compound_representation_item.item_element : location_in_aggregate_item;
+END_ENTITY;
+
+ENTITY location_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ relating_location : location;
+ related_location : location;
+END_ENTITY;
+
+ENTITY location_representation_assignment
+ ABSTRACT SUPERTYPE;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ represented_location : location;
+ role : location_representation_role;
+END_ENTITY;
+
+ENTITY location_representation_role;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY location_role;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY location_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) = 1);
+ WR2: (SIZEOF(QUERY(it
+ <* SELF.items
+ | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(it))))) =
+ 0);
+END_ENTITY;
+
+ENTITY locator
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 5}))) =
+ 0;
+ WR2: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'diameter') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR3: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'tip radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'tip angle') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1;
+ WR5: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | (i.name = 'base radius') AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) <=
+ 1;
+END_ENTITY;
+
+ENTITY log_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY log10_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY log2_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY logical_literal
+ SUBTYPE OF (generic_literal);
+ lit_value : LOGICAL;
+END_ENTITY;
+
+ENTITY logical_representation_item
+ SUBTYPE OF (representation_item, logical_literal);
+END_ENTITY;
+
+ENTITY loop
+ SUPERTYPE OF (ONEOF(vertex_loop, edge_loop, poly_loop))
+ SUBTYPE OF (topological_representation_item);
+END_ENTITY;
+
+ENTITY loss_tangent_measure_with_unit
+ SUBTYPE OF (ratio_measure_with_unit);
+END_ENTITY;
+
+ENTITY lot_effectivity
+ SUBTYPE OF (effectivity);
+ effectivity_lot_id : identifier;
+ effectivity_lot_size : measure_with_unit;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+ WR2: SIZEOF(QUERY(lr
+ <* SELF\kinematic_pair.associated_link_representations_2
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY luminous_flux_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_FLUX_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY luminous_flux_unit
+ SUBTYPE OF (named_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lumen);
+END_ENTITY;
+
+ENTITY luminous_intensity_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY machining_process_executable
+ SUBTYPE OF (process_operation);
+END_ENTITY;
+
+ENTITY magnetic_flux_density_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY magnetic_flux_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY magnetic_flux_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.weber);
+END_ENTITY;
+
+ENTITY make_from_feature_relationship
+ SUBTYPE OF (component_feature_relationship);
+END_ENTITY;
+
+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;
+
+ENTITY manifold_solid_brep
+ SUBTYPE OF (solid_model);
+ outer : closed_shell;
+END_ENTITY;
+
+ENTITY manifold_subsurface_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR4: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) =
+ 0;
+ WR5: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fac)))) =
+ 0)))) =
+ 0;
+ WR6: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ NOT (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fcs.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE' IN
+ TYPEOF(oe.edge_element))))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ NOT (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fcs.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_end))))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ (NOT (SIZEOF(QUERY(bnds
+ <* fcs.bounds
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
+ TYPEOF(bnds.bound)) =
+ 1))) =
+ 0)))) =
+ 0))) =
+ 0;
+ WR10: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ (NOT (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fcs.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
+ TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
+ 1))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0;
+ WR11: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ (NOT (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fcs.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
+ TYPEOF(sc_ag)))) =
+ 0))))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0;
+ WR12: SIZEOF(QUERY(cfss
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(fcs
+ <* cfss\connected_face_set.cfs_faces
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
+ TYPEOF(fcs)) AND
+ (NOT (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fcs.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds.bound\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY manifold_surface_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN
+ TYPEOF(mr_it)))) >
+ 0)))) =
+ 0;
+ WR4: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN
+ TYPEOF(it))
+ | NOT (SIZEOF(QUERY(sh
+ <* sbsm\shell_based_surface_model.sbsm_boundary
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL'] *
+ TYPEOF(sh)) =
+ 1))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
+ TYPEOF(fa)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(bnds
+ <* fa.bounds
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
+ TYPEOF(bnds.bound)) =
+ 1))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element)))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe_cv
+ <* QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_element.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_element.edge_end))))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR12: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
+ TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) =
+ 1) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(vlp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR14: SIZEOF(QUERY(sbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(vlp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
+ TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) =
+ 1))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY mapped_item
+ SUBTYPE OF (representation_item);
+ mapping_source : representation_map;
+ mapping_target : representation_item;
+WHERE
+ WR1: acyclic_mapped_representation(SELF);
+END_ENTITY;
+
+ENTITY marking
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({2 <= SIZEOF(pdr.used_representation.items) <= 6}))) =
+ 1)) =
+ 1;
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'marking text')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'special instructions')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR4: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'font name')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'character height')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'character spacing')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR7: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied shape') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY mass_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY mated_part_relationship
+ SUBTYPE OF (group, group_assignment, product_definition_shape, product_definition_relationship, shape_aspect);
+ items : SET [0 : ?] OF product_definition;
+DERIVE
+ SELF\group_assignment.assigned_group : mated_part_relationship := SELF;
+ SELF\property_definition.definition : mated_part_relationship := SELF;
+ SELF\shape_aspect.of_shape : mated_part_relationship := SELF;
+END_ENTITY;
+
+ENTITY material_designation;
+ name : label;
+ definitions : SET [1 : ?] OF characterized_definition;
+END_ENTITY;
+
+ENTITY material_designation_characterization;
+ name : label;
+ description : text;
+ designation : material_designation;
+ property : characterized_material_property;
+END_ENTITY;
+
+ENTITY material_property
+ SUBTYPE OF (property_definition);
+UNIQUE
+ UR1: SELF\property_definition.name, SELF\property_definition.definition;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT' IN
+ TYPEOF(SELF\property_definition.definition)) OR
+ (SIZEOF(bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) -
+ QUERY(temp
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_PROPERTY_REPRESENTATION' IN
+ TYPEOF(temp)))) =
+ 0);
+END_ENTITY;
+
+ENTITY material_property_representation
+ SUBTYPE OF (property_definition_representation);
+ dependent_environment : data_environment;
+END_ENTITY;
+
+ENTITY mathematical_description;
+ described : maths_expression;
+ describing : STRING;
+ encoding : label;
+END_ENTITY;
+
+ENTITY maths_boolean_variable
+ SUBTYPE OF (maths_variable, boolean_variable);
+WHERE
+ WR1: subspace_of_es(SELF\maths_variable.values_space, es_booleans);
+END_ENTITY;
+
+ENTITY maths_enum_literal
+ SUBTYPE OF (generic_literal);
+ lit_value : maths_enum_atom;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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,
+ uniform_product_space, extended_tuple_space,
+ function_space))
+ SUBTYPE OF (generic_expression);
+END_ENTITY;
+
+ENTITY maths_string_variable
+ SUBTYPE OF (maths_variable, string_variable);
+WHERE
+ WR1: subspace_of_es(SELF\maths_variable.values_space, es_strings);
+END_ENTITY;
+
+ENTITY maths_value_precision_qualifier;
+ precision_value : maths_value;
+END_ENTITY;
+
+ENTITY maths_variable
+ SUBTYPE OF (generic_variable);
+ values_space : maths_space;
+ name : label;
+WHERE
+ WR1: expression_is_constant(values_space);
+END_ENTITY;
+
+ENTITY mating_material
+ SUBTYPE OF (property_definition, group);
+ SELF\property_definition.definition : product_definition_usage_relationship;
+UNIQUE
+ UR1: SELF\property_definition.definition;
+END_ENTITY;
+
+ENTITY mating_material_items
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : mating_material;
+ items : SET [1 : ?] OF product_definition;
+END_ENTITY;
+
+ENTITY maximum_function
+ SUBTYPE OF (multiple_arity_function_call);
+END_ENTITY;
+
+ENTITY measure_qualification;
+ name : label;
+ description : text;
+ qualified_measure : measure_with_unit;
+ qualifiers : SET [1 : ?] OF value_qualifier;
+WHERE
+ WR1: SIZEOF(QUERY(temp
+ <* qualifiers
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATHS_VALUE_PRECISION_QUALIFIER' IN
+ TYPEOF(temp)))) <
+ 2;
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\measure_qualification.qualified_measure));
+END_ENTITY;
+
+ENTITY measure_representation_item
+ SUBTYPE OF (representation_item, measure_with_unit);
+END_ENTITY;
+
+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;
+
+ENTITY mechanical_context
+ SUBTYPE OF (product_context);
+WHERE
+ WR1: SELF.discipline_type = 'mechanical';
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(rep_2)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(rep_1)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
+ WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(rep_2)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(rep_1)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
+ TYPEOF(it1\mapped_item.mapping_source.mapped_representation)))) =
+ 0;
+ WR2: SIZEOF(QUERY(pv
+ <* QUERY(mi1
+ <* QUERY(it1
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN
+ TYPEOF(it2)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
+ TYPEOF(it2)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
+ TYPEOF(it2))) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
+ TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
+ TYPEOF(it2)) AND
+ NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))))) =
+ 0))) =
+ 0;
+ WR3: (SIZEOF(QUERY(ps
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | (SIZEOF(QUERY(ps
+ <* USEDIN(ais,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
+ TYPEOF(ps.size.placement)))) =
+ 1) AND
+ (SIZEOF(QUERY(ps
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(ps.size.placement)))) =
+ 0) OR
+ ((SIZEOF(QUERY(ais
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | (SIZEOF(QUERY(ps
+ <* USEDIN(ais,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
+ TYPEOF(ps.size.placement)))) =
+ 1))) =
+ 1) AND
+ (SIZEOF(QUERY(ais
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | (SIZEOF(QUERY(ps
+ <* USEDIN(ais,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(ps.size.placement)))) =
+ 0))) =
+ 1));
+END_ENTITY;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
+ TYPEOF(si\styled_item.item)))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
+ TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation))))) =
+ 0;
+ WR3: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(pss
+ <* psa.styles
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'] *
+ TYPEOF(pss)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psbc
+ <* QUERY(psa
+ <* si\styled_item.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
+ TYPEOF(psa))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION'] *
+ TYPEOF(psbc\presentation_style_by_context.style_context)) =
+ 1))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ps
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN
+ TYPEOF(pss))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(ps\point_style.marker_size)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(ps\point_style.marker_colour)) =
+ 1)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(cs
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(pss))
+ | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(cs\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(cs\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(cs\curve_style.curve_font)) =
+ 1)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_SIDE_STYLE' IN
+ TYPEOF(ssu\surface_style_usage.style)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY'] *
+ TYPEOF(sses)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sspl
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE' IN
+ TYPEOF(sses))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sscg
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID' IN
+ TYPEOF(sses))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sssh
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE' IN
+ TYPEOF(sses))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sssc
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE' IN
+ TYPEOF(sses))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(ssbd
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY' IN
+ TYPEOF(sses))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) =
+ 1)))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY mechanical_design_presentation_representation_with_draughting
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : ?] OF camera_model_d3;
+END_ENTITY;
+
+ENTITY mechanical_design_requirement_item_association
+ SUBTYPE OF (pmi_requirement_item_association);
+ SELF\pmi_requirement_item_association.requirement : requirement_assignment;
+END_ENTITY;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
+ TYPEOF(it1\mapped_item.mapping_source.mapped_representation)))))) =
+ 0;
+ WR2: SIZEOF(QUERY(pv
+ <* QUERY(mi1
+ <* QUERY(it1
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN
+ TYPEOF(it2)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
+ TYPEOF(it2)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
+ TYPEOF(it2))) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
+ TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
+ TYPEOF(it2)) AND
+ NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
+ TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))))) =
+ 0))) =
+ 0;
+ WR3: (SIZEOF(QUERY(ps
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SET' IN
+ TYPEOF(ais.in_set))
+ | SIZEOF(QUERY(ps
+ <* USEDIN(pset,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
+ TYPEOF(psize.size.placement))) =
+ 1) AND
+ (SIZEOF(QUERY(pset
+ <* QUERY(ais
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SET' IN
+ TYPEOF(ais.in_set))
+ | SIZEOF(QUERY(psize
+ <* USEDIN(pset,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
+ TYPEOF(psize.size.placement)))) =
+ 0)) =
+ 0);
+ WR5: SIZEOF(QUERY(pv
+ <* QUERY(mi1
+ <* QUERY(it1
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
+ TYPEOF(mi1\mapped_item.mapping_source.mapped_representation))
+ | NOT (SIZEOF(QUERY(ci
+ <* pv\mapped_item.mapping_source.mapped_representation\representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
+ TYPEOF(ci)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_WITH_LIGHT_SOURCES'] *
+ TYPEOF(ci\mapped_item.mapping_source.mapping_origin)) =
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
+ TYPEOF(si\styled_item.item)))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
+ TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation))))) =
+ 0;
+ WR3: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(pss
+ <* psa.styles
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'] *
+ TYPEOF(pss)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psbc
+ <* QUERY(psa
+ <* si\styled_item.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
+ TYPEOF(psa))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION'] *
+ TYPEOF(psbc\presentation_style_by_context.style_context)) =
+ 1))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ps
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN
+ TYPEOF(pss))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MARKER_TYPE' IN
+ TYPEOF(ps\point_style.marker)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(ps\point_style.marker_size)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(ps\point_style.marker_colour)) =
+ 1)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(cs
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(pss))
+ | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(cs\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(cs\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(cs\curve_style.curve_font)) =
+ 1)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_SIDE_STYLE' IN
+ TYPEOF(ssu\surface_style_usage.style)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_RENDERING'] *
+ TYPEOF(sses)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(si
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(ssfa
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA' IN
+ TYPEOF(sses))
+ | NOT (SIZEOF(QUERY(fss
+ <* ssfa\surface_style_fill_area.fill_area.fill_styles
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_COLOUR' IN
+ TYPEOF(fss)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sspl
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE' IN
+ TYPEOF(sses))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font)) =
+ 1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
+ TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sscg
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID' IN
+ TYPEOF(sses))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_font)) =
+ 1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
+ TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sssh
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE' IN
+ TYPEOF(sses))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) =
+ 1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
+ TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(sssc
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE' IN
+ TYPEOF(sses))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font)) =
+ 1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
+ TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(ssbd
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY' IN
+ TYPEOF(sses))
+ | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) =
+ 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) =
+ 1)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
+ TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
+ | NOT (SIZEOF(QUERY(psa
+ <* si\styled_item.styles
+ | NOT (SIZEOF(QUERY(ssu
+ <* QUERY(pss
+ <* psa.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
+ TYPEOF(pss))
+ | NOT (SIZEOF(QUERY(ssre
+ <* QUERY(sses
+ <* ssu\surface_style_usage.style\surface_side_style.styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_RENDERING' IN
+ TYPEOF(sses))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
+ TYPEOF(ssre\surface_style_rendering.surface_colour)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+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: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_STRUCTURE' IN
+ TYPEOF(represented_topology)) AND
+ (represented_joints :=: represented_topology.items)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE' IN
+ TYPEOF(represented_topology)) AND
+ (represented_joints :=: get_kinematic_joints_from_oriented_joints(represented_topology.items))) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE' IN
+ TYPEOF(represented_topology)) AND
+ (represented_joints :=: get_kinematic_joints_from_kinematic_loops(represented_topology.items)));
+END_ENTITY;
+
+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;
+
+ENTITY message_contents_assignment
+ SUBTYPE OF (group_assignment);
+ items : SET [1 : ?] OF representation;
+ SELF\group_assignment.assigned_group : message_contents_group;
+DERIVE
+ message_contents_group : message_contents_group := SELF\group_assignment.assigned_group;
+END_ENTITY;
+
+ENTITY message_contents_group
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY message_relationship
+ SUBTYPE OF (product_relationship);
+ SELF\product_relationship.relating_product : structured_message;
+ SELF\product_relationship.related_product : structured_message;
+DERIVE
+ related_message : structured_message := SELF\product_relationship.related_product;
+ relating_message : structured_message := SELF\product_relationship.relating_product;
+END_ENTITY;
+
+ENTITY min_and_major_ply_orientation_basis
+ SUBTYPE OF (representation_item_relationship, geometric_representation_item);
+ SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d;
+ SELF\representation_item_relationship.related_representation_item : axis2_placement_3d;
+DERIVE
+ major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item;
+ minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item;
+END_ENTITY;
+
+ENTITY minimum_function
+ SUBTYPE OF (multiple_arity_function_call);
+END_ENTITY;
+
+ENTITY minus_expression
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+ENTITY minus_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY mismatch_of_arcwise_connected_curves
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_edge_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_edge_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
+ ddns_point_on_curve];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
+ 'discretization_distance_tolerance');
+END_ENTITY;
+
+ENTITY mismatch_of_arcwise_connected_surfaces
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
+ ddns_point_on_surface];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
+ 'discretization_distance_tolerance');
+END_ENTITY;
+
+ENTITY mismatch_of_arcwise_connected_surfaces_boundary
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
+ a3m_equivalence_inspection_requirement_with_values);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
+ ddns_point_on_curve];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
+ (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
+ 'discretization_distance_tolerance');
+END_ENTITY;
+
+ENTITY mismatch_of_component
+ SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_assembly_component_usage];
+END_ENTITY;
+
+ENTITY mismatch_of_edges
+ SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_edge_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_edge,
+ ddns_several_edges];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY mismatch_of_faces
+ SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_face,
+ ddns_several_faces];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY mismatch_of_point_cloud_and_related_geometry
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [2 : 2] OF a3ms_element_type_name := [etns_connected_edge_set,
+ etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_point_cloud_dataset];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [3 : 3] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
+ ddns_point_on_curve,
+ ddns_point_on_surface];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [1 : 1] OF a3ms_accuracy_type_name := [atns_length_measure];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY mismatch_of_points
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_vertex_point];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_vertex_point];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_length_measure;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_no_element];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
+ (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
+ SELF.measured_data_type);
+END_ENTITY;
+
+ENTITY mismatch_of_underlying_edge_geometry
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_edge];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY mismatch_of_underlying_face_geometry
+ SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_face];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY missing_assembly_constraint
+ SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ma_detected_difference_type_name := [ddna_no_element,
+ ddna_binary_assembly_constraint];
+END_ENTITY;
+
+ENTITY missing_component
+ SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ma_detected_difference_type_name := [ddna_no_element,
+ ddna_assembly_component_usage];
+END_ENTITY;
+
+ENTITY missing_edge
+ SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_edge_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_no_element,
+ ddns_edge];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY missing_face
+ SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
+ SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
+DERIVE
+ SELF\a3m_equivalence_criterion.compared_element_types : LIST [1 : 1] OF a3ms_element_type_name := [etns_connected_face_set];
+ SELF\a3m_equivalence_criterion.measured_data_type : a3ms_measured_data_type_name := mdns_boolean_value;
+ SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_no_element,
+ ddns_face];
+ SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ms_accuracy_type_name := [];
+END_ENTITY;
+
+ENTITY mod_expression
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+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;
+
+ENTITY modified_geometric_tolerance
+ SUBTYPE OF (geometric_tolerance);
+ modifier : limit_condition;
+END_ENTITY;
+
+ENTITY modified_pattern
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) =
+ 1) AND
+ (fcr.description = 'base pattern'))) =
+ 1;
+ WR3: SIZEOF(QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (SIZEOF(QUERY(msar
+ <* USEDIN(sar.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OFFSET_MEMBERSHIP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OMIT_MEMBERSHIP'] *
+ TYPEOF(sar)) =
+ 1) AND
+ (sar.description = 'modified pattern') AND (sar :<>: msar))) >=
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY modified_solid
+ ABSTRACT SUPERTYPE OF (ONEOF(edge_blended_solid, sculptured_solid, shelled_solid,
+ modified_solid_with_placed_configuration))
+ SUBTYPE OF (solid_model);
+ rationale : text;
+ base_solid : base_solid_select;
+END_ENTITY;
+
+ENTITY modified_solid_with_placed_configuration
+ ABSTRACT SUPERTYPE OF (ONEOF(solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern))
+ SUBTYPE OF (modified_solid);
+ placing : axis2_placement_3d;
+END_ENTITY;
+
+ENTITY modify_element
+ SUBTYPE OF (change_element);
+END_ENTITY;
+
+ENTITY moments_of_inertia_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) = 1) AND
+ (SIZEOF(QUERY(i
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i.name = 'moments of inertia matrix'))) =
+ 1);
+ WR2: SIZEOF(QUERY(i
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIST_REPRESENTATION_ITEM' IN
+ TYPEOF(i\compound_representation_item.item_element)) AND
+ value_range_aggregate_rep_item(i\compound_representation_item.item_element))) =
+ 1;
+END_ENTITY;
+
+ENTITY mult_expression
+ SUBTYPE OF (multiple_arity_numeric_expression);
+END_ENTITY;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+ 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;
+ root : product_definition := relating_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;
+
+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;
+
+ENTITY multiple_arity_function_call
+ ABSTRACT SUPERTYPE OF (ONEOF(maximum_function, minimum_function))
+ SUBTYPE OF (multiple_arity_numeric_expression);
+END_ENTITY;
+
+ENTITY multiple_arity_generic_expression
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (generic_expression);
+ operands : LIST [2 : ?] OF generic_expression;
+END_ENTITY;
+
+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;
+
+ENTITY multiply_defined_cartesian_points
+ SUBTYPE OF (multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_curves
+ SUBTYPE OF (multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_directions
+ SUBTYPE OF (multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY multiply_defined_edges
+ SUBTYPE OF (topology_related_to_multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_faces
+ SUBTYPE OF (topology_related_to_multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_curves, multiply_defined_surfaces, multiply_defined_cartesian_points,
+ multiply_defined_directions, multiply_defined_placements))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY multiply_defined_placements
+ SUBTYPE OF (multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_LENGTH_PAIR');
+ WR4: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT']);
+ WR5: validate_locations_of_extreme_value_type(SELF, []);
+ WR6: validate_accuracy_types(SELF, []);
+ WR7: SIZEOF(QUERY(sdqr
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(sdqr)) AND
+ (SIZEOF(QUERY(sdqiir
+ <* bag_to_set(USEDIN(sdqr,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(sdqiir)) AND
+ (SIZEOF(QUERY(sdqiri
+ <* sdqiir.inspected_instances
+ | (TYPEOF(sdqiri.inspected_elements[1]) <>
+ TYPEOF(sdqiri.inspected_elements[2])))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY multiply_defined_solids
+ SUBTYPE OF (inapt_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_surfaces
+ SUBTYPE OF (multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY multiply_defined_vertices
+ SUBTYPE OF (topology_related_to_multiply_defined_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY name_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_name : label;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY name_attribute;
+ attribute_value : label;
+ named_item : name_attribute_select;
+END_ENTITY;
+
+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;
+
+ENTITY narrow_surface_patch
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ width_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY near_point_relationship
+ SUBTYPE OF (representation_item_relationship);
+ SELF\representation_item_relationship.relating_representation_item : curve_or_surface_constraint_element;
+ SELF\representation_item_relationship.related_representation_item : point;
+END_ENTITY;
+
+ENTITY nearly_degenerate_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(small_area_surface, short_length_curve, entirely_narrow_surface))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY nearly_degenerate_surface_boundary
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDARY_CURVE_OF_B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY nearly_degenerate_surface_patch
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY neutral_sketch_representation
+ SUBTYPE OF (shape_representation);
+ neutral_sketch_semantics : curves_or_area;
+ SELF\representation.items : SET [1 : ?] OF sketch_element_select;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* items
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
+ TYPEOF(q)) AND
+ (q\geometric_representation_item.dim = 3)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY ngon_closed_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'corner radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY non_agreed_accuracy_parameter_usage
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT']);
+END_ENTITY;
+
+ENTITY non_agreed_scale_usage
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_TRANSFORMATION_OPERATOR_3D']);
+END_ENTITY;
+
+ENTITY non_agreed_unit_usage
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT']);
+END_ENTITY;
+
+ENTITY non_manifold_at_edge
+ SUBTYPE OF (inapt_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY non_manifold_at_vertex
+ SUBTYPE OF (inapt_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY non_manifold_surface_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1)) >
+ 0;
+ WR3: SIZEOF(QUERY(mi
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN
+ TYPEOF(mr_it)))) >
+ 0)))) =
+ 0;
+ WR4: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE'] *
+ TYPEOF(fa)) =
+ 1))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR5: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
+ TYPEOF(fa)))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN
+ TYPEOF(fa)))
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(bnds
+ <* fa.bounds
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
+ TYPEOF(bnds.bound)) =
+ 1))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element)))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe_cv
+ <* QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(oe.edge_element))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_element.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(oe.edge_element.edge_end))))) =
+ 0))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR12: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(elp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(QUERY(oe
+ <* elp_fbnds\path.edge_list
+ | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
+ TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) =
+ 1) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(vlp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR14: SIZEOF(QUERY(fbsm
+ <* QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
+ TYPEOF(fa)) OR
+ (SIZEOF(QUERY(vlp_fbnds
+ <* QUERY(bnds
+ <* fa.bounds
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(bnds.bound))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
+ TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) =
+ 1))) =
+ 0)))) =
+ 0))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY non_referenced_coordinate_system
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D']);
+END_ENTITY;
+
+ENTITY non_smooth_geometry_transition_across_edge
+ ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuity_between_adjacent_faces, g2_discontinuity_between_adjacent_faces))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY non_uniform_zone_definition
+ SUBTYPE OF (tolerance_zone_definition);
+END_ENTITY;
+
+ENTITY not_expression
+ SUBTYPE OF (unary_boolean_expression);
+ SELF\unary_generic_expression.operand : boolean_expression;
+END_ENTITY;
+
+ENTITY null_representation_item
+ SUBTYPE OF (representation_item);
+END_ENTITY;
+
+ENTITY numeric_defined_function
+ ABSTRACT SUPERTYPE OF (ONEOF(integer_defined_function, real_defined_function))
+ SUBTYPE OF (numeric_expression, defined_function);
+END_ENTITY;
+
+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;
+
+ENTITY numeric_variable
+ SUPERTYPE OF (ONEOF(int_numeric_variable, real_numeric_variable))
+ SUBTYPE OF (simple_numeric_expression, variable);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY object_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY odd_function
+ SUBTYPE OF (unary_boolean_expression);
+ SELF\unary_generic_expression.operand : numeric_expression;
+WHERE
+ WR1: is_int_expr(operand);
+END_ENTITY;
+
+ENTITY offset_curve_2d
+ SUBTYPE OF (curve);
+ basis_curve : curve;
+ distance : length_measure;
+ self_intersect : LOGICAL;
+WHERE
+ WR1: basis_curve.dim = 2;
+END_ENTITY;
+
+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;
+
+ENTITY offset_surface
+ SUBTYPE OF (surface);
+ basis_surface : surface;
+ distance : length_measure;
+ self_intersect : LOGICAL;
+END_ENTITY;
+
+ENTITY one_direction_repeat_factor
+ SUBTYPE OF (geometric_representation_item);
+ repeat_factor : vector;
+END_ENTITY;
+
+ENTITY open_closed_shell
+ SUBTYPE OF (erroneous_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY open_edge_loop
+ SUBTYPE OF (erroneous_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+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;
+
+ENTITY open_path_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY open_shell
+ SUBTYPE OF (connected_face_set);
+END_ENTITY;
+
+ENTITY or_expression
+ SUBTYPE OF (multiple_arity_boolean_expression);
+END_ENTITY;
+
+ENTITY ordinal_date
+ SUBTYPE OF (date);
+ day_component : day_in_year_number;
+WHERE
+ WR1: (NOT leap_year(SELF.year_component) AND {1 <= day_component <= 365}) OR
+ (leap_year(SELF.year_component) AND {1 <= day_component <= 366});
+END_ENTITY;
+
+ENTITY ordinate_dimension
+ SUBTYPE OF (projection_directed_callout);
+END_ENTITY;
+
+ENTITY organization;
+ id : OPTIONAL identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY organization_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_organization : organization;
+ role : organization_role;
+END_ENTITY;
+
+ENTITY organization_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_organization : organization;
+ related_organization : organization;
+END_ENTITY;
+
+ENTITY organization_role;
+ name : label;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY organization_type;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY organization_type_assignment
+ ABSTRACT SUPERTYPE;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ assigned_organization_type : organization_type;
+ role : organization_type_role;
+END_ENTITY;
+
+ENTITY organization_type_role;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY organizational_address
+ SUBTYPE OF (address);
+ organizations : SET [1 : ?] OF organization;
+ description : OPTIONAL text;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY organizational_project_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_organizational_project : organizational_project;
+ role : organizational_project_role;
+END_ENTITY;
+
+ENTITY organizational_project_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_organizational_project : organizational_project;
+ related_organizational_project : organizational_project;
+END_ENTITY;
+
+ENTITY organizational_project_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
+ TYPEOF(SELF.closed_shell_element));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF(SELF.edge_element));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF(SELF.face_element));
+END_ENTITY;
+
+ENTITY oriented_joint
+ SUBTYPE OF (oriented_edge);
+ SELF\oriented_edge.edge_element : kinematic_joint;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF(SELF.open_shell_element));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(SELF.path_element));
+END_ENTITY;
+
+ENTITY oriented_surface
+ SUBTYPE OF (surface);
+ orientation : BOOLEAN;
+END_ENTITY;
+
+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;
+
+ENTITY outer_boundary_curve
+ SUBTYPE OF (boundary_curve);
+END_ENTITY;
+
+ENTITY outer_round
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({2 <= 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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'length')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'v-shape boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'reduced size occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'taper usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'feature length')))) <=
+ 1)))) =
+ 0)))) =
+ 0));
+END_ENTITY;
+
+ENTITY outside_profile
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | NOT (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile floor usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE' IN
+ TYPEOF(sdr.related_shape_aspect.of_shape.definition))))) =
+ 1))) =
+ 0))) =
+ 0);
+ WR5: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description =
+ 'path feature component usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'complex boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
+ TYPEOF(sdr.relating_shape_aspect)) =
+ 1))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR7: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'partial circular boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR8: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'closed circular boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR9: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'open rectangular boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR10: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'closed rectangular boundary occurrence'))) =
+ 1))) =
+ 0)) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1))) =
+ 1))) =
+ 0);
+ WR11: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY over_riding_styled_item
+ SUBTYPE OF (styled_item);
+ over_ridden_style : styled_item;
+END_ENTITY;
+
+ENTITY over_used_vertex
+ SUBTYPE OF (inapt_topology);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY overcomplex_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(excessively_high_degree_curve, excessively_high_degree_surface,
+ surface_with_excessive_patches_in_one_direction, curve_with_excessive_segments,
+ high_degree_linear_curve, high_degree_planar_surface, high_degree_conic,
+ high_degree_axi_symmetric_surface))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY overcomplex_topology_and_geometry_relationship
+ ABSTRACT SUPERTYPE OF (ONEOF(unused_patches, edge_with_excessive_segments,
+ face_surface_with_excessive_patches_in_one_direction))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY overlapping_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_curves, partly_overlapping_surfaces))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY package_product_concept_feature
+ SUBTYPE OF (product_concept_feature);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(SELF));
+ WR2: SIZEOF(QUERY(cfr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
+ TYPEOF(cfr)) AND
+ (SIZEOF(QUERY(ipcf
+ <* USEDIN(cfr,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE.CONDITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN
+ TYPEOF(ipcf))) =
+ 1))) >
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY parabola
+ SUBTYPE OF (conic);
+ focal_dist : length_measure;
+WHERE
+ WR1: focal_dist <> 0.0;
+END_ENTITY;
+
+ENTITY parallel_assembly_constraint
+ SUBTYPE OF (binary_assembly_constraint, parallel_geometric_constraint);
+END_ENTITY;
+
+ENTITY parallel_assembly_constraint_with_dimension
+ SUBTYPE OF (parallel_assembly_constraint, pgc_with_dimension);
+END_ENTITY;
+
+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;
+
+ENTITY parallel_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF linear_geometry_constraint_element;
+END_ENTITY;
+
+ENTITY parallel_offset
+ SUBTYPE OF (derived_shape_aspect);
+ offset : measure_with_unit;
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
+END_ENTITY;
+
+ENTITY parallel_offset_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF curve_or_surface_constraint_element;
+ offset_type : parallel_offset_type;
+WHERE
+ WR1: NOT (((offset_type = curve_2d_offset) OR (offset_type = curve_3d_offset)) AND
+ (SIZEOF(QUERY(q
+ <* (SELF\explicit_constraint.constrained_elements +
+ SELF\explicit_constraint.reference_elements)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(q))) >
+ 0));
+ WR2: NOT ((offset_type = surface_offset) AND
+ (SIZEOF(QUERY(q
+ <* (SELF\explicit_constraint.constrained_elements +
+ SELF\explicit_constraint.reference_elements)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(q))) >
+ 0));
+END_ENTITY;
+
+ENTITY parallelism_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY parametric_representation_context
+ SUBTYPE OF (representation_context);
+END_ENTITY;
+
+ENTITY partial_circular_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'sweep angle')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY partial_document_with_structured_text_representation_assignment
+ SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
+END_ENTITY;
+
+ENTITY partly_overlapping_curves
+ SUBTYPE OF (overlapping_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY partly_overlapping_edges
+ SUBTYPE OF (topology_related_to_overlapping_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY partly_overlapping_faces
+ SUBTYPE OF (topology_related_to_overlapping_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+ENTITY partly_overlapping_solids
+ SUBTYPE OF (inapt_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+ENTITY partly_overlapping_surfaces
+ SUBTYPE OF (overlapping_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+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;
+
+ENTITY path_area_with_parameters
+ SUBTYPE OF (complex_area, mapped_item);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF\mapped_item.mapping_target);
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_PARAMETERS_REPRESENTATION' IN
+ TYPEOF(SELF\mapped_item.mapping_source\representation_map.mapped_representation);
+ WR3: SELF\mapped_item.mapping_source\representation_map.mapping_origin\representation_item.name = 'curve width';
+END_ENTITY;
+
+ENTITY path_feature_component
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0));
+ WR4: ((SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR5: ((NOT (SELF.description = 'partial circular')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0));
+ WR13: ((NOT (SELF.description = 'complex')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+ENTITY path_parameter_representation_context
+ SUBTYPE OF (geometric_representation_context, parametric_representation_context);
+END_ENTITY;
+
+ENTITY path_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: (SIZEOF(SELF.items) >= 1);
+ WR2: (SIZEOF(QUERY(i
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH'] *
+ TYPEOF(i)) =
+ 1))) >=
+ 1);
+END_ENTITY;
+
+ENTITY pattern_offset_membership
+ SUBTYPE OF (feature_component_relationship);
+WHERE
+ WR1: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.relating_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | ((SIZEOF(QUERY(pdr
+ <* (QUERY(pd
+ <* USEDIN(fcr.related_shape_aspect.of_shape,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
+ TYPEOF(pdr.definition)) =
+ 1)) =
+ 0)))) =
+ 0);
+ WR2: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | (fcr.description = 'modified pattern') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
+ TYPEOF(fcr.relating_shape_aspect)))) >=
+ 1);
+ WR3: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (NOT (SIZEOF(QUERY(modfcr
+ <* QUERY(modsar
+ <* USEDIN(fcr.relating_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
+ 2)))) =
+ 0));
+ WR5: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
+ 1)))) =
+ 0));
+ WR6: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (NOT (SIZEOF(pdr.used_representation.items) = 2)))) =
+ 0)))) =
+ 0));
+ WR7: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'index number')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR8: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
+ TYPEOF(it)) AND
+ (it.name = 'offset')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR9: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)))) =
+ 0)))) =
+ 0));
+ WR10: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'row index')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR11: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'column index')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR12: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(it)) AND
+ (it.name = 'offset distance')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR13: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'offset direction')))) =
+ 1)))) =
+ 0));
+END_ENTITY;
+
+ENTITY pattern_omit_membership
+ SUBTYPE OF (feature_component_relationship);
+WHERE
+ WR1: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.relating_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | ((SIZEOF(QUERY(pdr
+ <* (QUERY(pd
+ <* USEDIN(fcr.related_shape_aspect.of_shape,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
+ TYPEOF(pdr.definition)) =
+ 1)) =
+ 0)))) =
+ 0);
+ WR2: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | (fcr.description = 'modified pattern') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
+ TYPEOF(fcr.relating_shape_aspect)))) >=
+ 1);
+ WR3: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (sar :<>: SELF)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (NOT (SIZEOF(QUERY(modfcr
+ <* QUERY(modsar
+ <* USEDIN(fcr.relating_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
+ 1)))) =
+ 0);
+ WR5: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (NOT (SIZEOF(pdr.used_representation.items) = 1)))) =
+ 0)))) =
+ 0));
+ WR6: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'index number')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR7: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (NOT (SIZEOF(pdr.used_representation.items) = 2)))) =
+ 0)))) =
+ 0));
+ WR8: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'row index')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR9: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
+ TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF.related_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'column index')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+END_ENTITY;
+
+ENTITY pcurve
+ SUBTYPE OF (curve);
+ basis_surface : surface;
+ reference_to_curve : definitional_representation;
+WHERE
+ WR1: SIZEOF(reference_to_curve\representation.items) = 1;
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
+ WR3: reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
+END_ENTITY;
+
+ENTITY pdgc_with_dimension
+ SUBTYPE OF (point_distance_geometric_constraint);
+ distance_value : non_negative_length_measure;
+END_ENTITY;
+
+ENTITY perpendicular_assembly_constraint
+ SUBTYPE OF (binary_assembly_constraint, perpendicular_geometric_constraint);
+END_ENTITY;
+
+ENTITY perpendicular_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : 2] OF linear_geometry_constraint_element;
+WHERE
+ WR1: NOT ((SIZEOF(SELF\explicit_constraint.reference_elements) = 2) AND
+ NOT ((SIZEOF(QUERY(q
+ <* SELF\explicit_constraint.constrained_elements +
+ SELF\explicit_constraint.reference_elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' IN TYPEOF(q))) =
+ SIZEOF(SELF\explicit_constraint.reference_elements +
+ SELF\explicit_constraint.constrained_elements)) XOR
+ (SIZEOF(QUERY(q
+ <* SELF\explicit_constraint.constrained_elements +
+ SELF\explicit_constraint.reference_elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(q))) =
+ SIZEOF(SELF\explicit_constraint.reference_elements +
+ SELF\explicit_constraint.constrained_elements))));
+ WR2: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) IN [2,3]);
+ WR3: NOT ((SIZEOF(SELF\explicit_constraint.reference_elements) = 0) AND
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 3)) AND
+ NOT ((SIZEOF(QUERY(q
+ <* SELF\explicit_constraint.constrained_elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' IN TYPEOF(q))) =
+ 3) XOR
+ (SIZEOF(QUERY(q
+ <* SELF\explicit_constraint.constrained_elements
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(q))) =
+ 3));
+END_ENTITY;
+
+ENTITY perpendicular_to
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
+END_ENTITY;
+
+ENTITY perpendicularity_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+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;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON')
+ | pao.the_organization :=: SELF\organizational_address.organizations[1])) =
+ 1;
+END_ENTITY;
+
+ENTITY person_and_organization_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_person_and_organization : person_and_organization;
+ role : person_and_organization_role;
+END_ENTITY;
+
+ENTITY person_and_organization_role;
+ name : label;
+DERIVE
+ description : text := get_description_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY personal_address
+ SUBTYPE OF (address);
+ people : SET [1 : ?] OF person;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY pgc_with_dimension
+ SUBTYPE OF (parallel_geometric_constraint);
+ distance_value : non_negative_length_measure;
+ negative_direction : BOOLEAN;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
+ WR2: SIZEOF(QUERY(q
+ <* (SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements)
+ | SIZEOF(TYPEOF(q) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR']) >
+ 0)) =
+ 0;
+END_ENTITY;
+
+ENTITY physical_breakdown_context
+ SUBTYPE OF (breakdown_context);
+END_ENTITY;
+
+ENTITY physical_component
+ SUBTYPE OF (assembly_component);
+END_ENTITY;
+
+ENTITY physical_component_feature
+ SUPERTYPE OF ((ONEOF(physical_component_terminal, physical_component_interface_terminal)))
+ SUBTYPE OF (component_feature);
+END_ENTITY;
+
+ENTITY physical_component_interface_terminal
+ SUBTYPE OF (physical_component_feature);
+END_ENTITY;
+
+ENTITY physical_component_terminal
+ SUBTYPE OF (component_terminal, physical_component_feature);
+END_ENTITY;
+
+ENTITY physical_element_usage
+ SUBTYPE OF (breakdown_element_usage);
+END_ENTITY;
+
+ENTITY picture_representation
+ SUBTYPE OF (presentation_view);
+ SELF\representation.items : SET [2 : ?] OF picture_representation_item_select;
+INVERSE
+ size : presentation_size FOR unit;
+WHERE
+ WR1: SIZEOF(QUERY(item <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1;
+ WR2: SIZEOF(QUERY(se
+ <* QUERY(item
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PICTURE_REPRESENTATION_ITEM' IN
+ TYPEOF(se\styled_item.item)))) =
+ 0;
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1;
+ WR3: valid_datum_target_parameters(SELF);
+END_ENTITY;
+
+ENTITY placed_feature
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+ENTITY placement
+ SUPERTYPE OF (ONEOF(axis1_placement, axis2_placement_2d, axis2_placement_3d))
+ SUBTYPE OF (geometric_representation_item);
+ location : cartesian_point;
+END_ENTITY;
+
+ENTITY planar_box
+ SUBTYPE OF (planar_extent);
+ placement : axis2_placement;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY planar_extent
+ SUBTYPE OF (geometric_representation_item);
+ size_in_x : length_measure;
+ size_in_y : length_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY planar_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(SELF.items) = 1;
+ WR2: SIZEOF(QUERY(it <* SELF.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(it)))) = 1;
+END_ENTITY;
+
+ENTITY plane
+ SUBTYPE OF (elementary_surface);
+END_ENTITY;
+
+ENTITY plane_angle_and_length_pair
+ SUBTYPE OF (founded_item);
+ plane_angle_value : plane_angle_measure;
+ length_value : length_measure;
+END_ENTITY;
+
+ENTITY plane_angle_and_ratio_pair
+ SUBTYPE OF (founded_item);
+ plane_angle_value : plane_angle_measure;
+ ratio_value : ratio_measure;
+END_ENTITY;
+
+ENTITY plane_angle_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY plus_expression
+ SUBTYPE OF (multiple_arity_numeric_expression);
+END_ENTITY;
+
+ENTITY plus_minus_tolerance;
+ range : tolerance_method_definition;
+ toleranced_dimension : dimensional_characteristic;
+UNIQUE
+ UR1: toleranced_dimension;
+END_ENTITY;
+
+ENTITY ply_angle_representation
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : 1] OF measure_representation_item;
+END_ENTITY;
+
+ENTITY ply_laminate_sequence_definition
+ SUBTYPE OF (product_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
+ TYPEOF(pdr))) >
+ 0;
+END_ENTITY;
+
+ENTITY ply_orientation_angle
+ SUBTYPE OF (representation_relationship);
+ SELF\representation_relationship.rep_1 : reinforcement_orientation_basis;
+ SELF\representation_relationship.rep_2 : ply_angle_representation;
+END_ENTITY;
+
+ENTITY pmi_requirement_item_association
+ SUBTYPE OF (item_identified_representation_usage);
+ requirement : characterized_object;
+END_ENTITY;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'pocket depth occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ (sar.name = 'pocket depth') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1;
+ WR4: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({1 <= SIZEOF(pdr.used_representation.items) <= 2}))) =
+ 1)) =
+ 1;
+ WR5: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'closed boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'open boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect))))) =
+ 1)))) =
+ 1)))) =
+ 0));
+ WR10: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'bottom condition occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'pocket bottom usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'change in boundary occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar.description = 'taper usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'enclosed boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'bottom condition occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'pocket bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'bottom condition occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'pocket bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (csa.name = 'uncut volume') AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'change in boundary occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((sar.description = 'taper usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY pocket_bottom
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0));
+ WR7: (NOT (SELF.description IN ['planar','complex']) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 0))) =
+ 0));
+ WR9: (NOT (SELF.description IN ['planar','complex'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius'))) <=
+ 1))) =
+ 0))) =
+ 0);
+ WR10: SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (sar.description = 'pocket bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1;
+ WR11: ((NOT (SELF.description IN ['planar','complex'])) OR
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (sar.description = 'pocket bottom usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY pogc_with_dimension
+ SUBTYPE OF (parallel_offset_geometric_constraint);
+ offset_value : positive_length_measure;
+ offset_direction_constrained : BOOLEAN;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
+ WR2: (NOT (offset_direction_constrained = true) AND
+ ((offset_type = curve_2d_offset) OR (offset_type = surface_offset)));
+END_ENTITY;
+
+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;
+
+ENTITY point_and_vector
+ SUBTYPE OF (compound_representation_item, geometric_representation_item);
+ SELF\compound_representation_item.item_element : point_and_vector_members;
+END_ENTITY;
+
+ENTITY point_array
+ SUBTYPE OF (compound_representation_item, geometric_representation_item);
+ SELF\compound_representation_item.item_element : point_array_members;
+END_ENTITY;
+
+ENTITY point_cloud_dataset
+ SUBTYPE OF (scanned_data_item);
+ point_coordinates : LIST [1 : ?] OF LIST [3 : 3] OF REAL;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY point_distance_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF point;
+ SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
+END_ENTITY;
+
+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;
+
+ENTITY point_on_curve
+ SUBTYPE OF (point);
+ basis_curve : curve;
+ point_parameter : parameter_value;
+END_ENTITY;
+
+ENTITY point_on_edge_curve
+ SUBTYPE OF (point_on_curve);
+ basis_edge_curve : edge_curve;
+DERIVE
+ SELF\point_on_curve.basis_curve : curve := SELF.basis_edge_curve.edge_geometry;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_edge_curve) * relating_shape_representations_of_extreme_values(SELF)) >
+ 0;
+END_ENTITY;
+
+ENTITY point_on_face_surface
+ SUBTYPE OF (point_on_surface);
+ basis_face_surface : face_surface;
+DERIVE
+ SELF\point_on_surface.basis_surface : surface := SELF.basis_face_surface.face_geometry;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_face_surface) *
+ relating_shape_representations_of_extreme_values(SELF)) >
+ 0;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY point_on_surface
+ SUBTYPE OF (point);
+ basis_surface : surface;
+ point_parameter_u : parameter_value;
+ point_parameter_v : parameter_value;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY point_path
+ SUBTYPE OF (compound_representation_item, geometric_representation_item);
+ SELF\compound_representation_item.item_element : point_path_members;
+END_ENTITY;
+
+ENTITY point_placement_shape_representation
+ SUBTYPE OF (shape_representation);
+ SELF\representation.items : SET [1 : ?] OF point_placement_shape_representation_item;
+WHERE
+ WR1: SIZEOF(QUERY(i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(i)) =
+ 1)) >
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY point_to_point_path
+ SUBTYPE OF (path_node);
+DERIVE
+ SELF\kinematic_path_segment.transition : transition_code := discontinuous;
+END_ENTITY;
+
+ENTITY polar_11
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF));
+END_ENTITY;
+
+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 < 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;
+
+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;
+
+ENTITY poly_loop
+ SUBTYPE OF (loop, geometric_representation_item);
+ polygon : LIST [3 : ?] OF UNIQUE cartesian_point;
+END_ENTITY;
+
+ENTITY polygonal_area
+ SUBTYPE OF (primitive_2d);
+ bounds : LIST [3 : ?] OF UNIQUE cartesian_point;
+END_ENTITY;
+
+ENTITY polyline
+ SUBTYPE OF (bounded_curve);
+ points : LIST [2 : ?] OF cartesian_point;
+END_ENTITY;
+
+ENTITY position_tolerance
+ SUBTYPE OF (geometric_tolerance);
+END_ENTITY;
+
+ENTITY positioned_sketch
+ SUBTYPE OF (geometric_representation_item);
+ sketch_basis : sketch_basis_select;
+ auxiliary_elements : SET [0 : ?] OF auxiliary_geometric_representation_item;
+WHERE
+ WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(sketch_basis)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sketch_basis\curve_bounded_surface.basis_surface)));
+ WR2: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sketch_basis\face_surface.face_geometry)));
+ WR3: SIZEOF(QUERY(q
+ <* auxiliary_elements
+ | (SIZEOF(TYPEOF(q) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(q <* auxiliary_elements | q\geometric_representation_item.dim <> 3)) = 0;
+END_ENTITY;
+
+ENTITY positive_length_measure_with_unit
+ SUBTYPE OF (length_measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
+ TYPEOF(SELF\measure_with_unit.value_component);
+END_ENTITY;
+
+ENTITY positive_plane_angle_measure_with_unit
+ SUBTYPE OF (plane_angle_measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN
+ TYPEOF(SELF\measure_with_unit.value_component);
+END_ENTITY;
+
+ENTITY power_expression
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+ENTITY power_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY power_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.watt);
+END_ENTITY;
+
+ENTITY pre_defined_character_glyph
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+ENTITY pre_defined_colour
+ SUBTYPE OF (pre_defined_item, colour);
+END_ENTITY;
+
+ENTITY pre_defined_curve_font
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY pre_defined_item;
+ name : label;
+END_ENTITY;
+
+ENTITY pre_defined_marker
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY pre_defined_surface_side_style
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+ENTITY pre_defined_symbol
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+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;
+
+ENTITY pre_defined_text_font
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+ENTITY pre_defined_tile
+ SUBTYPE OF (pre_defined_item);
+END_ENTITY;
+
+ENTITY precision_qualifier;
+ precision_value : INTEGER;
+END_ENTITY;
+
+ENTITY prescribed_path
+ SUBTYPE OF (link_motion_representation_along_path);
+ controlling_joints : OPTIONAL SET [1 : 6] OF kinematic_joint;
+END_ENTITY;
+
+ENTITY presentation_area
+ SUBTYPE OF (presentation_representation);
+WHERE
+ WR1: ((SIZEOF(QUERY(ais
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
+ | SIZEOF(USEDIN(ais, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')) =
+ 1)) >
+ 0) OR
+ (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')) = 1));
+END_ENTITY;
+
+ENTITY presentation_layer_assignment;
+ name : label;
+ description : text;
+ assigned_items : SET [1 : ?] OF layered_item;
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_AREA' IN TYPEOF(SELF)) OR
+ (SIZEOF(QUERY(prr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
+ TYPEOF(prr\representation_relationship.rep_1))) >
+ 0) OR
+ (SIZEOF(QUERY(rm
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
+ | SIZEOF(QUERY(mi
+ <* USEDIN(rm,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')
+ | SIZEOF(QUERY(rep
+ <* using_representations(mi)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
+ TYPEOF(rep))) >
+ 0)) >
+ 0)) >
+ 0);
+END_ENTITY;
+
+ENTITY presentation_set;
+INVERSE
+ areas : SET [1:?] OF area_in_set FOR in_set;
+END_ENTITY;
+
+ENTITY presentation_size;
+ unit : presentation_size_assignment_select;
+ size : planar_box;
+UNIQUE
+ UR1: unit;
+WHERE
+ WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN TYPEOF(unit)) AND
+ item_in_context(size, unit\representation.context_of_items)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_STYLE'] *
+ TYPEOF(style1)) =
+ 1)))) =
+ 0))) =
+ 0;
+ WR2: SIZEOF(QUERY(style1
+ <* styles
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF(style1))) <=
+ 2;
+ WR3: SIZEOF(QUERY(style1
+ <* styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF(style1)) AND
+ (SIZEOF(QUERY(style2
+ <* (styles - style1)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY presentation_style_by_context
+ SUBTYPE OF (presentation_style_assignment);
+ style_context : style_context_select;
+END_ENTITY;
+
+ENTITY presentation_view
+ SUBTYPE OF (presentation_representation);
+END_ENTITY;
+
+ENTITY presented_item
+ ABSTRACT SUPERTYPE;
+END_ENTITY;
+
+ENTITY presented_item_representation;
+ presentation : presentation_representation_select;
+ item : presented_item;
+END_ENTITY;
+
+ENTITY pressure_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY pressure_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.pascal);
+END_ENTITY;
+
+ENTITY previous_change_element_assignment
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : previous_element_assignment_select;
+ items : SET [1 : ?] OF change_management_object;
+END_ENTITY;
+
+ENTITY primitive_2d
+ SUPERTYPE OF (ONEOF(circular_area, elliptic_area, rectangular_area, polygonal_area, half_space_2d))
+ SUBTYPE OF (geometric_representation_item);
+WHERE
+ WR1: SELF\geometric_representation_item.dim = 2;
+END_ENTITY;
+
+ENTITY primitive_2d_with_inner_boundary
+ SUBTYPE OF (complex_area, compound_representation_item);
+ SELF\compound_representation_item.item_element : compound_inner_area_boundary;
+DERIVE
+ inner_boundary : compound_inner_area_boundary := SELF\compound_representation_item.item_element;
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPTIC_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_WITH_OUTER_BOUNDARY',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS'] *
+ TYPEOF(SELF)) >
+ 0;
+ WR2: SIZEOF(QUERY(inner
+ <* inner_boundary
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN
+ TYPEOF(inner))) =
+ 0;
+ WR3: open_path_based_inner_boundary(inner_boundary);
+END_ENTITY;
+
+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;
+
+ENTITY prismatic_pair_value
+ SUBTYPE OF (pair_value);
+ SELF\pair_value.applies_to_pair : prismatic_pair;
+ actual_translation : length_measure;
+END_ENTITY;
+
+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;
+
+ENTITY procedural_representation
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : ?] OF procedural_representation_sequence;
+END_ENTITY;
+
+ENTITY procedural_representation_sequence
+ SUBTYPE OF (representation_item);
+ elements : LIST [1 : ?] OF representation_item;
+ suppressed_items : SET [0 : ?] OF representation_item;
+ rationale : text;
+WHERE
+ WR1: SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0;
+END_ENTITY;
+
+ENTITY procedural_shape_representation
+ SUBTYPE OF (procedural_representation, shape_representation);
+ SELF\representation.items : SET [1 : ?] OF procedural_shape_representation_sequence;
+END_ENTITY;
+
+ENTITY procedural_shape_representation_sequence
+ SUBTYPE OF (geometric_representation_item, procedural_representation_sequence);
+ SELF\procedural_representation_sequence.elements : LIST [1 : ?] OF shape_representation_item;
+END_ENTITY;
+
+ENTITY procedural_solid_representation_sequence
+ SUBTYPE OF (procedural_shape_representation_sequence);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_MODEL' IN TYPEOF(SELF);
+END_ENTITY;
+
+ENTITY process_operation
+ SUBTYPE OF (action_method);
+END_ENTITY;
+
+ENTITY process_plan
+ SUBTYPE OF (action);
+WHERE
+ WR1: SIZEOF(QUERY(ar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
+ TYPEOF(ar.relating_action)) <>
+ 1)) =
+ 0;
+ WR2: SIZEOF(QUERY(ar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
+ TYPEOF(ar.related_action)) =
+ 1) OR
+ ((ar.name = 'process operation occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
+ TYPEOF(ar.related_action.chosen_method))))) =
+ SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION'));
+END_ENTITY;
+
+ENTITY process_product_association;
+ name : label;
+ description : text;
+ defined_product : characterized_product_definition;
+ process : product_definition_process;
+END_ENTITY;
+
+ENTITY process_property_association;
+ name : label;
+ description : text;
+ process : property_process;
+ property_or_shape : property_or_shape_select;
+END_ENTITY;
+
+ENTITY product;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ frame_of_reference : SET [1 : ?] OF product_context;
+END_ENTITY;
+
+ENTITY product_as_planned
+ SUBTYPE OF (product_definition_formation);
+END_ENTITY;
+
+ENTITY product_category;
+ name : label;
+ description : OPTIONAL text;
+DERIVE
+ id : identifier := get_id_value(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+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;
+
+ENTITY product_class
+ SUBTYPE OF (product_concept, characterized_object);
+END_ENTITY;
+
+ENTITY product_concept;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ market_context : product_concept_context;
+UNIQUE
+ UR1: id;
+END_ENTITY;
+
+ENTITY product_concept_context
+ SUBTYPE OF (application_context_element);
+ market_segment_type : label;
+END_ENTITY;
+
+ENTITY product_concept_feature;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY product_concept_feature_association;
+ name : label;
+ description : OPTIONAL text;
+ concept : product_concept;
+ feature : product_concept_feature;
+END_ENTITY;
+
+ENTITY product_concept_feature_category
+ SUBTYPE OF (group);
+WHERE
+ WR1: SIZEOF(QUERY(aga
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP_ASSIGNMENT.ASSIGNED_GROUP')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE' IN
+ TYPEOF(i)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE' IN
+ TYPEOF(i)))) <>
+ SIZEOF(aga\applied_group_assignment.items))))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY product_concept_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_product_concept : product_concept;
+ related_product_concept : product_concept;
+END_ENTITY;
+
+ENTITY product_context
+ SUBTYPE OF (application_context_element);
+ discipline_type : label;
+END_ENTITY;
+
+ENTITY product_data_and_data_equivalence_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ product_data : equivalence_product_data_select;
+ data_equivalence : data_equivalence_definition;
+END_ENTITY;
+
+ENTITY product_data_and_data_quality_relationship;
+ description : text;
+ product_data : product_definition;
+ data_quality : data_quality_definition;
+END_ENTITY;
+
+ENTITY product_definition
+ SUPERTYPE OF (ONEOF(composite_assembly_sequence_definition, ply_laminate_sequence_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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY product_definition_context
+ SUBTYPE OF (application_context_element);
+ life_cycle_stage : label;
+END_ENTITY;
+
+ENTITY product_definition_context_association;
+ definition : product_definition;
+ frame_of_reference : product_definition_context;
+ role : product_definition_context_role;
+END_ENTITY;
+
+ENTITY product_definition_context_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY product_definition_effectivity
+ SUBTYPE OF (effectivity);
+ usage : product_definition_relationship;
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) =
+ 0;
+END_ENTITY;
+
+ENTITY product_definition_element_relationship
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY product_definition_formation;
+ id : identifier;
+ description : OPTIONAL text;
+ of_product : product;
+UNIQUE
+ UR1: id, of_product;
+END_ENTITY;
+
+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;
+
+ENTITY product_definition_formation_resource
+ SUBTYPE OF (action_resource, product_definition_formation);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) >
+ 0;
+ WR2: SIZEOF(QUERY(prpc
+ <* USEDIN(SELF\product_definition_formation.of_product,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY product_definition_formation_with_specified_source
+ SUBTYPE OF (product_definition_formation);
+ make_or_buy : source;
+END_ENTITY;
+
+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;
+
+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;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE' IN TYPEOF(SELF)) XOR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE' IN TYPEOF(definition)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE_REFERENCE' IN
+ TYPEOF(definition)));
+ WR2: EXISTS(definition) OR
+ (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.DESIGN')) > 0);
+ WR3: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
+END_ENTITY;
+
+ENTITY product_definition_occurrence_reference
+ SUBTYPE OF (product_definition_reference);
+ product_occurrence_id : identifier;
+END_ENTITY;
+
+ENTITY product_definition_occurrence_reference_with_local_representation
+ SUBTYPE OF (product_definition_occurrence, generic_product_definition_reference);
+END_ENTITY;
+
+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;
+
+ENTITY product_definition_process
+ SUBTYPE OF (action);
+ identification : identifier;
+INVERSE
+ product_definitions : SET [1:?] OF process_product_association FOR process;
+END_ENTITY;
+
+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;
+
+ENTITY product_definition_reference_with_local_representation
+ SUBTYPE OF (generic_product_definition_reference, product_definition);
+END_ENTITY;
+
+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;
+
+ENTITY product_definition_relationship_kinematics
+ SUBTYPE OF (property_definition);
+ SELF\property_definition.definition : product_definition_relationship;
+UNIQUE
+ UR1: definition;
+END_ENTITY;
+
+ENTITY product_definition_relationship_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ relating : product_definition_relationship;
+ related : product_definition_relationship;
+END_ENTITY;
+
+ENTITY product_definition_resource
+ SUBTYPE OF (action_resource, product_definition);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY product_definition_shape
+ SUBTYPE OF (property_definition);
+UNIQUE
+ UR1: SELF\property_definition.definition;
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT'] *
+ TYPEOF(SELF\property_definition.definition)) >
+ 0;
+END_ENTITY;
+
+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;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE');
+END_ENTITY;
+
+ENTITY product_definition_usage_relationship
+ SUBTYPE OF (product_definition_relationship_relationship);
+ SELF\product_definition_relationship_relationship.relating : product_definition_usage;
+ SELF\product_definition_relationship_relationship.related : product_definition_usage;
+WHERE
+ WR1: relating.relating_product_definition :=: related.relating_product_definition;
+END_ENTITY;
+
+ENTITY product_definition_with_associated_documents
+ SUBTYPE OF (product_definition);
+ documentation_ids : SET [1 : ?] OF document;
+END_ENTITY;
+
+ENTITY product_design_to_individual
+ SUBTYPE OF (product_relationship);
+DERIVE
+ individual_product : product := SELF\product_relationship.related_product;
+ product_design : product := SELF\product_relationship.relating_product;
+END_ENTITY;
+
+ENTITY product_design_version_to_individual
+ SUBTYPE OF (product_definition_formation_relationship);
+DERIVE
+ individual_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
+ product_design_version : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
+END_ENTITY;
+
+ENTITY product_group
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY product_group_attribute_assignment
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : product_group_attributes;
+ attributes : SET [1 : 1] OF attribute_select;
+END_ENTITY;
+
+ENTITY product_group_attribute_set
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : product_group;
+ product_group_attributes : SET [1 : 1] OF product_group_attributes;
+END_ENTITY;
+
+ENTITY product_group_attributes
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY product_group_context
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY product_group_membership
+ SUBTYPE OF (characterized_object, group_assignment);
+ member : product_select;
+END_ENTITY;
+
+ENTITY product_group_membership_rules
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : product_group;
+ product_group_rules : SET [1 : 1] OF product_group_rules;
+END_ENTITY;
+
+ENTITY product_group_purpose
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY product_group_relationship
+ SUBTYPE OF (group_relationship);
+END_ENTITY;
+
+ENTITY product_group_rule
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY product_group_rule_assignment
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : product_group_rules;
+ product_group_rules : SET [1 : ?] OF product_group_rule;
+END_ENTITY;
+
+ENTITY product_group_rules
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY product_identification
+ SUBTYPE OF (configuration_item, characterized_object);
+ SELF\configuration_item.item_concept : product_class;
+WHERE
+ WR1: SIZEOF(QUERY(cd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
+ TYPEOF(cd.design)) AND
+ (SIZEOF(QUERY(prpc
+ <* USEDIN(cd.design\product_definition_formation.of_product,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name IN ['part','raw material','tool'])) >
+ 0))) <=
+ 1;
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURABLE_ITEM' IN TYPEOF(SELF)) XOR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_SPECIFICATION' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY product_in_attachment_slot
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY product_material_composition_relationship
+ SUBTYPE OF (product_definition_relationship);
+ class : label;
+ constituent_amount : SET [1 : ?] OF characterized_product_composition_value;
+ composition_basis : label;
+ determination_method : text;
+END_ENTITY;
+
+ENTITY product_planned_to_realized
+ SUBTYPE OF (product_definition_formation_relationship);
+DERIVE
+ planned_product : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
+ realized_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
+END_ENTITY;
+
+ENTITY product_process_plan
+ SUBTYPE OF (product_definition_process);
+WHERE
+ WR1: SIZEOF(QUERY(ar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
+ TYPEOF(ar.relating_action)) <>
+ 1)) =
+ 0;
+ WR2: SIZEOF(QUERY(ar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
+ TYPEOF(ar.related_action)) =
+ 1) OR
+ ((ar.name = 'process operation occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
+ TYPEOF(ar.related_action.chosen_method))))) =
+ SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION'));
+ WR3: SIZEOF(QUERY(ppa
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PRODUCT_ASSOCIATION.PROCESS')
+ | (ppa.name <> 'produced output') OR
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(ppa.defined_product)))) =
+ 0;
+END_ENTITY;
+
+ENTITY product_related_product_category
+ SUBTYPE OF (product_category);
+ products : SET [1 : ?] OF product;
+END_ENTITY;
+
+ENTITY product_relationship;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ relating_product : product;
+ related_product : product;
+END_ENTITY;
+
+ENTITY product_resource
+ SUBTYPE OF (action_resource, product);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) >
+ 0;
+ WR2: SIZEOF(QUERY(prpc
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY product_specification
+ SUBTYPE OF (product_identification, configurable_item);
+END_ENTITY;
+
+ENTITY profile_floor
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0));
+ WR4: (NOT (SELF.description IN ['planar','complex'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 0))) =
+ 0));
+ WR6: (NOT (SELF.description IN ['planar','complex'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius'))) =
+ 1))) =
+ 0))) =
+ 0);
+ WR7: SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (sar.description = 'profile floor usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1;
+ WR8: ((NOT (SELF.description IN ['planar','complex'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'floor'))) =
+ 1))) =
+ 1);
+END_ENTITY;
+
+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;
+
+ENTITY projected_zone_definition_with_offset
+ SUBTYPE OF (projected_zone_definition);
+ offset : length_measure_with_unit;
+END_ENTITY;
+
+ENTITY projection_curve
+ SUBTYPE OF (annotation_curve_occurrence);
+END_ENTITY;
+
+ENTITY projection_directed_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(QUERY(p_1
+ <* SELF\draughting_callout.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1)))) <=
+ 2;
+ WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
+END_ENTITY;
+
+ENTITY promissory_usage_occurrence
+ SUBTYPE OF (assembly_component_usage);
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY property_definition_relationship;
+ name : label;
+ description : text;
+ relating_property_definition : property_definition;
+ related_property_definition : property_definition;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY property_process
+ SUBTYPE OF (action);
+ identification : identifier;
+INVERSE
+ properties : SET [1:?] OF process_property_association FOR process;
+END_ENTITY;
+
+ENTITY protrusion
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'shape volume occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'volume shape usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY pyramid_volume
+ SUBTYPE OF (volume);
+ position : axis2_placement_3d;
+ xlength : positive_length_measure;
+ ylength : positive_length_measure;
+ height : positive_length_measure;
+END_ENTITY;
+
+ENTITY qualified_representation_item
+ SUBTYPE OF (representation_item);
+ qualifiers : SET [1 : ?] OF value_qualifier;
+WHERE
+ WR1: SIZEOF(QUERY(temp
+ <* qualifiers
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATHS_VALUE_PRECISION_QUALIFIER' IN
+ TYPEOF(temp)))) <
+ 2;
+END_ENTITY;
+
+ENTITY qualitative_uncertainty
+ SUBTYPE OF (uncertainty_qualifier);
+ uncertainty_value : text;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY quasi_uniform_curve
+ SUBTYPE OF (b_spline_curve);
+END_ENTITY;
+
+ENTITY quasi_uniform_surface
+ SUBTYPE OF (b_spline_surface);
+END_ENTITY;
+
+ENTITY quasi_uniform_volume
+ SUBTYPE OF (b_spline_volume);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY radioactivity_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIOACTIVITY_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY radioactivity_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.becquerel);
+END_ENTITY;
+
+ENTITY radius_dimension
+ SUBTYPE OF (dimension_curve_directed_callout);
+WHERE
+ WR1: SIZEOF(QUERY(con
+ <* SELF.contents
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN TYPEOF(con))) <=
+ 1;
+END_ENTITY;
+
+ENTITY radius_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF radial_geometry_constraint_element;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+END_ENTITY;
+
+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;
+
+ENTITY ratio_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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(SELF.weights_data);
+END_ENTITY;
+
+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(SELF.weights_data);
+END_ENTITY;
+
+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(SELF.weights_data);
+END_ENTITY;
+
+ENTITY rational_representation_item
+ SUBTYPE OF (representation_item, slash_expression);
+WHERE
+ WR1: SIZEOF(QUERY(operand
+ <* SELF\binary_generic_expression.operands
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY real_defined_function
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (numeric_defined_function);
+END_ENTITY;
+
+ENTITY real_interval_from_min
+ SUBTYPE OF (maths_space, generic_literal);
+ min : REAL;
+ min_closure : open_closed;
+END_ENTITY;
+
+ENTITY real_interval_to_max
+ SUBTYPE OF (maths_space, generic_literal);
+ max : REAL;
+ max_closure : open_closed;
+END_ENTITY;
+
+ENTITY real_literal
+ SUBTYPE OF (literal_number);
+ SELF\literal_number.the_value : REAL;
+END_ENTITY;
+
+ENTITY real_numeric_variable
+ SUBTYPE OF (numeric_variable);
+END_ENTITY;
+
+ENTITY real_representation_item
+ SUBTYPE OF (representation_item, real_literal);
+END_ENTITY;
+
+ENTITY real_tuple_literal
+ SUBTYPE OF (generic_literal);
+ lit_value : LIST [1 : ?] OF REAL;
+END_ENTITY;
+
+ENTITY rectangular_area
+ SUBTYPE OF (primitive_2d);
+ position : axis2_placement_2d;
+ x : positive_length_measure;
+ y : positive_length_measure;
+END_ENTITY;
+
+ENTITY rectangular_array_placement_group_component
+ SUBTYPE OF (array_placement_group);
+END_ENTITY;
+
+ENTITY rectangular_closed_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'width'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'length'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'corner radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY rectangular_composite_surface_transition_locator
+ SUBTYPE OF (founded_item);
+ basis_surface : rectangular_composite_surface;
+ surface_parameter : u_or_v_parameter;
+ u_transition_index : INTEGER;
+ v_transition_index : INTEGER;
+WHERE
+ WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
+END_ENTITY;
+
+ENTITY rectangular_pattern
+ SUBTYPE OF (replicate_feature);
+WHERE
+ WR1: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.related_shape_aspect)))) =
+ 1)))) <=
+ 5)))) =
+ 0);
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'row layout direction')))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'column layout direction')))) =
+ 1)))) =
+ 0);
+ WR4: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'row spacing')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR9: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'column spacing')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR10: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+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;
+
+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: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) OR
+ (usense = (u2 > u1));
+ WR4: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) OR
+ (vsense = (v2 > v1));
+END_ENTITY;
+
+ENTITY referenced_modified_datum
+ SUBTYPE OF (datum_reference);
+ modifier : limit_condition;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY reinforcement_orientation_basis
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : 1] OF basis_11_direction_member;
+END_ENTITY;
+
+ENTITY relative_event_occurrence
+ SUBTYPE OF (event_occurrence);
+ base_event : event_occurrence;
+ offset : time_measure_with_unit;
+END_ENTITY;
+
+ENTITY removal_volume
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'shape volume occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'volume shape usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (sdr.relating_shape_aspect.description =
+ 'volume shape'))) =
+ 1)))) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY rep_item_group
+ SUBTYPE OF (group, representation_item);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >
+ 0;
+ WR2: SIZEOF(QUERY(r
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS')
+ | r.name = 'group representation')) >
+ 0;
+ WR3: SIZEOF(QUERY(ga
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP_ASSIGNMENT.ASSIGNED_GROUP')
+ | ga.role.name <> 'group membership')) =
+ 0;
+ WR4: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOPOLOGICAL_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'] *
+ TYPEOF(SELF)) =
+ 1;
+END_ENTITY;
+
+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;
+
+ENTITY reparametrised_composite_curve_segment
+ SUBTYPE OF (composite_curve_segment);
+ param_length : parameter_value;
+WHERE
+ WR1: param_length > 0.0;
+END_ENTITY;
+
+ENTITY replicate_feature
+ SUPERTYPE OF (ONEOF(circular_pattern, rectangular_pattern, feature_pattern))
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR2: (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE'] *
+ TYPEOF(fcr.related_shape_aspect)) >=
+ 1) AND
+ (fcr.name = 'pattern basis')))) =
+ 1);
+ WR3: ((SIZEOF(QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))) +
+ SIZEOF(QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))))) =
+ 0);
+END_ENTITY;
+
+ENTITY repositioned_neutral_sketch
+ SUBTYPE OF (mapped_item, geometric_representation_item);
+DERIVE
+ map : representation_map := SELF\mapped_item.mapping_source;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' IN
+ TYPEOF(map.mapped_representation);
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN TYPEOF(map.mapping_origin);
+ WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\mapped_item.mapping_target);
+END_ENTITY;
+
+ENTITY repositioned_tessellated_item
+ SUBTYPE OF (tessellated_item);
+ location : axis2_placement_3d;
+WHERE
+ WR1: NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CURVE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_GEOMETRIC_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_POINT_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_WIRE'] *
+ TYPEOF(SELF)) =
+ 0);
+END_ENTITY;
+
+ENTITY representation
+ SUPERTYPE OF ((ONEOF(reinforcement_orientation_basis, ply_angle_representation)) ANDOR
+ (ONEOF(interpolated_configuration_representation, link_motion_representation_along_path)) ANDOR
+ (ONEOF(kinematic_link_representation, kinematic_topology_structure,
+ kinematic_topology_directed_structure, kinematic_topology_network_structure,
+ mechanism_representation, shape_representation)) ANDOR
+ (ONEOF(kinematic_topology_structure, kinematic_topology_directed_structure,
+ kinematic_topology_network_structure)));
+ 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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+ WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY representation_context;
+ context_identifier : identifier;
+ context_type : text;
+INVERSE
+ representations_in_context : SET [1:?] OF representation FOR context_of_items;
+END_ENTITY;
+
+ENTITY representation_context_reference;
+ context_identifier : identifier;
+INVERSE
+ representations_in_context : SET [1:?] OF representation_reference FOR context_of_items;
+END_ENTITY;
+
+ENTITY representation_item
+ SUPERTYPE OF ((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))) ANDOR
+ (ONEOF(mapped_item, styled_item)));
+ name : label;
+WHERE
+ WR1: SIZEOF(using_representations(SELF)) > 0;
+END_ENTITY;
+
+ENTITY representation_item_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_representation_item : representation_item;
+ related_representation_item : representation_item;
+END_ENTITY;
+
+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;
+
+ENTITY representation_proxy_item
+ SUBTYPE OF (representation_item);
+ item : representation_proxy_select;
+END_ENTITY;
+
+ENTITY representation_reference;
+ id : identifier;
+ context_of_items : representation_context_reference;
+END_ENTITY;
+
+ENTITY representation_relationship;
+ name : label;
+ description : OPTIONAL text;
+ rep_1 : representation_or_representation_reference;
+ rep_2 : representation_or_representation_reference;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION' IN
+ TYPEOF(transformation_operator)) OR
+ (item_in_context(transformation_operator\item_defined_transformation.transform_item_1,
+ SELF\representation_relationship.rep_1.context_of_items) AND
+ item_in_context(transformation_operator\item_defined_transformation.transform_item_2,
+ SELF\representation_relationship.rep_2.context_of_items));
+END_ENTITY;
+
+ENTITY representative_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: unique_in_product_definition(SELF) OR unique_in_shape_aspect(SELF);
+END_ENTITY;
+
+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;
+
+ENTITY requirement_assignment
+ SUBTYPE OF (characterized_object, group);
+END_ENTITY;
+
+ENTITY requirement_for_action_resource
+ SUBTYPE OF (action_resource_requirement);
+ resources : SET [1 : ?] OF action_resource;
+END_ENTITY;
+
+ENTITY requirement_source
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY requirement_view_definition_relationship
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY resistance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESISTANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+ENTITY resistance_unit
+ SUBTYPE OF (derived_unit);
+WHERE
+ WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.ohm);
+END_ENTITY;
+
+ENTITY resource_property;
+ name : label;
+ description : text;
+ resource : characterized_resource_definition;
+END_ENTITY;
+
+ENTITY resource_property_representation;
+ name : label;
+ description : text;
+ property : resource_property;
+ representation : representation;
+END_ENTITY;
+
+ENTITY resource_requirement_type;
+ name : label;
+ description : text;
+END_ENTITY;
+
+ENTITY restriction_function
+ SUBTYPE OF (maths_function, unary_generic_expression);
+ SELF\unary_generic_expression.operand : maths_space;
+END_ENTITY;
+
+ENTITY resulting_path
+ SUBTYPE OF (link_motion_representation_along_path);
+ controlling_joints : SET [1 : ?] OF kinematic_joint;
+END_ENTITY;
+
+ENTITY retention
+ SUBTYPE OF (action);
+WHERE
+ WR1: SIZEOF(QUERY(aa
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_ASSIGNMENT.ASSIGNED_ACTION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND
+ (aa.role.name = 'retention'))) >=
+ 1;
+ WR2: (SIZEOF(QUERY(atia
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
+ | (atia.role.name = 'minimum retention period'))) =
+ 1) AND
+ (SIZEOF(QUERY(atia
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
+ | (atia.role.name = 'maximum retention period'))) =
+ 1) AND
+ (SIZEOF(QUERY(atia1
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
+ | (atia1.role.name = 'minimum retention period') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
+ | (atia2.role.name = 'maximum retention period') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')) +
+ SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')) =
+ 0;
+END_ENTITY;
+
+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;
+
+ENTITY revolute_pair_value
+ SUBTYPE OF (pair_value);
+ SELF\pair_value.applies_to_pair : revolute_pair;
+ actual_rotation : plane_angle_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY revolved_face_solid_with_trim_conditions
+ SUBTYPE OF (revolved_face_solid);
+ first_trim_condition : trim_condition_select;
+ second_trim_condition : trim_condition_select;
+WHERE
+ WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)));
+ WR2: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ TYPEOF(first_trim_condition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ TYPEOF(second_trim_condition))) AND
+ (first_trim_condition = second_trim_condition));
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'outer edge shape occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'flat edge shape occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'rounded edge shape occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'sweep occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY rgc_with_dimension
+ SUBTYPE OF (radius_geometric_constraint);
+ radius_value : positive_length_measure;
+END_ENTITY;
+
+ENTITY rib_top
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'rib top condition occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'rib top usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP_FLOOR' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP' IN
+ TYPEOF(sdr.related_shape_aspect.of_shape.definition))))) =
+ 1))) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY rib_top_floor
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SELF.description IN ['planar','complex'];
+ WR3: SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (sar.description = 'rib top usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | ((fcr.related_shape_aspect.description = 'rib top condition occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP_FLOOR' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1;
+ WR4: (NOT (SELF.description = 'complex')) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd))
+ | NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (sa_occ.description = 'boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
+ TYPEOF(sdr.relating_shape_aspect)) =
+ 1) AND
+ (sdr.relating_shape_aspect.description =
+ 'rib top floor boundary'))) =
+ 1))) =
+ 1))) =
+ 0);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY right_circular_cylinder
+ SUBTYPE OF (geometric_representation_item);
+ position : axis1_placement;
+ height : positive_length_measure;
+ radius : positive_length_measure;
+END_ENTITY;
+
+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;
+
+ENTITY rigid_link_representation
+ SUBTYPE OF (kinematic_link_representation);
+END_ENTITY;
+
+ENTITY rigid_subsketch
+ SUBTYPE OF (subsketch);
+END_ENTITY;
+
+ENTITY role_association;
+ role : object_role;
+ item_with_role : role_select;
+END_ENTITY;
+
+ENTITY rolling_curve_pair
+ SUBTYPE OF (planar_curve_pair);
+END_ENTITY;
+
+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;
+
+ENTITY rolling_surface_pair
+ SUBTYPE OF (surface_pair);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY round_hole
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'diameter occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)) AND
+ (sdr.name = 'diameter')))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'hole depth occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'bottom condition occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'hole bottom usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HOLE_BOTTOM' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'change in diameter occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'taper usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
+ 1)))) <=
+ 1)))) =
+ 0);
+ WR5: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
+ (SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)))) =
+ 1);
+END_ENTITY;
+
+ENTITY rounded_end
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'partial circular boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect))))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'course of travel occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+END_ENTITY;
+
+ENTITY rounded_u_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'width')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'depth'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY roundness_tolerance
+ SUBTYPE OF (geometric_tolerance);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY row_representation_item
+ SUBTYPE OF (compound_representation_item);
+ SELF\compound_representation_item.item_element : list_representation_item;
+END_ENTITY;
+
+ENTITY row_value
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+ENTITY row_variable
+ SUBTYPE OF (abstract_variable);
+END_ENTITY;
+
+ENTITY rule_action
+ SUBTYPE OF (action);
+END_ENTITY;
+
+ENTITY rule_condition
+ SUBTYPE OF (atomic_formula);
+END_ENTITY;
+
+ENTITY rule_definition
+ SUBTYPE OF (rule_software_definition);
+END_ENTITY;
+
+ENTITY rule_set
+ SUBTYPE OF (rule_software_definition);
+END_ENTITY;
+
+ENTITY rule_set_group
+ SUBTYPE OF (rule_software_definition);
+END_ENTITY;
+
+ENTITY rule_software_definition
+ SUBTYPE OF (product_definition);
+END_ENTITY;
+
+ENTITY rule_superseded_assignment
+ SUBTYPE OF (action_assignment);
+ items : SET [1 : ?] OF rule_superseded_item;
+END_ENTITY;
+
+ENTITY rule_supersedence
+ SUBTYPE OF (rule_action);
+END_ENTITY;
+
+ENTITY ruled_surface_swept_area_solid
+ SUBTYPE OF (surface_curve_swept_area_solid);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND
+ (SELF.reference_surface\b_spline_surface.u_degree = 1);
+ WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY runout_zone_definition
+ SUBTYPE OF (tolerance_zone_definition);
+ orientation : runout_zone_orientation;
+END_ENTITY;
+
+ENTITY runout_zone_orientation;
+ angle : plane_angle_measure_with_unit;
+END_ENTITY;
+
+ENTITY runout_zone_orientation_reference_direction
+ SUBTYPE OF (runout_zone_orientation);
+ orientation_defining_relationship : shape_aspect_relationship;
+END_ENTITY;
+
+ENTITY same_as_external_item_assignment
+ SUBTYPE OF (external_identification_assignment);
+ items : SET [0 : ?] OF same_as_item;
+END_ENTITY;
+
+ENTITY satisfied_requirement
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : satisfies_requirement;
+ items : SET [1 : 1] OF product_definition;
+END_ENTITY;
+
+ENTITY satisfies_requirement
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY satisfying_item
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : satisfies_requirement;
+ items : SET [1 : 1] OF requirement_satisfaction_item;
+END_ENTITY;
+
+ENTITY scalar_variable
+ SUBTYPE OF (abstract_variable);
+END_ENTITY;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SCAN_3D_MODEL' IN TYPEOF(tmp))) =
+ 0;
+END_ENTITY;
+
+ENTITY scan_data_shape_representation
+ SUBTYPE OF (shape_representation);
+ SELF\representation.items : SET [1 : ?] OF scanned_data_item;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
+ TYPEOF(SELF\representation.context_of_items);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SCAN_DATA_SHAPE_REPRESENTATION' IN
+ TYPEOF(using_rep)))) =
+ 0;
+END_ENTITY;
+
+ENTITY scanner_basic_properties
+ SUBTYPE OF (scanner_property);
+ scanner_identification : label;
+ scanner_location : axis2_placement_3d;
+ scanner_uncertainty : OPTIONAL positive_length_measure;
+END_ENTITY;
+
+ENTITY scanner_property
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (representation_item);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY sculptured_solid
+ SUBTYPE OF (modified_solid);
+ sculpturing_element : generalized_surface_select;
+ positive_side : BOOLEAN;
+END_ENTITY;
+
+ENTITY sdgc_with_dimension
+ SUBTYPE OF (surface_distance_geometric_constraint);
+ distance_value : non_negative_length_measure;
+END_ENTITY;
+
+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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[1]);
+ WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[2]);
+END_ENTITY;
+
+ENTITY seam_edge
+ SUBTYPE OF (oriented_edge);
+ pcurve_reference : pcurve;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF(edge_element)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY security_classification;
+ name : label;
+ purpose : text;
+ security_level : security_classification_level;
+END_ENTITY;
+
+ENTITY security_classification_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_security_classification : security_classification;
+DERIVE
+ role : object_role := get_role(SELF);
+WHERE
+ WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
+END_ENTITY;
+
+ENTITY security_classification_level;
+ name : label;
+END_ENTITY;
+
+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;
+
+ENTITY self_intersecting_curve
+ SUBTYPE OF (self_intersecting_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ arc_length_separation_factor : REAL;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY self_intersecting_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_curve, self_intersecting_surface))
+ SUBTYPE OF (inapt_geometry);
+END_ENTITY;
+
+ENTITY self_intersecting_loop
+ SUBTYPE OF (topology_related_to_self_intersecting_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ arc_length_distance_factor : REAL;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY self_intersecting_shell
+ SUBTYPE OF (topology_related_to_self_intersecting_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ geodesic_separation_factor : REAL;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY self_intersecting_surface
+ SUBTYPE OF (self_intersecting_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+ geodesic_separation_factor : REAL;
+ interference_tolerance : length_measure;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY serial_numbered_effectivity
+ SUBTYPE OF (effectivity);
+ effectivity_start_id : identifier;
+ effectivity_end_id : OPTIONAL identifier;
+END_ENTITY;
+
+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;
+
+ENTITY shape_aspect
+ SUPERTYPE OF ((ONEOF(shape_aspect_occurrence, component_path_shape_aspect) ANDOR constituent_shape_aspect) ANDOR
+ (ONEOF(harness_node, harness_segment)) ANDOR
+ (ONEOF(contacting_feature, datum, datum_feature, datum_target, datum_system,
+ general_datum_reference)) ANDOR
+ (ONEOF(assembly_shape_constraint, assembly_shape_joint, connectivity_definition, contact_feature,
+ transport_feature)));
+ 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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+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;
+
+ENTITY shape_aspect_deriving_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+ SELF\shape_aspect_relationship.relating_shape_aspect : derived_shape_aspect;
+END_ENTITY;
+
+ENTITY shape_aspect_occurrence
+ SUBTYPE OF (shape_aspect);
+ definition : shape_aspect_or_characterized_object;
+WHERE
+ WR1: acyclic_shape_aspect_occurrence(SELF, definition);
+END_ENTITY;
+
+ENTITY shape_aspect_relationship
+ SUPERTYPE OF (ONEOF(assembly_shape_joint_item_relationship, assembly_shape_constraint_item_relationship,
+ connectivity_definition_item_relationship, shape_feature_fit_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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+END_ENTITY;
+
+ENTITY shape_aspect_relationship_representation_association;
+ represented_shape_aspect_relationship : shape_aspect_relationship;
+ representing_representation_relationship : representation_relationship;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(representing_representation_relationship\representation_relationship.rep_1)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(representing_representation_relationship\representation_relationship.rep_2));
+ WR2: (represented_shape_aspect_relationship.relating_shape_aspect IN
+ using_shape_aspect_of_shape_representation(representing_representation_relationship.rep_1)) AND
+ (represented_shape_aspect_relationship.related_shape_aspect IN
+ using_shape_aspect_of_shape_representation(representing_representation_relationship.rep_2));
+ WR3: ((find_representative_shape_representation_of_product_definition(using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect)).context_of_items) :=:
+ (find_representative_shape_representation_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect).context_of_items)) AND
+ ((find_representative_shape_representation_of_product_definition(using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect)).context_of_items) :=:
+ (find_representative_shape_representation_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect).context_of_items));
+ WR4: using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect) :<>:
+ using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect);
+ WR5: find_assembly_root([using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect)]) :=:
+ find_assembly_root([using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect)]);
+END_ENTITY;
+
+ENTITY shape_criteria_representation_with_accuracy
+ SUBTYPE OF (shape_data_quality_criteria_representation);
+ required_general_accuracy : SET [1 : ?] OF shape_measurement_accuracy;
+END_ENTITY;
+
+ENTITY shape_data_quality_assessment_by_logical_test
+ SUBTYPE OF (data_quality_assessment_specification);
+END_ENTITY;
+
+ENTITY shape_data_quality_assessment_by_numerical_test
+ SUBTYPE OF (data_quality_assessment_specification);
+ threshold : shape_data_quality_value_limit_type_select;
+END_ENTITY;
+
+ENTITY shape_data_quality_criteria_representation
+ SUBTYPE OF (data_quality_criteria_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_CRITERION' IN TYPEOF(q))) >
+ 0;
+END_ENTITY;
+
+ENTITY shape_data_quality_criterion
+ SUPERTYPE OF (ONEOF(erroneous_data, inapt_data))
+ SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
+ assessment_specification : shape_data_quality_assessment_specification_select;
+WHERE
+ WR1: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
+ 0;
+ WR2: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+ WR3: SIZEOF(QUERY(i1
+ <* bag_to_set(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
+ TYPEOF(i1))) =
+ 0;
+END_ENTITY;
+
+ENTITY shape_data_quality_criterion_and_accuracy_association;
+ required_specific_accuracy : shape_measurement_accuracy;
+ shape_data_quality_criterion : shape_data_quality_criterion;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspected_shape_and_result_relationship
+ SUBTYPE OF (shape_representation_relationship);
+ SELF\representation_relationship.rep_1 : shape_representation;
+ SELF\representation_relationship.rep_2 : shape_data_quality_inspection_result_representation;
+WHERE
+ WR1: SIZEOF(using_product_definition_of_shape_representation(SELF.rep_1) *
+ bag_to_set(inspected_product_definition(SELF.rep_2))) >
+ 0;
+ WR2: SELF.rep_1\representation.context_of_items :=: SELF.rep_2\representation.context_of_items;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspection_criterion_report
+ SUBTYPE OF (data_quality_inspection_criterion_report);
+ representative_measured_value : measured_value_select;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspection_instance_report
+ SUBTYPE OF (data_quality_inspection_instance_report);
+ SELF\data_quality_inspection_instance_report.inspected_instances : LIST [1 : ?] OF shape_data_quality_inspection_instance_report_item;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspection_instance_report_item
+ SUBTYPE OF (data_quality_inspection_instance_report_item);
+ SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_shape_element_select;
+ measured_value : measured_value_select;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspection_result
+ SUBTYPE OF (data_quality_inspection_result);
+ SELF\data_quality_inspection_result.criterion_inspected : shape_data_quality_criterion;
+END_ENTITY;
+
+ENTITY shape_data_quality_inspection_result_representation
+ SUBTYPE OF (data_quality_inspection_result_representation);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(q))) >
+ 0;
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
+ TYPEOF(SELF\representation.context_of_items);
+ WR3: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.REP_2')) >
+ 0;
+END_ENTITY;
+
+ENTITY shape_data_quality_lower_value_limit
+ SUBTYPE OF (shape_data_quality_value_limit);
+WHERE
+ WR1: SELF\qualified_representation_item.qualifiers[1].name = 'minimum';
+END_ENTITY;
+
+ENTITY shape_data_quality_upper_value_limit
+ SUBTYPE OF (shape_data_quality_value_limit);
+WHERE
+ WR1: SELF\qualified_representation_item.qualifiers[1].name = 'maximum';
+END_ENTITY;
+
+ENTITY shape_data_quality_value_limit
+ ABSTRACT SUPERTYPE OF (ONEOF(shape_data_quality_upper_value_limit, shape_data_quality_lower_value_limit))
+ SUBTYPE OF (measure_representation_item, qualified_representation_item);
+END_ENTITY;
+
+ENTITY shape_data_quality_value_range
+ SUBTYPE OF (compound_representation_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SET_REPRESENTATION_ITEM' IN
+ TYPEOF(SELF\compound_representation_item.item_element)) AND
+ ((SIZEOF(SELF\compound_representation_item.item_element) = 2) AND
+ ((SIZEOF(QUERY(i1
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i1)))) =
+ 2) OR
+ (SIZEOF(QUERY(i2
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
+ TYPEOF(i2)))) =
+ 2)));
+ WR2: (SIZEOF(QUERY(i <* SELF\compound_representation_item.item_element | (i.name = 'upper limit'))) = 1) AND
+ (SIZEOF(QUERY(i <* SELF\compound_representation_item.item_element | (i.name = 'lower limit'))) = 1);
+ WR3: (SIZEOF(QUERY(i1
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i1)) AND
+ (SIZEOF(QUERY(i2
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i2)) AND
+ (i1 :<>: i2) AND
+ (i1\measure_with_unit.unit_component :=:
+ i2\measure_with_unit.unit_component))) =
+ 1))) =
+ 2) OR
+ (SIZEOF(QUERY(i1
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND
+ (SIZEOF(QUERY(i2
+ <* SELF\compound_representation_item.item_element
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
+ TYPEOF(i2)) AND
+ (i1 :<>: i2) AND
+ (TYPEOF(i1\value_representation_item.value_component) =
+ TYPEOF(i2\value_representation_item.value_component)))) =
+ 1))) =
+ 2);
+END_ENTITY;
+
+ENTITY shape_defining_relationship
+ SUBTYPE OF (shape_aspect_relationship);
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(definition)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION' IN
+ TYPEOF(definition\property_definition.definition));
+END_ENTITY;
+
+ENTITY shape_dimension_representation
+ SUBTYPE OF (shape_representation);
+ SELF\representation.items : SET [1 : ?] OF shape_dimension_representation_item;
+END_ENTITY;
+
+ENTITY shape_feature_definition
+ SUBTYPE OF (feature_definition);
+END_ENTITY;
+
+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;
+
+ENTITY shape_feature_definition_fit_relationship
+ SUBTYPE OF (shape_feature_definition_relationship);
+END_ENTITY;
+
+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;
+
+ENTITY shape_feature_fit_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;
+
+ENTITY shape_inspection_result_accuracy_association;
+ applied_specific_accuracy : shape_measurement_accuracy;
+ shape_data_quality_result : shape_data_quality_inspection_result;
+END_ENTITY;
+
+ENTITY shape_inspection_result_representation_with_accuracy
+ SUBTYPE OF (shape_data_quality_inspection_result_representation);
+ applied_general_accuracy : SET [1 : ?] OF shape_measurement_accuracy;
+END_ENTITY;
+
+ENTITY shape_measurement_accuracy;
+ description : text;
+ range : shape_data_quality_value_limit_type_select;
+END_ENTITY;
+
+ENTITY shape_representation
+ SUBTYPE OF (representation);
+END_ENTITY;
+
+ENTITY shape_representation_reference
+ SUBTYPE OF (representation_reference);
+END_ENTITY;
+
+ENTITY shape_representation_relationship
+ SUBTYPE OF (representation_relationship);
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_REFERENCE'] *
+ (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2))) >=
+ 1;
+END_ENTITY;
+
+ENTITY shape_representation_with_parameters
+ SUBTYPE OF (shape_representation);
+ SELF\representation.items : SET [1 : ?] OF shape_representation_with_parameters_items;
+END_ENTITY;
+
+ENTITY shape_summary_request_with_representative_value
+ SUBTYPE OF (summary_report_request);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY shell_based_wireframe_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
+ TYPEOF(it)) =
+ 1))) >=
+ 1;
+ WR3: SIZEOF(QUERY(sbwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(eloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(wsb)))
+ | NOT (SIZEOF(QUERY(el
+ <* eloop\path.edge_list
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
+ TYPEOF(el.edge_element)))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR4: SIZEOF(QUERY(sbwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(eloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(wsb)))
+ | NOT (SIZEOF(QUERY(pline_el
+ <* QUERY(el
+ <* eloop\path.edge_list
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(eloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(eloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
+ TYPEOF(wsb)))
+ | NOT (SIZEOF(QUERY(el
+ <* eloop\path.edge_list
+ | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(el.edge_element.edge_start)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(el.edge_element.edge_end))))) =
+ 0))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(sbwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(eloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(vloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
+ TYPEOF(wsb)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vloop\vertex_loop.loop_vertex)))) =
+ 0))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(sbwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(ws
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
+ TYPEOF(sb)))
+ | NOT (SIZEOF(QUERY(vloop
+ <* QUERY(wsb
+ <* ws\wire_shell.wire_shell_extent
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(vs
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN
+ TYPEOF(sb)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
+ TYPEOF(vs\vertex_shell.vertex_shell_extent.loop_vertex)))) =
+ 0))) =
+ 0;
+ WR11: SIZEOF(QUERY(sbwm
+ <* QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
+ TYPEOF(it)))
+ | NOT (SIZEOF(QUERY(vs
+ <* QUERY(sb
+ <* sbwm\shell_based_wireframe_model.sbwm_boundary
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY shelled_solid
+ SUPERTYPE OF (ONEOF(double_offset_shelled_solid, complex_shelled_solid))
+ SUBTYPE OF (modified_solid);
+ deleted_face_set : SET [1 : ?] OF face_surface;
+ thickness : length_measure;
+WHERE
+ WR1: thickness <> 0;
+END_ENTITY;
+
+ENTITY short_length_curve
+ SUBTYPE OF (nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY short_length_curve_segment
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_SEGMENT']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY short_length_edge
+ SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND
+ (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR
+ (prefix = si_prefix.kilo);
+END_ENTITY;
+
+ENTITY simple_boolean_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(boolean_literal, boolean_variable))
+ SUBTYPE OF (boolean_expression, simple_generic_expression);
+END_ENTITY;
+
+ENTITY simple_clause
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+ENTITY simple_generic_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(generic_literal, generic_variable))
+ SUBTYPE OF (generic_expression);
+END_ENTITY;
+
+ENTITY simple_numeric_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(literal_number, numeric_variable))
+ SUBTYPE OF (numeric_expression, simple_generic_expression);
+END_ENTITY;
+
+ENTITY simple_string_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(string_literal, string_variable))
+ SUBTYPE OF (string_expression, simple_generic_expression);
+END_ENTITY;
+
+ENTITY simplified_counterbore_hole_definition
+ SUBTYPE OF (counterbore_hole_definition);
+WHERE
+ WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
+END_ENTITY;
+
+ENTITY simplified_counterdrill_hole_definition
+ SUBTYPE OF (counterdrill_hole_definition);
+WHERE
+ WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
+END_ENTITY;
+
+ENTITY simplified_countersink_hole_definition
+ SUBTYPE OF (countersink_hole_definition);
+WHERE
+ WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
+END_ENTITY;
+
+ENTITY simplified_spotface_hole_definition
+ SUBTYPE OF (spotface_hole_definition, simplified_counterbore_hole_definition);
+END_ENTITY;
+
+ENTITY simultaneous_constraint_group
+ SUBTYPE OF (variational_representation_item);
+ constraint_group : SET [2 : ?] OF constraint_group_member;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* using_representations(SELF)
+ | SIZEOF(QUERY(r
+ <* q.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMULTANEOUS_CONSTRAINT_GROUP' IN
+ TYPEOF(r)) AND
+ (SIZEOF(QUERY(s
+ <* constraint_group
+ | (s IN r\simultaneous_constraint_group.constraint_group) AND
+ NOT (r :=: SELF))) >
+ 0))) >
+ 0)) =
+ 0;
+ WR2: SIZEOF(QUERY(q
+ <* using_representations(constraint_group[1])
+ | (SIZEOF(QUERY(r <* constraint_group | item_in_context(r, q.context_of_items))) =
+ SIZEOF(constraint_group)))) >
+ 0;
+ WR3: SIZEOF(QUERY(q
+ <* constraint_group
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_CONSTRAINT' IN TYPEOF(q)) AND
+ (SIZEOF(QUERY(r
+ <* q.constrained_elements
+ | SIZEOF(QUERY(s <* constraint_group | r IN s.reference_elements)) > 0)) >
+ 0)))) =
+ 0;
+END_ENTITY;
+
+ENTITY sin_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY single_area_csg_2d_shape_representation
+ SUBTYPE OF (csg_2d_shape_representation);
+ SELF\representation.items : SET [1 : ?] OF csg_2d_area_select;
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))) =
+ 0;
+ WR2: SIZEOF(QUERY(it
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID_2D' IN TYPEOF(it)))) =
+ 1;
+END_ENTITY;
+
+ENTITY single_boundary_csg_2d_shape_representation
+ SUBTYPE OF (single_area_csg_2d_shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(it
+ <* SELF.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_PRIMITIVE_SOLID_2D' IN TYPEOF(it)) AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY') IN
+ TYPEOF(it\csg_primitive_solid_2d.tree_root_expression))))) =
+ 0;
+END_ENTITY;
+
+ENTITY single_property_is_definition
+ SUBTYPE OF (property_definition);
+ SELF\property_definition.definition : product_definition;
+UNIQUE
+ UR1: definition;
+END_ENTITY;
+
+ENTITY single_texture_style_tessellation_specification
+ SUBTYPE OF (texture_style_tessellation_specification);
+ texture_image : label;
+ texture_coordinates : LIST [1 : ?] OF LIST [2 : 2] OF non_negative_real;
+ texture_format : texture_file_type;
+ repeating_pattern : BOOLEAN;
+END_ENTITY;
+
+ENTITY skew_line_distance_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF line;
+ SELF\explicit_constraint.reference_elements : SET [0 : 1] OF line;
+ distance_value : non_negative_length_measure;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) = 2;
+END_ENTITY;
+
+ENTITY slash_expression
+ SUBTYPE OF (binary_numeric_expression);
+END_ENTITY;
+
+ENTITY sliding_curve_pair
+ SUBTYPE OF (planar_curve_pair);
+END_ENTITY;
+
+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;
+
+ENTITY sliding_surface_pair
+ SUBTYPE OF (surface_pair);
+END_ENTITY;
+
+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;
+
+ENTITY slot
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'swept shape occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
+ TYPEOF(sdr.relating_shape_aspect)) =
+ 1))) =
+ 1)))) =
+ 1)))) =
+ 0;
+ WR3: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'course of travel occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ ((sar.name = 'course of travel') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0;
+ WR4: SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT ((SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'end condition occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (((sar.description = 'slot end usage') AND
+ (sar.name IN
+ ['course of travel start',
+ 'course of travel end'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (fcr.relating_shape_aspect.description IN
+ ['open','radiused','flat','woodruff'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
+ 1)))) =
+ 2) OR
+ (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'end condition occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (((sar.description = 'slot end usage') AND
+ (sar.name IN
+ ['course of travel start',
+ 'course of travel end'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (fcr.relating_shape_aspect.description IN ['loop'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
+ 1)))) =
+ 1))))) =
+ 0;
+ WR5: (NOT (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'end condition occurrence') AND
+ (SIZEOF(QUERY(fcr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | (((sar.description = 'slot end usage') AND
+ (sar.name IN
+ ['course of travel start',
+ 'course of travel end'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
+ TYPEOF(fcr.relating_shape_aspect)) AND
+ (fcr.relating_shape_aspect.description IN
+ ['loop'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
+ 1)))) =
+ 1)))) =
+ 0) OR
+ (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'course of travel occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ ((sar.name = 'course of travel') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
+ TYPEOF(sar)))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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)
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit')))) >=
+ 0;
+END_ENTITY;
+
+ENTITY slot_end
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 0)))) =
+ 0);
+ WR4: (NOT (SELF.description IN ['flat','woodruff'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR5: (NOT (SELF.description IN ['flat'])) OR
+ (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
+ | (((sar.description = 'slot end usage') AND
+ (sar.name IN ['course of travel start','course of travel end'])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar))))
+ | (((fcr.related_shape_aspect.description = 'end condition occurrence') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
+ TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
+ TYPEOF(fcr.relating_shape_aspect))))) >=
+ 1;
+END_ENTITY;
+
+ENTITY small_area_face
+ SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+ENTITY small_area_surface
+ SUBTYPE OF (nearly_degenerate_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+ENTITY small_area_surface_patch
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
+END_ENTITY;
+
+ENTITY small_volume_solid
+ SUBTYPE OF (inapt_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE']);
+END_ENTITY;
+
+ENTITY software_for_data_quality_check;
+ description : text;
+ software_name : text;
+ software_version : text;
+ data_quality : data_quality_definition_representation_relationship;
+END_ENTITY;
+
+ENTITY solid_angle_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_ANGLE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY solid_curve_font
+ SUBTYPE OF (pre_defined_curve_font);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY solid_with_angle_based_chamfer
+ SUBTYPE OF (solid_with_chamfered_edges);
+ offset_distance : positive_length_measure;
+ left_offset : BOOLEAN;
+ offset_angle : positive_plane_angle_measure;
+END_ENTITY;
+
+ENTITY solid_with_chamfered_edges
+ ABSTRACT SUPERTYPE OF (ONEOF(solid_with_single_offset_chamfer, solid_with_double_offset_chamfer,
+ solid_with_angle_based_chamfer))
+ SUBTYPE OF (edge_blended_solid);
+END_ENTITY;
+
+ENTITY solid_with_circular_pattern
+ SUPERTYPE OF (solid_with_incomplete_circular_pattern)
+ SUBTYPE OF (solid_with_shape_element_pattern);
+ replicate_count : positive_integer;
+ angular_spacing : plane_angle_measure;
+ radial_alignment : BOOLEAN;
+ reference_point : point;
+END_ENTITY;
+
+ENTITY solid_with_circular_pocket
+ SUBTYPE OF (solid_with_pocket);
+ pocket_radius : positive_length_measure;
+WHERE
+ WR1: SELF\solid_with_pocket.floor_blend_radius <= pocket_radius;
+END_ENTITY;
+
+ENTITY solid_with_circular_protrusion
+ SUBTYPE OF (solid_with_protrusion);
+ protrusion_radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY solid_with_constant_radius_edge_blend
+ SUBTYPE OF (edge_blended_solid);
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY solid_with_depression
+ ABSTRACT SUPERTYPE OF (solid_with_through_depression ANDOR
+ ONEOF(solid_with_hole, solid_with_pocket, solid_with_groove))
+ SUBTYPE OF (modified_solid_with_placed_configuration);
+ depth : positive_length_measure;
+END_ENTITY;
+
+ENTITY solid_with_double_offset_chamfer
+ SUBTYPE OF (solid_with_chamfered_edges);
+ left_offset_distance : positive_length_measure;
+ right_offset_distance : positive_length_measure;
+END_ENTITY;
+
+ENTITY solid_with_excessive_number_of_voids
+ SUBTYPE OF (inapt_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY solid_with_general_pocket
+ SUBTYPE OF (solid_with_pocket);
+ profile : positioned_sketch;
+ reference_point : point;
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] *
+ TYPEOF(profile.sketch_basis)) =
+ 1;
+ WR2: profile IN using_items(reference_point, []);
+END_ENTITY;
+
+ENTITY solid_with_general_protrusion
+ SUBTYPE OF (solid_with_protrusion);
+ profile : positioned_sketch;
+ reference_point : point;
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] *
+ TYPEOF(profile.sketch_basis)) =
+ 1;
+ WR2: profile IN using_items(reference_point, []);
+END_ENTITY;
+
+ENTITY solid_with_groove
+ SUBTYPE OF (solid_with_depression);
+ groove_radius : positive_length_measure;
+ groove_width : positive_length_measure;
+ draft_angle : plane_angle_measure;
+ floor_fillet_radius : non_negative_length_measure;
+ external_groove : BOOLEAN;
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY solid_with_incomplete_circular_pattern
+ SUBTYPE OF (solid_with_circular_pattern);
+ omitted_instances : SET [1 : ?] OF positive_integer;
+WHERE
+ WR1: SIZEOF(omitted_instances) < SELF\solid_with_circular_pattern.replicate_count;
+ WR2: SIZEOF(QUERY(q <* omitted_instances | q > SELF\solid_with_circular_pattern.replicate_count)) = 0;
+END_ENTITY;
+
+ENTITY solid_with_incomplete_rectangular_pattern
+ SUBTYPE OF (solid_with_rectangular_pattern);
+ omitted_instances : SET [1 : ?] OF LIST [2 : 2] OF positive_integer;
+WHERE
+ WR1: NOT ([1,1] IN omitted_instances);
+ WR2: SIZEOF(omitted_instances) <
+ ((SELF\solid_with_rectangular_pattern.row_count * SELF\solid_with_rectangular_pattern.column_count) - 1);
+ WR3: SIZEOF(QUERY(q
+ <* omitted_instances
+ | ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR
+ (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) =
+ 0;
+END_ENTITY;
+
+ENTITY solid_with_pocket
+ ABSTRACT SUPERTYPE OF (ONEOF(solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket))
+ SUBTYPE OF (solid_with_depression);
+ floor_blend_radius : non_negative_length_measure;
+ draft_angle : plane_angle_measure;
+END_ENTITY;
+
+ENTITY solid_with_protrusion
+ ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_protrusion, solid_with_rectangular_protrusion,
+ solid_with_general_protrusion))
+ SUBTYPE OF (modified_solid_with_placed_configuration);
+ protrusion_height : positive_length_measure;
+ protrusion_draft_angle : plane_angle_measure;
+END_ENTITY;
+
+ENTITY solid_with_rectangular_pattern
+ SUPERTYPE OF (solid_with_incomplete_rectangular_pattern)
+ SUBTYPE OF (solid_with_shape_element_pattern);
+ row_count : positive_integer;
+ column_count : positive_integer;
+ row_spacing : length_measure;
+ column_spacing : length_measure;
+WHERE
+ WR1: (row_count * column_count) > 1;
+END_ENTITY;
+
+ENTITY solid_with_rectangular_pocket
+ SUBTYPE OF (solid_with_pocket);
+ pocket_length : positive_length_measure;
+ pocket_width : positive_length_measure;
+ corner_radius : non_negative_length_measure;
+WHERE
+ WR1: (corner_radius < pocket_width / 2) AND (corner_radius < pocket_length / 2);
+END_ENTITY;
+
+ENTITY solid_with_rectangular_protrusion
+ SUBTYPE OF (solid_with_protrusion);
+ protrusion_length : positive_length_measure;
+ protrusion_width : positive_length_measure;
+ protrusion_corner_radius : non_negative_length_measure;
+WHERE
+ WR1: (protrusion_corner_radius <= protrusion_width / 2) AND (protrusion_corner_radius <= protrusion_length / 2);
+END_ENTITY;
+
+ENTITY solid_with_shape_element_pattern
+ ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_pattern, solid_with_rectangular_pattern))
+ SUBTYPE OF (modified_solid_with_placed_configuration);
+ replicated_element : modified_solid_with_placed_configuration;
+END_ENTITY;
+
+ENTITY solid_with_single_offset_chamfer
+ SUBTYPE OF (solid_with_chamfered_edges);
+ offset_distance : positive_length_measure;
+END_ENTITY;
+
+ENTITY solid_with_variable_radius_edge_blend
+ SUBTYPE OF (track_blended_solid);
+ point_list : LIST [2 : ?] OF point;
+ radius_list : LIST [2 : ?] OF positive_length_measure;
+ edge_function_list : LIST [1 : ?] OF blend_radius_variation_type;
+WHERE
+ WR1: SIZEOF(point_list) = SIZEOF(radius_list);
+ WR2: SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1;
+ WR3: NOT ((point_list[1] = point_list[HIINDEX(point_list)]) AND
+ NOT (radius_list[1] = radius_list[HIINDEX(radius_list)]));
+END_ENTITY;
+
+ENTITY solid_with_wrong_number_of_voids
+ SUBTYPE OF (erroneous_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
+ WR3: validate_locations_of_extreme_value_type(SELF, []);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+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;
+
+ENTITY sourced_requirement
+ SUBTYPE OF (group_assignment);
+ SELF\group_assignment.assigned_group : requirement_source;
+ items : SET [1 : 1] OF product_definition;
+END_ENTITY;
+
+ENTITY specification_definition
+ SUBTYPE OF (product_definition);
+END_ENTITY;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
+ | pdr.relating_product_definition :=: next_usage.relating_product_definition)) =
+ 1);
+ WR5: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] *
+ TYPEOF(upper_usage)) =
+ 1;
+END_ENTITY;
+
+ENTITY sphere
+ SUBTYPE OF (geometric_representation_item);
+ radius : positive_length_measure;
+ centre : point;
+END_ENTITY;
+
+ENTITY spherical_cap
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'internal angle')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY spherical_surface
+ SUBTYPE OF (elementary_surface);
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY spherical_volume
+ SUBTYPE OF (volume);
+ position : axis2_placement_3d;
+ radius : positive_length_measure;
+END_ENTITY;
+
+ENTITY spotface_definition
+ SUBTYPE OF (explicit_round_hole);
+ spotface_radius : positive_length_measure_with_unit;
+ spotface_radius_tolerance : OPTIONAL tolerance_value;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(spotface_radius_tolerance\tolerance_value.lower_bound);
+ WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(spotface_radius_tolerance\tolerance_value.upper_bound);
+END_ENTITY;
+
+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;
+
+ENTITY spotface_occurrence
+ SUBTYPE OF (counterbore_hole_occurrence);
+ SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
+END_ENTITY;
+
+ENTITY spotface_occurrence_in_assembly
+ SUBTYPE OF (counterbore_hole_occurrence_in_assembly);
+ SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
+END_ENTITY;
+
+ENTITY sql_mappable_defined_function
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (defined_function);
+END_ENTITY;
+
+ENTITY square_root_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY square_u_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'width'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'first radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'first angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR10: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR11: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+ WR12: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'depth'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY standard_table_function
+ SUBTYPE OF (linearized_table_function);
+ order : ordering_type;
+WHERE
+ WR1: extremal_position_check(SELF);
+END_ENTITY;
+
+ENTITY standard_uncertainty
+ SUPERTYPE OF (expanded_uncertainty)
+ SUBTYPE OF (uncertainty_qualifier);
+ uncertainty_value : REAL;
+END_ENTITY;
+
+ENTITY start_request
+ SUBTYPE OF (action_request_assignment);
+ items : SET [1 : ?] OF start_request_item;
+END_ENTITY;
+
+ENTITY start_work
+ SUBTYPE OF (action_assignment);
+ items : SET [1 : ?] OF work_item;
+END_ENTITY;
+
+ENTITY state_definition_to_state_assignment_relationship
+ SUBTYPE OF (ascribable_state_relationship);
+ relation_type : STRING;
+WHERE
+ WR1: acyclic_state_definition_to_state_assignment_relationship(SELF,
+ [SELF\ascribable_state_relationship.related_ascribable_state],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP');
+END_ENTITY;
+
+ENTITY state_observed;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY state_observed_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_state_observed : state_observed;
+ role : state_observed_role;
+END_ENTITY;
+
+ENTITY state_observed_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_state_observed : SET [1 : ?] OF state_observed;
+ related_state_observed : SET [1 : ?] OF state_observed;
+END_ENTITY;
+
+ENTITY state_observed_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY state_predicted
+ SUBTYPE OF (state_observed);
+END_ENTITY;
+
+ENTITY state_type;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY state_type_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_state_type : state_type;
+ role : state_type_role;
+END_ENTITY;
+
+ENTITY state_type_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_state_type : SET [1 : ?] OF state_type;
+ related_state_type : SET [1 : ?] OF state_type;
+END_ENTITY;
+
+ENTITY state_type_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY statechar_applied_object
+ SUBTYPE OF (characterized_object, state_observed_assignment);
+END_ENTITY;
+
+ENTITY statechar_object
+ SUBTYPE OF (characterized_object, state_observed);
+END_ENTITY;
+
+ENTITY statechar_relationship_object
+ SUBTYPE OF (characterized_object, state_observed_relationship);
+END_ENTITY;
+
+ENTITY statechar_type_applied_object
+ SUBTYPE OF (characterized_object, state_type_assignment);
+END_ENTITY;
+
+ENTITY statechar_type_object
+ SUBTYPE OF (characterized_object, state_type);
+END_ENTITY;
+
+ENTITY statechar_type_relationship_object
+ SUBTYPE OF (characterized_object, state_type_relationship);
+END_ENTITY;
+
+ENTITY steep_angle_between_adjacent_edges
+ SUBTYPE OF (steep_geometry_transition_across_edge);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
+END_ENTITY;
+
+ENTITY steep_angle_between_adjacent_faces
+ SUBTYPE OF (steep_geometry_transition_across_edge);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
+END_ENTITY;
+
+ENTITY steep_geometry_transition_across_edge
+ ABSTRACT SUPERTYPE OF (ONEOF(steep_angle_between_adjacent_edges, steep_angle_between_adjacent_faces))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY step
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'course of travel occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description =
+ 'path feature component usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'removal boundary occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'profile usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR4: SIZEOF(QUERY(pdr
+ <* get_property_definition_representations(SELF)
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'maximum feature limit'))) >=
+ 0;
+ WR5: SIZEOF(QUERY(pds
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
+ (SIZEOF(QUERY(csa
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
+ TYPEOF(csa)) AND
+ (csa.name = 'uncut volume') AND
+ (SIZEOF(QUERY(sar
+ <* csa.component_relationships
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(sar)) AND
+ (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION'] *
+ TYPEOF(sar.related_shape_aspect)) =
+ 1)))) =
+ 1)))) <=
+ 1)))) =
+ 1;
+END_ENTITY;
+
+ENTITY straightness_tolerance
+ SUBTYPE OF (geometric_tolerance);
+WHERE
+ WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
+END_ENTITY;
+
+ENTITY strict_triangular_matrix
+ SUBTYPE OF (triangular_matrix);
+ main_diagonal_value : maths_value;
+END_ENTITY;
+
+ENTITY string_defined_function
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (defined_function, string_expression);
+END_ENTITY;
+
+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;
+
+ENTITY string_literal
+ SUBTYPE OF (simple_string_expression, generic_literal);
+ the_value : STRING;
+END_ENTITY;
+
+ENTITY string_variable
+ SUBTYPE OF (simple_string_expression, variable);
+END_ENTITY;
+
+ENTITY structured_dimension_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(TYPEOF(SELF) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) =
+ 0;
+ WR2: SIZEOF(QUERY(ato
+ <* QUERY(con
+ <* SELF.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
+ TYPEOF(con)))
+ | (ato.name = 'dimension value'))) >=
+ 1;
+ WR4: SIZEOF(QUERY(dcr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(dcr)) AND
+ (dcr.name = 'prefix'))) <=
+ 1;
+ WR5: SIZEOF(QUERY(dcr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(dcr)) AND
+ (dcr.name = 'suffix'))) <=
+ 1;
+ WR6: NOT ((SIZEOF(QUERY(ato
+ <* QUERY(con
+ <* SELF.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
+ TYPEOF(con)))
+ | (ato.name = 'prefix text'))) >
+ 0)) OR
+ (SIZEOF(QUERY(dcr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(dcr)) AND
+ (dcr.name = 'prefix'))) =
+ 1);
+ WR7: NOT (SIZEOF(QUERY(ato
+ <* QUERY(con
+ <* SELF.contents
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
+ TYPEOF(con)))
+ | (ato.name = 'suffix text'))) >
+ 0) OR
+ (SIZEOF(QUERY(dcr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
+ TYPEOF(dcr)) AND
+ (dcr.name = 'suffix'))) =
+ 1);
+END_ENTITY;
+
+ENTITY structured_message
+ SUBTYPE OF (product);
+END_ENTITY;
+
+ENTITY structured_text_composition
+ SUBTYPE OF (compound_representation_item);
+END_ENTITY;
+
+ENTITY structured_text_representation
+ SUBTYPE OF (representation);
+ SELF\representation.items : SET [1 : ?] OF string_representation_item_select;
+END_ENTITY;
+
+ENTITY styled_item
+ SUBTYPE OF (representation_item);
+ styles : SET [0 : ?] OF presentation_style_assignment;
+ item : styled_item_target;
+WHERE
+ WR1: (SIZEOF(styles) = 0) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_TESSELLATED_ITEM_WITH_COLOURS' IN TYPEOF(SELF)) OR
+ (SIZEOF(styles) = 1) OR
+ (SIZEOF(styles) > 1) AND
+ (SIZEOF(QUERY(pres_style
+ <* styles
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
+ TYPEOF(pres_style)))) =
+ 0);
+ WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item));
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(item)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM' IN TYPEOF(SELF));
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY subedge
+ SUBTYPE OF (edge);
+ parent_edge : edge;
+END_ENTITY;
+
+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))));
+END_ENTITY;
+
+ENTITY subsketch
+ SUBTYPE OF (geometric_representation_item);
+ subsketch_elements : SET [1 : ?] OF sketch_element_select;
+ owning_sketch : sketch_type_select;
+WHERE
+ WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' IN TYPEOF(owning_sketch)) AND
+ (SIZEOF(QUERY(q <* subsketch_elements | NOT (owning_sketch IN using_representations(q)))) = 0)) XOR
+ ((SIZEOF(TYPEOF(owning_sketch) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIONED_SKETCH',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSKETCH']) =
+ 1) AND
+ (SIZEOF(QUERY(q <* subsketch_elements | NOT (owning_sketch IN using_items(q, [])))) = 0));
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index1)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY summary_report_request
+ SUBTYPE OF (data_quality_report_request);
+ summary_report_request_type : summary_report_type;
+END_ENTITY;
+
+ENTITY summary_report_request_with_number_of_instances
+ SUBTYPE OF (data_equivalence_report_request);
+ report_request_type : SET [1 : 3] OF summary_report_style_type;
+END_ENTITY;
+
+ENTITY supplied_part_relationship
+ SUBTYPE OF (product_definition_relationship);
+END_ENTITY;
+
+ENTITY surface
+ SUPERTYPE OF (ONEOF(elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica))
+ SUBTYPE OF (geometric_representation_item);
+END_ENTITY;
+
+ENTITY surface_condition_callout
+ SUBTYPE OF (draughting_callout);
+WHERE
+ WR1: SIZEOF(QUERY(c
+ <* SELF.contents
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'] *
+ TYPEOF(c)) <>
+ 1)) =
+ 0;
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR
+ (master_representation <> pcurve_s1);
+ WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR
+ (master_representation <> pcurve_s2);
+ WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(curve_3d));
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR
+ (reference_surface IN (directrix\surface_curve.basis_surface));
+END_ENTITY;
+
+ENTITY surface_curve_swept_surface
+ SUBTYPE OF (swept_surface);
+ directrix : curve;
+ reference_surface : surface;
+WHERE
+ WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR
+ (reference_surface IN (directrix\surface_curve.basis_surface));
+END_ENTITY;
+
+ENTITY surface_distance_assembly_constraint_with_dimension
+ SUBTYPE OF (binary_assembly_constraint, sdgc_with_dimension);
+END_ENTITY;
+
+ENTITY surface_distance_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF surface;
+ SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
+ near_points : SET [0 : 4] OF near_point_relationship;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
+ WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
+ WR3: SIZEOF(QUERY(q
+ <* near_points
+ | NOT (q\representation_item_relationship.relating_representation_item IN
+ SELF\explicit_constraint.reference_elements))) =
+ 0;
+END_ENTITY;
+
+ENTITY surface_of_linear_extrusion
+ SUBTYPE OF (swept_surface);
+ extrusion_axis : vector;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
+ TYPEOF(lr)))) =
+ 0;
+END_ENTITY;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(parent_surface)));
+END_ENTITY;
+
+ENTITY surface_patch_set
+ SUBTYPE OF (geometric_representation_item);
+ patches : SET [1 : ?] OF surface_patch;
+END_ENTITY;
+
+ENTITY surface_profile_tolerance
+ SUBTYPE OF (geometric_tolerance);
+END_ENTITY;
+
+ENTITY surface_rendering_properties;
+ rendered_colour : colour;
+END_ENTITY;
+
+ENTITY surface_replica
+ SUBTYPE OF (surface);
+ parent_surface : surface;
+ transformation : cartesian_transformation_operator_3d;
+WHERE
+ WR1: acyclic_surface_replica(SELF, parent_surface);
+END_ENTITY;
+
+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;
+
+ENTITY surface_smoothness_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF surface_patch_set;
+ u_smoothness : transition_code;
+ v_smoothness : transition_code;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+END_ENTITY;
+
+ENTITY surface_style_boundary
+ SUBTYPE OF (founded_item);
+ style_of_boundary : curve_or_render;
+END_ENTITY;
+
+ENTITY surface_style_control_grid
+ SUBTYPE OF (founded_item);
+ style_of_control_grid : curve_or_render;
+END_ENTITY;
+
+ENTITY surface_style_fill_area
+ SUBTYPE OF (founded_item);
+ fill_area : fill_area_style;
+END_ENTITY;
+
+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;
+
+ENTITY surface_style_reflectance_ambient;
+ ambient_reflectance : REAL;
+END_ENTITY;
+
+ENTITY surface_style_reflectance_ambient_diffuse
+ SUBTYPE OF (surface_style_reflectance_ambient);
+ diffuse_reflectance : REAL;
+END_ENTITY;
+
+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;
+
+ENTITY surface_style_rendering;
+ rendering_method : shading_surface_method;
+ surface_colour : colour;
+END_ENTITY;
+
+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;
+
+ENTITY surface_style_segmentation_curve
+ SUBTYPE OF (founded_item);
+ style_of_segmentation_curve : curve_or_render;
+END_ENTITY;
+
+ENTITY surface_style_silhouette
+ SUBTYPE OF (founded_item);
+ style_of_silhouette : curve_or_render;
+END_ENTITY;
+
+ENTITY surface_style_transparent;
+ transparency : REAL;
+WHERE
+ WR1: {0.0 <= transparency <= 1.0};
+END_ENTITY;
+
+ENTITY surface_style_usage
+ SUBTYPE OF (founded_item);
+ side : surface_side;
+ style : surface_side_style_select;
+END_ENTITY;
+
+ENTITY surface_texture_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: SIZEOF(QUERY(i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] *
+ TYPEOF(i)) <>
+ 1)) =
+ 0;
+ WR2: (SIZEOF(QUERY(i
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i))) =
+ 1) AND
+ (SIZEOF(QUERY(i
+ <* SELF.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i.name = 'measuring method'))) =
+ 1);
+ WR3: SIZEOF(QUERY(i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) =
+ 1)) >
+ 0;
+ WR4: (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')) <=
+ 1) AND
+ (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) =
+ 0) AND
+ (SIZEOF(QUERY(rr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
+ | rr.rep_2.name = 'measuring direction')) =
+ SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')));
+ WR5: (SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | SIZEOF(QUERY(gpa
+ <* USEDIN(pdr.definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
+ TYPEOF(gpa.base_definition)) AND
+ (gpa\general_property_association.base_definition\general_property.name =
+ 'surface_condition'))) =
+ 1)) =
+ 1);
+END_ENTITY;
+
+ENTITY surface_with_excessive_patches_in_one_direction
+ SUBTYPE OF (overcomplex_geometry);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT']);
+ WR4: validate_locations_of_extreme_value_type(SELF, []);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY surface_with_small_curvature_radius
+ SUBTYPE OF (geometry_with_local_near_degeneracy);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY surfaced_open_shell
+ SUBTYPE OF (open_shell);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\connected_face_set.cfs_faces
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) =
+ 0;
+END_ENTITY;
+
+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: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface);
+END_ENTITY;
+
+ENTITY swept_curve_surface_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF surface;
+ SELF\explicit_constraint.reference_elements : SET [1 : 1] OF swept_surface_or_solid;
+END_ENTITY;
+
+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;
+
+ENTITY swept_face_solid
+ SUPERTYPE OF (ONEOF(extruded_face_solid, revolved_face_solid))
+ SUBTYPE OF (solid_model);
+ swept_face : face_surface;
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry);
+END_ENTITY;
+
+ENTITY swept_point_curve_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve;
+ SELF\explicit_constraint.reference_elements : SET [1 : 1] OF swept_face_solid;
+END_ENTITY;
+
+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;
+
+ENTITY symbol
+ SUBTYPE OF (representation_item);
+END_ENTITY;
+
+ENTITY symbol_colour;
+ colour_of_symbol : colour;
+END_ENTITY;
+
+ENTITY symbol_representation
+ SUBTYPE OF (representation);
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi)))) =
+ 0;
+END_ENTITY;
+
+ENTITY symbol_style
+ SUBTYPE OF (founded_item);
+ name : label;
+ style_of_symbol : symbol_style_select;
+END_ENTITY;
+
+ENTITY symbol_target
+ SUBTYPE OF (geometric_representation_item);
+ placement : axis2_placement;
+ x_scale : positive_ratio_measure;
+ y_scale : positive_ratio_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY symmetric_shape_aspect
+ SUBTYPE OF (shape_aspect);
+INVERSE
+ basis_relationships : SET [1:?] OF shape_aspect_deriving_relationship FOR related_shape_aspect;
+END_ENTITY;
+
+ENTITY symmetry_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [2 : 2] OF geometric_representation_item;
+ mirror_element : linear_geometry_constraint_element;
+WHERE
+ WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
+ WR2: SIZEOF(TYPEOF(mirror_element) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR']) =
+ 0;
+ WR3: NOT ((SELF\geometric_representation_item.dim = 2) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(mirror_element)));
+END_ENTITY;
+
+ENTITY symmetry_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY system_breakdown_context
+ SUBTYPE OF (breakdown_context);
+END_ENTITY;
+
+ENTITY system_element_usage
+ SUBTYPE OF (breakdown_element_usage);
+END_ENTITY;
+
+ENTITY table_representation_item
+ SUBTYPE OF (compound_representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(itet
+ <* SELF\compound_representation_item.item_element
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROW_REPRESENTATION_ITEM' IN
+ TYPEOF(itet)))) =
+ 0;
+END_ENTITY;
+
+ENTITY tactile_appearance_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: SIZEOF(QUERY(i
+ <* SELF.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) <>
+ 1)) =
+ 0;
+ WR2: SIZEOF(QUERY(i <* SELF.items | name = 'depth')) <= 1;
+ WR3: (SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | SIZEOF(QUERY(gpa
+ <* USEDIN(pdr.definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
+ TYPEOF(gpa.base_definition)) AND
+ (gpa\general_property_association.base_definition\general_property.name =
+ 'surface_condition'))) =
+ 1)) =
+ 1);
+END_ENTITY;
+
+ENTITY tagged_text_format
+ SUBTYPE OF (representation_context);
+END_ENTITY;
+
+ENTITY tagged_text_item
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY tan_function
+ SUBTYPE OF (unary_function_call);
+END_ENTITY;
+
+ENTITY tangent
+ SUBTYPE OF (derived_shape_aspect);
+WHERE
+ WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
+END_ENTITY;
+
+ENTITY tangent_assembly_constraint
+ SUBTYPE OF (binary_assembly_constraint, tangent_geometric_constraint);
+END_ENTITY;
+
+ENTITY tangent_geometric_constraint
+ SUBTYPE OF (explicit_geometric_constraint);
+ SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
+ SELF\explicit_constraint.reference_elements : SET [0 : ?] OF curve_or_surface_constraint_element;
+ near_points : SET [0 : ?] OF near_point_relationship;
+ tangent_contact : tangent_contact_type;
+WHERE
+ WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
+ (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
+ WR2: NOT ((SELF\geometric_representation_item.dim = 2) AND (tangent_contact = surface_contact));
+ WR3: SIZEOF(QUERY(q
+ <* near_points
+ | NOT (q\representation_item_relationship.relating_representation_item IN
+ SELF\explicit_constraint.reference_elements))) =
+ 0;
+END_ENTITY;
+
+ENTITY taper
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR4: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'direction'))) =
+ 1)))) =
+ 0));
+END_ENTITY;
+
+ENTITY tee_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'width'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR7: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'depth'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'cross bar width'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'cross bar depth'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR10: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'first offset'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR11: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second offset'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR12: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'first angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR13: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'second angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR14: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'radius'))) <=
+ 1))) =
+ 0))) =
+ 0;
+ WR15: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+END_ENTITY;
+
+ENTITY terminal_feature
+ SUBTYPE OF (contact_feature);
+END_ENTITY;
+
+ENTITY terminal_location_group
+ SUBTYPE OF (terminal_feature);
+END_ENTITY;
+
+ENTITY terminator_symbol
+ SUBTYPE OF (annotation_symbol_occurrence);
+ annotated_curve : annotation_curve_occurrence;
+END_ENTITY;
+
+ENTITY tessellated_annotation_occurrence
+ SUBTYPE OF (annotation_occurrence);
+ SELF\styled_item.item : tessellated_geometric_set;
+END_ENTITY;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CUBIC_BEZIER_TRIANGULATED_FACE') IN TYPEOF(face1));
+ WR4: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CUBIC_BEZIER_TRIANGULATED_FACE') IN TYPEOF(face2));
+END_ENTITY;
+
+ENTITY tessellated_curve_set
+ SUBTYPE OF (tessellated_item);
+ coordinates : coordinates_list;
+ line_strips : LIST [1 : ?] OF LIST [2 : ?] OF INTEGER;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY tessellated_geometric_set
+ SUBTYPE OF (tessellated_item);
+ children : SET [1 : ?] OF tessellated_item;
+END_ENTITY;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION' IN
+ TYPEOF(using_rep)))) =
+ 0;
+END_ENTITY;
+
+ENTITY tessellated_point_set
+ SUBTYPE OF (tessellated_item);
+ coordinates : coordinates_list;
+ point_list : LIST [1 : ?] OF INTEGER;
+END_ENTITY;
+
+ENTITY tessellated_shape_representation
+ SUBTYPE OF (shape_representation);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
+ TYPEOF(SELF\representation.context_of_items);
+ WR2: NOT (SIZEOF(QUERY(it
+ <* SELF.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_ITEM' IN TYPEOF(it))) =
+ 0);
+END_ENTITY;
+
+ENTITY tessellated_shape_representation_with_accuracy_parameters
+ SUBTYPE OF (tessellated_shape_representation);
+ tessellation_accuracy_parameters : SET [1 : ?] OF tessellation_accuracy_parameter_item;
+END_ENTITY;
+
+ENTITY tessellated_shell
+ SUBTYPE OF (tessellated_item);
+ items : SET [1 : ?] OF tessellated_structured_item;
+ topological_link : OPTIONAL connected_face_set;
+END_ENTITY;
+
+ENTITY tessellated_solid
+ SUBTYPE OF (tessellated_item);
+ items : SET [1 : ?] OF tessellated_structured_item;
+ geometric_link : OPTIONAL manifold_solid_brep;
+END_ENTITY;
+
+ENTITY tessellated_structured_item
+ SUPERTYPE OF (ONEOF(tessellated_face, tessellated_edge, tessellated_vertex))
+ SUBTYPE OF (tessellated_item);
+END_ENTITY;
+
+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;
+
+ENTITY tessellated_vertex
+ SUBTYPE OF (tessellated_structured_item);
+ coordinates : coordinates_list;
+ topological_link : OPTIONAL vertex_point;
+ point_index : INTEGER;
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY text_font;
+ id : identifier;
+ name : label;
+ description : text;
+INVERSE
+ glyphs : SET [1:?] OF character_glyph_font_usage FOR font;
+END_ENTITY;
+
+ENTITY text_font_family;
+ id : identifier;
+ name : label;
+ description : text;
+INVERSE
+ fonts : SET [1:?] OF text_font_in_family FOR family;
+END_ENTITY;
+
+ENTITY text_font_in_family;
+ font : text_font;
+ family : text_font_family;
+END_ENTITY;
+
+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;
+
+ENTITY text_literal_with_associated_curves
+ SUBTYPE OF (text_literal);
+ associated_curves : SET [1 : ?] OF curve;
+END_ENTITY;
+
+ENTITY text_literal_with_blanking_box
+ SUBTYPE OF (text_literal);
+ blanking : planar_box;
+END_ENTITY;
+
+ENTITY text_literal_with_delineation
+ SUBTYPE OF (text_literal);
+ delineation : text_delineation;
+END_ENTITY;
+
+ENTITY text_literal_with_extent
+ SUBTYPE OF (text_literal);
+ extent : planar_extent;
+END_ENTITY;
+
+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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_CHARACTER',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINED_CHARACTER_GLYPH',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'] *
+ TYPEOF(item)) =
+ 0))) >=
+ 1;
+ WR2: SIZEOF(QUERY(a2p
+ <* QUERY(item
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF(item))
+ | NOT ((SIZEOF(QUERY(at
+ <* QUERY(item
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN
+ TYPEOF(item))
+ | (at\mapped_item.mapping_target :=: a2p))) >=
+ 1) OR
+ (SIZEOF(QUERY(atc
+ <* QUERY(item
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_CHARACTER' IN
+ TYPEOF(item))
+ | (atc\mapped_item.mapping_target :=: a2p))) >=
+ 1)))) =
+ 0;
+END_ENTITY;
+
+ENTITY text_style
+ SUBTYPE OF (founded_item);
+ name : label;
+ character_appearance : character_style_select;
+END_ENTITY;
+
+ENTITY text_style_for_defined_font;
+ text_colour : colour;
+END_ENTITY;
+
+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;
+
+ENTITY text_style_with_mirror
+ SUBTYPE OF (text_style);
+ mirror_placement : axis2_placement;
+END_ENTITY;
+
+ENTITY text_style_with_spacing
+ SUBTYPE OF (text_style);
+ character_spacing : character_spacing_select;
+END_ENTITY;
+
+ENTITY texture_style_specification
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (founded_item);
+END_ENTITY;
+
+ENTITY texture_style_tessellation_specification
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (texture_style_specification);
+END_ENTITY;
+
+ENTITY thermal_component
+ SUBTYPE OF (assembly_component);
+END_ENTITY;
+
+ENTITY thermal_resistance_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMAL_RESISTANCE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY thermodynamic_temperature_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN
+ TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY thickened_face_solid
+ SUBTYPE OF (solid_model);
+ base_element : generalized_surface_select;
+ offset1 : length_measure;
+ offset2 : length_measure;
+WHERE
+ WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element))));
+ WR2: offset1 <> offset2;
+END_ENTITY;
+
+ENTITY thread
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'major diameter')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'minor diameter')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR4: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'pitch diameter')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'number of threads')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'fit class')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR7: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'form')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR8: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'qualifier')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR10: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'crest')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR12: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'partial area occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied area usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR13: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied shape') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR14: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'fit class 2')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR15: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'nominal size')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR16: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'thread runout') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'thread runout usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THREAD_RUNOUT' IN
+ TYPEOF(sdr.relating_shape_aspect)))) <=
+ 1)))) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY thread_runout
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
+ WR2: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))) =
+ 1)))) =
+ 0);
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'length of runout')))) =
+ 1)))) =
+ 0)))) <=
+ 1);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'included or extra') AND
+ (it.description IN ['included','extra'])))) =
+ 1)))) =
+ 0)))) =
+ 0);
+END_ENTITY;
+
+ENTITY time_interval;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+ENTITY time_interval_assignment
+ ABSTRACT SUPERTYPE;
+ assigned_time_interval : time_interval;
+ role : time_interval_role;
+END_ENTITY;
+
+ENTITY time_interval_based_effectivity
+ SUBTYPE OF (effectivity);
+ effectivity_period : time_interval;
+END_ENTITY;
+
+ENTITY time_interval_relationship;
+ name : label;
+ description : OPTIONAL text;
+ relating_time_interval : time_interval;
+ related_time_interval : time_interval;
+END_ENTITY;
+
+ENTITY time_interval_role;
+ name : label;
+ description : OPTIONAL text;
+END_ENTITY;
+
+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;
+
+ENTITY time_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY tolerance_zone
+ SUBTYPE OF (shape_aspect);
+ defining_tolerance : SET [1 : ?] OF tolerance_zone_target;
+ form : tolerance_zone_form;
+END_ENTITY;
+
+ENTITY tolerance_zone_definition
+ SUPERTYPE OF (ONEOF(projected_zone_definition, non_uniform_zone_definition, runout_zone_definition));
+ zone : tolerance_zone;
+ boundaries : SET [0 : ?] OF shape_aspect;
+END_ENTITY;
+
+ENTITY tolerance_zone_form;
+ name : label;
+END_ENTITY;
+
+ENTITY tolerance_zone_with_datum
+ SUPERTYPE OF (ONEOF(directed_tolerance_zone, oriented_tolerance_zone))
+ SUBTYPE OF (tolerance_zone);
+ datum_reference : datum_system;
+END_ENTITY;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
+ WR2: SIZEOF(USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGGREGATE_ID_ATTRIBUTE.IDENTIFIED_ITEM')) <=
+ 1;
+END_ENTITY;
+
+ENTITY topology_related_to_multiply_defined_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_faces, multiply_defined_vertices, multiply_defined_edges))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY topology_related_to_nearly_degenerate_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(short_length_edge, small_area_face, entirely_narrow_face))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY topology_related_to_overlapping_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_faces, partly_overlapping_edges))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY topology_related_to_self_intersecting_geometry
+ ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_loop, self_intersecting_shell, intersecting_connected_face_sets))
+ SUBTYPE OF (inapt_topology_and_geometry_relationship);
+END_ENTITY;
+
+ENTITY toroidal_surface
+ SUBTYPE OF (elementary_surface);
+ major_radius : positive_length_measure;
+ minor_radius : positive_length_measure;
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY total_runout_tolerance
+ SUBTYPE OF (geometric_tolerance_with_datum_reference);
+END_ENTITY;
+
+ENTITY track_blended_solid
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (edge_blended_solid);
+WHERE
+ WR1: check_continuous_edges(SELF\edge_blended_solid.blended_edges);
+END_ENTITY;
+
+ENTITY track_blended_solid_with_end_conditions
+ SUBTYPE OF (track_blended_solid);
+ end_conditions : LIST [2 : 2] OF blend_end_condition_select;
+WHERE
+ WR1: SIZEOF(TYPEOF(SELF) *
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) =
+ 1;
+ WR2: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])));
+ WR3: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) AND
+ (NOT ((end_conditions[1] :=: SELF\edge_blended_solid.blended_edges[1].edge_start) XOR
+ (end_conditions[1] :=: SELF\edge_blended_solid.blended_edges[1].edge_end))));
+ WR4: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])) AND
+ (NOT ((end_conditions[2] :=:
+ SELF\edge_blended_solid.blended_edges[HIINDEX(SELF\edge_blended_solid.blended_edges)].edge_start) XOR
+ (end_conditions[2] :=:
+ SELF\edge_blended_solid.blended_edges[HIINDEX(SELF\edge_blended_solid.blended_edges)].edge_end))));
+END_ENTITY;
+
+ENTITY transformation_with_derived_angle
+ SUPERTYPE OF (ONEOF(draped_defined_transformation, laid_defined_transformation))
+ SUBTYPE OF (item_defined_transformation);
+ SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select;
+ SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
+DERIVE
+ orientation_angle : plane_angle_measure := derive_angle(SELF\item_defined_transformation.transform_item_1,
+ SELF\item_defined_transformation.transform_item_2);
+WHERE
+ WR1: (SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[1] =
+ SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[1]) AND
+ (SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[2] =
+ SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[2]) AND
+ (SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[3] =
+ SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[3]);
+END_ENTITY;
+
+ENTITY transition_feature
+ SUPERTYPE OF (ONEOF(chamfer, edge_round, fillet))
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_FEATURE'] *
+ TYPEOF(SELF.of_shape.definition)) =
+ 1;
+ WR2: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_ROUND',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILLET'] *
+ TYPEOF(SELF)) =
+ 1;
+END_ENTITY;
+
+ENTITY transport_feature
+ SUBTYPE OF (shape_aspect);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+ENTITY turned_knurl
+ SUBTYPE OF (feature_definition);
+WHERE
+ WR1: (SELF\characterized_object.description IN ['diamond','diagonal','straight']);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation)) AND
+ ({6 <= SIZEOF(pdr.used_representation.items) <= 9}))) =
+ 1)) =
+ 1;
+ WR3: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'major diameter')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR5: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'nominal diameter')))) =
+ 1)))) =
+ 0)))) =
+ 0);
+ WR6: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'tooth depth')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR7: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'root fillet')))) <=
+ 1)))) =
+ 0)))) =
+ 0);
+ WR8: (SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
+ TYPEOF(pdr.used_representation)))
+ | (NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ (it.name = 'helix hand')))) =
+ 1)))) =
+ 0)))) =
+ 0));
+ WR11: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((sa_occ.description = 'partial area occurrence') AND
+ (SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied area usage') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+ WR12: (SIZEOF(QUERY(pds
+ <* QUERY(pd
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
+ TYPEOF(pd)))
+ | (NOT (SIZEOF(QUERY(sa_occ
+ <* USEDIN(pds,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
+ | ((SIZEOF(QUERY(sdr
+ <* QUERY(sar
+ <* USEDIN(sa_occ,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
+ | ((sar.description = 'applied shape') AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
+ TYPEOF(sar))))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(sdr.relating_shape_aspect)))) =
+ 1)))) =
+ 1)))) =
+ 0);
+END_ENTITY;
+
+ENTITY twisted_cross_sectional_group_shape_element
+ SUBTYPE OF (cross_sectional_group_shape_element);
+END_ENTITY;
+
+ENTITY two_direction_repeat_factor
+ SUBTYPE OF (one_direction_repeat_factor);
+ second_repeat_factor : vector;
+END_ENTITY;
+
+ENTITY type_qualifier;
+ name : label;
+END_ENTITY;
+
+ENTITY unary_boolean_expression
+ ABSTRACT SUPERTYPE OF (ONEOF(not_expression, odd_function))
+ SUBTYPE OF (boolean_expression, unary_generic_expression);
+END_ENTITY;
+
+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;
+
+ENTITY unary_generic_expression
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (generic_expression);
+ operand : generic_expression;
+END_ENTITY;
+
+ENTITY unary_numeric_expression
+ ABSTRACT SUPERTYPE
+ SUBTYPE OF (numeric_expression, unary_generic_expression);
+ SELF\unary_generic_expression.operand : numeric_expression;
+END_ENTITY;
+
+ENTITY unbound_parameter_environment
+ SUBTYPE OF (environment);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN
+ TYPEOF(SELF\environment.syntactic_representation)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER_SEMANTICS' IN
+ TYPEOF(SELF\environment.semantics));
+END_ENTITY;
+
+ENTITY unbound_variational_parameter
+ SUBTYPE OF (variational_parameter);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_PARAMETER_ENVIRONMENT' IN
+ TYPEOF(SELF\generic_variable.interpretation);
+END_ENTITY;
+
+ENTITY unbound_variational_parameter_semantics
+ SUBTYPE OF (variable_semantics);
+END_ENTITY;
+
+ENTITY uncertainty_assigned_representation
+ SUBTYPE OF (representation);
+ uncertainty : SET [1 : ?] OF uncertainty_measure_with_unit;
+END_ENTITY;
+
+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;
+
+ENTITY uncertainty_qualifier
+ SUPERTYPE OF (ONEOF(standard_uncertainty, qualitative_uncertainty));
+ measure_name : label;
+ description : text;
+END_ENTITY;
+
+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;
+
+ENTITY unconstrained_pair_value
+ SUBTYPE OF (pair_value);
+ SELF\pair_value.applies_to_pair : unconstrained_pair;
+ actual_placement : axis2_placement_3d;
+END_ENTITY;
+
+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;
+
+ENTITY uniform_curve
+ SUBTYPE OF (b_spline_curve);
+END_ENTITY;
+
+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;
+
+ENTITY uniform_resource_identifier
+ SUBTYPE OF (descriptive_representation_item);
+END_ENTITY;
+
+ENTITY uniform_surface
+ SUBTYPE OF (b_spline_surface);
+END_ENTITY;
+
+ENTITY uniform_volume
+ SUBTYPE OF (b_spline_volume);
+END_ENTITY;
+
+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;
+
+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;
+
+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;
+
+ENTITY unused_patches
+ SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_STRIP']);
+ WR5: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY unused_shape_element
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
+END_ENTITY;
+
+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;
+
+ENTITY user_defined_11
+ SUBTYPE OF (representation_item);
+END_ENTITY;
+
+ENTITY user_defined_curve_font
+ SUBTYPE OF (curve_style_font, mapped_item);
+END_ENTITY;
+
+ENTITY user_defined_marker
+ SUBTYPE OF (mapped_item, pre_defined_marker);
+END_ENTITY;
+
+ENTITY user_defined_terminator_symbol
+ SUBTYPE OF (mapped_item, pre_defined_symbol);
+END_ENTITY;
+
+ENTITY user_selected_elements
+ SUBTYPE OF (representation_item);
+ picked_items : SET [1 : ?] OF representation_item;
+END_ENTITY;
+
+ENTITY user_selected_shape_elements
+ SUBTYPE OF (user_selected_elements);
+ SELF\user_selected_elements.picked_items : SET [1 : ?] OF shape_representation_item;
+END_ENTITY;
+
+ENTITY validation
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY validation_software_identification;
+ id : identifier;
+ name : label;
+ description : OPTIONAL text;
+ software_name : label;
+ additional_name : label;
+ validation_criteria_or_results : validation_criteria_or_results_select;
+END_ENTITY;
+
+ENTITY value_format_type_qualifier;
+ format_type : value_format_type;
+END_ENTITY;
+
+ENTITY value_function
+ SUPERTYPE OF (int_value_function)
+ SUBTYPE OF (numeric_expression, unary_generic_expression);
+ SELF\unary_generic_expression.operand : string_expression;
+END_ENTITY;
+
+ENTITY value_range
+ SUBTYPE OF (compound_representation_item);
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY value_representation_item
+ SUBTYPE OF (representation_item);
+ value_component : measure_value;
+WHERE
+ WR1: SIZEOF(QUERY(rep
+ <* using_representations(SELF)
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
+ TYPEOF(rep.context_of_items)))) =
+ 0;
+END_ENTITY;
+
+ENTITY variable
+ ABSTRACT SUPERTYPE OF (ONEOF(numeric_variable, boolean_variable, string_variable))
+ SUBTYPE OF (generic_variable);
+END_ENTITY;
+
+ENTITY variable_expression
+ SUBTYPE OF (variable_semantics);
+ property_associated : property_variable_rep_select;
+END_ENTITY;
+
+ENTITY variable_semantics
+ ABSTRACT SUPERTYPE;
+END_ENTITY;
+
+ENTITY variational_current_representation_relationship
+ SUBTYPE OF (representation_relationship);
+ SELF\representation_relationship.rep_1 : variational_representation;
+ current_result : representation;
+UNIQUE
+ UR1: current_result;
+WHERE
+ WR1: QUERY(q
+ <* SELF\representation_relationship.rep_1.items
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN TYPEOF(q))) =
+ SELF\representation_relationship.rep_2.items;
+ WR2: SELF\representation_relationship.rep_1.context_of_items :=:
+ SELF\representation_relationship.rep_2.context_of_items;
+ WR3: SIZEOF(QUERY(q
+ <* SELF\representation_relationship.rep_2.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN
+ TYPEOF(q))) =
+ 0;
+ WR4: TYPEOF(SELF\representation_relationship.rep_1) - TYPEOF(SELF\representation_relationship.rep_2) =
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION'];
+ WR5: current_result :=: SELF\representation_relationship.rep_2;
+END_ENTITY;
+
+ENTITY variational_parameter
+ ABSTRACT SUPERTYPE OF (ONEOF(bound_variational_parameter, unbound_variational_parameter))
+ SUBTYPE OF (variational_representation_item, maths_variable);
+ parameter_description : OPTIONAL text;
+ parameter_current_value : maths_value;
+WHERE
+ WR1: member_of(parameter_current_value, SELF\maths_variable.values_space);
+ WR2: SELF\maths_variable.name = SELF\representation_item.name;
+END_ENTITY;
+
+ENTITY variational_representation
+ SUBTYPE OF (representation);
+INVERSE
+ cm_link : variational_current_representation_relationship FOR rep_1;
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* SELF\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN
+ TYPEOF(q))) >
+ 0;
+ WR2: SIZEOF(QUERY(q <* (SELF\representation.items - cm_link.rep_2.items) | invalidate_vrep_item(q))) = 0;
+END_ENTITY;
+
+ENTITY variational_representation_item
+ ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item)
+ SUBTYPE OF (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(q
+ <* using_representations(SELF)
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION' IN
+ TYPEOF(q)))) =
+ 0;
+ WR2: SIZEOF(QUERY(q <* using_representations(SELF) | NOT (SELF IN q.items))) = 0;
+END_ENTITY;
+
+ENTITY vector
+ SUBTYPE OF (geometric_representation_item);
+ orientation : direction;
+ magnitude : length_measure;
+WHERE
+ WR1: magnitude >= 0.0;
+END_ENTITY;
+
+ENTITY vector_style
+ SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
+END_ENTITY;
+
+ENTITY vee_profile
+ SUBTYPE OF (shape_aspect);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
+ TYPEOF(SELF.of_shape.definition);
+ WR2: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))) =
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
+ TYPEOF(it)) AND
+ (it.name = 'orientation'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR6: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'profile angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR8: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
+ TYPEOF(it)) =
+ 2) AND
+ (it.name = 'tilt angle'))) =
+ 1))) =
+ 0))) =
+ 0;
+ WR9: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'profile limit'))) <=
+ 1))) =
+ 0;
+ WR10: SIZEOF(QUERY(pd
+ <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | NOT (SIZEOF(QUERY(impl_rep
+ <* QUERY(pdr
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(pdr.used_representation))
+ | NOT (SIZEOF(QUERY(it
+ <* impl_rep.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(it)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
+ TYPEOF(it\measure_with_unit.value_component)) AND
+ (it.name = 'second length'))) <=
+ 1))) =
+ 0))) =
+ 0;
+END_ENTITY;
+
+ENTITY velocity_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VELOCITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+ENTITY verification
+ SUBTYPE OF (group);
+END_ENTITY;
+
+ENTITY verification_relationship
+ SUBTYPE OF (group_relationship);
+ SELF\group_relationship.relating_group : verification;
+ SELF\group_relationship.related_group : verification;
+END_ENTITY;
+
+ENTITY versioned_action_request;
+ id : identifier;
+ version : OPTIONAL label;
+ purpose : text;
+ description : OPTIONAL text;
+END_ENTITY;
+
+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;
+
+ENTITY vertex
+ SUBTYPE OF (topological_representation_item);
+END_ENTITY;
+
+ENTITY vertex_loop
+ SUBTYPE OF (loop);
+ loop_vertex : vertex;
+END_ENTITY;
+
+ENTITY vertex_on_edge
+ SUBTYPE OF (vertex);
+ parent_edge : edge_with_length;
+ distance_from_start : positive_length_measure;
+WHERE
+ WR1: distance_from_start < parent_edge.edge_length;
+END_ENTITY;
+
+ENTITY vertex_point
+ SUBTYPE OF (vertex, geometric_representation_item);
+ vertex_geometry : point;
+END_ENTITY;
+
+ENTITY vertex_shell
+ SUBTYPE OF (topological_representation_item);
+ vertex_shell_extent : vertex_loop;
+END_ENTITY;
+
+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: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+ENTITY visual_appearance_representation
+ SUBTYPE OF (representation);
+WHERE
+ WR1: ({3 <= SIZEOF(SELF.items) <= 9}) AND
+ (SIZEOF(QUERY(i
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i.name IN ['colour id','colour name','lustre','pattern','transparency','orientation']))) +
+ SIZEOF(QUERY(i
+ <* items
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) =
+ 1) AND
+ (i.name IN ['refraction index','opacity']))) +
+ SIZEOF(QUERY(i
+ <* items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
+ 1) AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(SELF,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | SIZEOF(QUERY(gpa
+ <* USEDIN(pdr.definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
+ TYPEOF(gpa.base_definition)) AND
+ (gpa\general_property_association.base_definition\general_property.name =
+ 'surface_condition'))) =
+ 1)) =
+ 1);
+END_ENTITY;
+
+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;
+
+ENTITY volume_measure_with_unit
+ SUBTYPE OF (measure_with_unit);
+WHERE
+ WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
+END_ENTITY;
+
+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;
+
+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;
+
+ENTITY volume_with_parametric_boundary
+ SUBTYPE OF (volume_with_faces);
+ outer_bound : LIST [6 : 6] OF face;
+END_ENTITY;
+
+ENTITY volume_with_shell
+ SUBTYPE OF (volume_with_faces);
+ outer_bound : closed_shell;
+END_ENTITY;
+
+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;
+
+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))) <= 366};
+ WR2: leap_year(SELF\date.year_component) OR {1 <= (day_component + (7 * (week_component - 1))) <= 365};
+END_ENTITY;
+
+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;
+
+ENTITY wrong_element_name
+ SUBTYPE OF (externally_conditioned_data_quality_criterion);
+WHERE
+ WR1: validate_ecdq_inspected_elements_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
+END_ENTITY;
+
+ENTITY wrongly_oriented_void
+ SUBTYPE OF (erroneous_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY wrongly_placed_loop
+ SUBTYPE OF (erroneous_topology_and_geometry_relationship);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE']);
+ WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND']);
+ WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
+END_ENTITY;
+
+ENTITY wrongly_placed_void
+ SUBTYPE OF (erroneous_manifold_solid_brep);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
+WHERE
+ WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
+ WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
+ WR3: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL']);
+ WR4: validate_accuracy_types(SELF, []);
+END_ENTITY;
+
+ENTITY xor_expression
+ SUBTYPE OF (binary_boolean_expression);
+ SELF\binary_generic_expression.operands : LIST [2 : 2] OF boolean_expression;
+END_ENTITY;
+
+ENTITY year_month
+ SUBTYPE OF (date);
+ month_component : month_in_year_number;
+END_ENTITY;
+
+ENTITY zero_surface_normal
+ SUBTYPE OF (geometry_with_local_irregularity);
+ SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
+WHERE
+ WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
+ TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
+ value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
+ WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
+ WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
+ WR4: validate_locations_of_extreme_value_type(SELF,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
+ WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
+END_ENTITY;
+
+ENTITY zone_breakdown_context
+ SUBTYPE OF (breakdown_context);
+END_ENTITY;
+
+ENTITY zone_element_usage
+ SUBTYPE OF (breakdown_element_usage);
+END_ENTITY;
+
+FUNCTION a3ma_get_accuracy_types(ei : SET [0 : ?] OF a3m_equivalence_accuracy_association) : SET [0 : ?] OF a3ma_accuracy_type_name;
+LOCAL
+ type_out : a3ma_measured_data_type_name;
+ retval : SET OF a3ma_accuracy_type_name := [];
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(ei);
+ type_out := a3ma_get_value_limit_type(ei[i].specific_accuracy.range);
+ retval := retval + [atna_others];
+ END_REPEAT;
+ RETURN(retval);
+END_FUNCTION;
+
+FUNCTION a3ma_get_detected_difference_type(ei : LIST [0 : ?] OF equivalence_detected_difference_select) : a3ma_detected_difference_type_name;
+LOCAL
+ type_out : SET OF STRING;
+ sizeei : INTEGER;
+END_LOCAL;
+ sizeei := SIZEOF(ei);
+ IF (sizeei = 0)
+ THEN
+ RETURN(ddna_no_element);
+ END_IF;
+ type_out := TYPEOF(ei[1]);
+ IF (SIZEOF(ei) > 1)
+ THEN
+ RETURN(ddna_others);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN type_out)
+ THEN
+ RETURN(ddna_assembly_component_usage);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_ASSEMBLY_CONSTRAINT' IN type_out)
+ THEN
+ RETURN(ddna_binary_assembly_constraint);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN type_out)
+ THEN
+ RETURN(ddna_cartesian_point);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN type_out)
+ THEN
+ RETURN(ddna_context_dependent_shape_representation);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
+ THEN
+ RETURN(ddna_count_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTI_LEVEL_REFERENCE_DESIGNATOR' IN type_out)
+ THEN
+ RETURN(ddna_multi_level_reference_designator);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ RETURN(ddna_volume_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MS_INSPECTED_EQUIVALENCE_ELEMENT_SELECT' IN type_out)
+ THEN
+ RETURN(ddna_a3ms_inspected_equivalence_element_select);
+ END_IF;
+ RETURN(ddna_others);
+END_FUNCTION;
+
+FUNCTION a3ma_get_element_type(ei : SET [1 : ?] OF inspected_equivalence_element_select) : a3ma_element_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := TYPEOF(ei[1]);
+ IF (SIZEOF(ei) > 1)
+ THEN
+ RETURN(etna_others);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OR_REFERENCE' IN type_out)
+ THEN
+ RETURN(etna_product_definition_or_reference);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN type_out)
+ THEN
+ RETURN(etna_shape_representation);
+ END_IF;
+ RETURN(etna_others);
+END_FUNCTION;
+
+FUNCTION a3ma_get_measured_type(ei : equivalence_measured_value_select) : a3ma_measured_data_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := TYPEOF(ei);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
+ THEN
+ RETURN(mdna_boolean_value);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_context_dependent_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_length_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MA_LENGTH_MEASURE_AND_CONTEXT_DEPENDENT_MEASURE_PAIR' IN
+ type_out)
+ THEN
+ RETURN(mdna_length_measure_and_context_dependent_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_plane_angle_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_volume_measure);
+ END_IF;
+ RETURN(mdna_others);
+END_FUNCTION;
+
+FUNCTION a3ma_get_value_limit_type(ei : shape_data_quality_value_limit_type_select) : a3ma_measured_data_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := value_limit_type(ei);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_context_dependent_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_length_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_plane_angle_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ RETURN(mdna_volume_measure);
+ END_IF;
+ RETURN(mdna_others);
+END_FUNCTION;
+
+FUNCTION a3ma_validate_accuracy_types(ei : accuracy_associated_target_select;
+ cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
+LOCAL
+ aeaa : SET OF a3m_equivalence_accuracy_association;
+ rp : SET OF representation;
+ tp : SET OF a3ma_accuracy_type_name := [];
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(cr.accuracy_types);
+ tp := tp + [cr.accuracy_types[i]];
+ END_REPEAT;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(ei))
+ THEN
+ aeaa := bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
+ IF (SIZEOF(cr.accuracy_types) = 0)
+ THEN
+ IF (SIZEOF(aeaa) = 0)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF (a3ma_get_accuracy_types(aeaa) = tp)
+ THEN
+ RETURN(true);
+ END_IF;
+ rp := bag_to_set(USEDIN(ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'));
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' IN TYPEOF(ei))
+ THEN
+ rp := [ei];
+ ELSE
+ rp := [];
+ END_IF;
+ END_IF;
+ aeaa := [];
+ REPEAT i := 1 TO SIZEOF(rp);
+ aeaa := aeaa +
+ bag_to_set(USEDIN(rp[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
+ END_REPEAT;
+ IF (a3ma_get_accuracy_types(aeaa) >= tp)
+ THEN
+ RETURN(true);
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION a3ma_validate_detected_difference_types(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
+LOCAL
+ deiir : data_equivalence_inspection_instance_report;
+ eiriwei : equivalence_instance_report_item_with_notable_instances;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ eiriwei := deiir.inspected_instances[i];
+ REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
+ IF (NOT (a3ma_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements) IN
+ cr.detected_difference_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF (NOT (a3ma_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
+ cr.detected_difference_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION a3ma_validate_element_types(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
+LOCAL
+ compared_et : a3ma_element_type_name;
+ comparing_et : a3ma_element_type_name;
+ deiir : data_equivalence_inspection_instance_report;
+ aeiiri : a3m_equivalence_inspection_instance_report_item;
+ deiep : data_equivalence_inspected_element_pair;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ aeiiri := deiir.inspected_instances[i];
+ deiep := aeiiri.inspected_element;
+ compared_et := a3ma_get_element_type(deiep.compared_elements);
+ comparing_et := a3ma_get_element_type(deiep.comparing_elements);
+ IF (NOT (compared_et IN cr.compared_element_types) OR NOT (comparing_et IN cr.comparing_element_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF (compared_et <> comparing_et)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION a3ma_validate_measured_type(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
+LOCAL
+ amdtn : a3ma_measured_data_type_name;
+ deicr : data_equivalence_inspection_criterion_report;
+ acriwmv : a3m_equivalence_criterion_report_item_with_measured_value;
+ deiir : data_equivalence_inspection_instance_report;
+ aeiiri : a3m_equivalence_inspection_instance_report_item;
+ eiriwei : equivalence_instance_report_item_with_notable_instances;
+END_LOCAL;
+ amdtn := cr.measured_data_type;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_CRITERION_REPORT' IN TYPEOF(ei))
+ THEN
+ deicr := ei;
+ REPEAT i := 1 TO SIZEOF(deicr.statistical_values);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION_REPORT_ITEM_WITH_MEASURED_VALUE' IN
+ TYPEOF(deicr.statistical_values[i]))
+ THEN
+ acriwmv := deicr.statistical_values[i];
+ IF (a3ma_get_measured_type(acriwmv.representative_measured_value) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ aeiiri := deiir.inspected_instances[i];
+ IF (a3ma_get_measured_type(aeiiri.measured_value_for_inspected_element) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ eiriwei := deiir.inspected_instances[i];
+ REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
+ IF (a3ma_get_measured_type(eiriwei.notable_instances[j].measured_value) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION a3ms_get_accuracy_types(ei : SET [0 : ?] OF a3m_equivalence_accuracy_association) : SET [0 : ?] OF a3ms_accuracy_type_name;
+LOCAL
+ type_out : a3ms_measured_data_type_name;
+ retval : SET OF a3ms_accuracy_type_name := [];
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(ei);
+ type_out := a3ms_get_value_limit_type(ei[i].specific_accuracy.range);
+ IF (type_out = mdns_area_measure)
+ THEN
+ retval := retval + [atns_area_measure];
+ ELSE
+ IF (type_out = mdns_length_measure)
+ THEN
+ retval := retval + [atns_length_measure];
+ ELSE
+ IF (type_out = mdns_plane_angle_measure)
+ THEN
+ retval := retval + [atns_plane_angle_measure];
+ ELSE
+ IF (type_out = mdns_volume_measure)
+ THEN
+ retval := retval + [atns_volume_measure];
+ ELSE
+ retval := retval + [atns_others];
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ RETURN(retval);
+END_FUNCTION;
+
+FUNCTION a3ms_get_detected_difference_type(ei : LIST [0 : ?] OF equivalence_detected_difference_select) : a3ms_detected_difference_type_name;
+LOCAL
+ type_out : SET OF STRING;
+ sizeei : INTEGER;
+END_LOCAL;
+ sizeei := SIZEOF(ei);
+ IF (sizeei = 0)
+ THEN
+ RETURN(ddns_no_element);
+ ELSE
+ type_out := TYPEOF(ei[1]);
+ REPEAT i := 2 TO sizeei;
+ IF (TYPEOF(ei[i]) <> type_out)
+ THEN
+ RETURN(ddns_others);
+ END_IF;
+ END_REPEAT;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_area_measure);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_cartesian_point);
+ ELSE
+ IF (sizeei = 2)
+ THEN
+ RETURN(ddns_two_cartesian_points);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_connected_face_set);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_count_measure);
+ ELSE
+ IF (sizeei = 2)
+ THEN
+ RETURN(ddns_two_count_measure);
+ ELSE
+ IF (sizeei = 3)
+ THEN
+ RETURN(ddns_three_count_measure);
+ ELSE
+ IF (sizeei = 4)
+ THEN
+ RETURN(ddns_four_count_measure);
+ ELSE
+ IF (sizeei = 5)
+ THEN
+ RETURN(ddns_five_count_measure);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_edge);
+ ELSE
+ RETURN(ddns_several_edges);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_face);
+ ELSE
+ RETURN(ddns_several_faces);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_length_measure);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_point_on_curve);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_point_on_surface);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ IF (sizeei = 1)
+ THEN
+ RETURN(ddns_volume_measure);
+ ELSE
+ RETURN(ddns_others);
+ END_IF;
+ END_IF;
+ END_IF;
+ RETURN(ddns_others);
+END_FUNCTION;
+
+FUNCTION a3ms_get_element_type(ei : SET [1 : ?] OF inspected_equivalence_element_select) : a3ms_element_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := TYPEOF(ei[1]);
+ IF (SIZEOF(ei) > 1)
+ THEN
+ RETURN(etns_others);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET' IN type_out)
+ THEN
+ RETURN(etns_connected_edge_set);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN type_out)
+ THEN
+ RETURN(etns_connected_face_set);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN type_out)
+ THEN
+ RETURN(etns_manifold_solid_brep);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_CLOUD_DATASET' IN type_out)
+ THEN
+ RETURN(etns_point_cloud_dataset);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN type_out)
+ THEN
+ RETURN(etns_shell_based_surface_model);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN type_out)
+ THEN
+ RETURN(etns_shell_based_wireframe_model);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN type_out)
+ THEN
+ RETURN(etns_vertex_point);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_REPRESENTATION_ITEM' IN type_out)
+ THEN
+ RETURN(etns_external_representation_item);
+ END_IF;
+ RETURN(etns_others);
+END_FUNCTION;
+
+FUNCTION a3ms_get_measured_type(ei : equivalence_measured_value_select) : a3ms_measured_data_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := TYPEOF(ei);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_area_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
+ THEN
+ RETURN(mdns_boolean_value);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_length_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_plane_angle_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_volume_measure);
+ END_IF;
+ RETURN(mdns_others);
+END_FUNCTION;
+
+FUNCTION a3ms_get_value_limit_type(ei : shape_data_quality_value_limit_type_select) : a3ms_measured_data_type_name;
+LOCAL
+ type_out : SET OF STRING;
+END_LOCAL;
+ type_out := value_limit_type(ei);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_area_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
+ THEN
+ RETURN(mdns_boolean_value);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_length_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_plane_angle_measure);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
+ THEN
+ RETURN(mdns_volume_measure);
+ END_IF;
+ RETURN(mdns_others);
+END_FUNCTION;
+
+FUNCTION a3ms_validate_accuracy_types(ei : accuracy_associated_target_select;
+ cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
+LOCAL
+ aeaa : SET OF a3m_equivalence_accuracy_association;
+ rp : SET OF representation;
+ tp : SET OF a3ms_accuracy_type_name := [];
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(cr.accuracy_types);
+ tp := tp + [cr.accuracy_types[i]];
+ END_REPEAT;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(ei))
+ THEN
+ aeaa := bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
+ IF (SIZEOF(cr.accuracy_types) = 0)
+ THEN
+ IF (SIZEOF(aeaa) = 0)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF (a3ms_get_accuracy_types(aeaa) = tp)
+ THEN
+ RETURN(true);
+ END_IF;
+ rp := bag_to_set(USEDIN(ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'));
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' IN TYPEOF(ei))
+ THEN
+ rp := [ei];
+ ELSE
+ rp := [];
+ END_IF;
+ END_IF;
+ aeaa := [];
+ REPEAT i := 1 TO SIZEOF(rp);
+ aeaa := aeaa +
+ bag_to_set(USEDIN(rp[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
+ END_REPEAT;
+ IF (a3ms_get_accuracy_types(aeaa) >= tp)
+ THEN
+ RETURN(true);
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION a3ms_validate_detected_difference_types(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
+LOCAL
+ deiir : data_equivalence_inspection_instance_report;
+ eiriwei : equivalence_instance_report_item_with_notable_instances;
+ addtn : a3ms_detected_difference_type_name;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ eiriwei := deiir.inspected_instances[i];
+ REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MISMATCH_OF_POINT_CLOUD_AND_RELATED_GEOMETRY' IN
+ TYPEOF(cr))
+ THEN
+ addtn := a3ms_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements);
+ IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) = etns_connected_edge_set)
+ THEN
+ IF (addtn <> ddns_point_on_curve)
+ THEN
+ RETURN(false);
+ END_IF;
+ ELSE
+ IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) = etns_connected_face_set)
+ THEN
+ IF (addtn <> ddns_point_on_surface)
+ THEN
+ RETURN(false);
+ END_IF;
+ ELSE
+ IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) <>
+ etns_external_representation_item)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_IF;
+ IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
+ cr.detected_difference_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ ELSE
+ IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements) IN
+ cr.detected_difference_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
+ cr.detected_difference_types))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION a3ms_validate_element_types(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
+LOCAL
+ compared_et : a3ms_element_type_name;
+ comparing_et : a3ms_element_type_name;
+ deiir : data_equivalence_inspection_instance_report;
+ aeiiri : a3m_equivalence_inspection_instance_report_item;
+ deiep : data_equivalence_inspected_element_pair;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ aeiiri := deiir.inspected_instances[i];
+ deiep := aeiiri.inspected_element;
+ compared_et := a3ms_get_element_type(deiep.compared_elements);
+ comparing_et := a3ms_get_element_type(deiep.comparing_elements);
+ IF ((NOT (compared_et IN cr.compared_element_types) AND (compared_et <> etns_external_representation_item)) OR
+ (NOT (comparing_et IN cr.comparing_element_types) AND (comparing_et <> etns_external_representation_item)))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MISMATCH_OF_POINT_CLOUD_AND_RELATED_GEOMETRY' IN
+ TYPEOF(cr))
+ THEN
+ IF (((comparing_et <> etns_external_representation_item) AND
+ (compared_et <> etns_external_representation_item)) AND
+ (compared_et = comparing_et))
+ THEN
+ RETURN(false);
+ END_IF;
+ ELSE
+ IF (((comparing_et <> etns_external_representation_item) AND
+ (compared_et <> etns_external_representation_item)) AND
+ (compared_et <> comparing_et))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION a3ms_validate_measured_type(ei : data_equivalence_inspection_report;
+ cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
+LOCAL
+ amdtn : a3ms_measured_data_type_name;
+ deicr : data_equivalence_inspection_criterion_report;
+ acriwmv : a3m_equivalence_criterion_report_item_with_measured_value;
+ deiir : data_equivalence_inspection_instance_report;
+ aeiiri : a3m_equivalence_inspection_instance_report_item;
+ eiriwei : equivalence_instance_report_item_with_notable_instances;
+END_LOCAL;
+ amdtn := cr.measured_data_type;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_CRITERION_REPORT' IN TYPEOF(ei))
+ THEN
+ deicr := ei;
+ REPEAT i := 1 TO SIZEOF(deicr.statistical_values);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION_REPORT_ITEM_WITH_MEASURED_VALUE' IN
+ TYPEOF(deicr.statistical_values[i]))
+ THEN
+ acriwmv := deicr.statistical_values[i];
+ IF (a3ms_get_measured_type(acriwmv.representative_measured_value) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
+ THEN
+ deiir := ei;
+ REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ aeiiri := deiir.inspected_instances[i];
+ IF (a3ms_get_measured_type(aeiiri.measured_value_for_inspected_element) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
+ TYPEOF(deiir.inspected_instances[i]))
+ THEN
+ eiriwei := deiir.inspected_instances[i];
+ REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
+ IF (a3ms_get_measured_type(eiriwei.notable_instances[j].measured_value) <> amdtn)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+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;
+
+FUNCTION acyclic(arg1 : generic_expression;
+ arg2 : SET OF generic_expression) : BOOLEAN;
+LOCAL
+ result : BOOLEAN := true;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1))
+ THEN
+ RETURN(true);
+ END_IF;
+ IF arg1 IN arg2
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
+ THEN
+ RETURN(acyclic(arg1\unary_generic_expression.operand, arg2 + [arg1]));
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_action_directive_relationship(relation : action_directive_relationship;
+ relatives : SET [1 : ?] OF action_directive;
+ specific_relation : STRING) : BOOLEAN;
+LOCAL
+ x : SET OF action_directive_relationship;
+END_LOCAL;
+ IF relation.relating IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(adr
+ <* bag_to_set(USEDIN(relation.relating,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE_RELATIONSHIP.RELATED'))
+ | specific_relation IN TYPEOF(adr));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_action_directive_relationship(x[i], relatives + relation.relating, specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION acyclic_alternative_solution_relationship(relation : alternative_solution_relationship;
+ relatives : SET [1 : ?] OF product_definition_formation;
+ specific_relation : STRING) : BOOLEAN;
+LOCAL
+ x : SET OF alternative_solution_relationship;
+END_LOCAL;
+ IF relation.relating_product_definition_formation IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(asr
+ <* bag_to_set(USEDIN(relation.relating_product_definition_formation,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATIVE_SOLUTION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION_FORMATION'))
+ | specific_relation IN TYPEOF(asr));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_alternative_solution_relationship(x[i], relatives + relation.relating_product_definition_formation,
+ specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION acyclic_assignment_object_relationship(relation : assignment_object_relationship;
+ relatives : SET [1 : ?] OF assignment_object_select;
+ specific_relation : STRING) : BOOLEAN;
+LOCAL
+ x : SET OF assignment_object_relationship;
+END_LOCAL;
+ IF relation.relating IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(aor
+ <* bag_to_set(USEDIN(relation.relating,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSIGNMENT_OBJECT_RELATIONSHIP.RELATED'))
+ | specific_relation IN TYPEOF(aor));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_assignment_object_relationship(x[i], relatives + relation.relating, specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_curve_replica(rep : curve_replica;
+ parent : curve) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent))
+ THEN
+ RETURN(true);
+ END_IF;
+ (* Return TRUE if the parent is not of type curve_replica *)
+ IF (parent :=: rep)
+ THEN
+ RETURN(false);
+ ELSE
+ RETURN(acyclic_curve_replica(rep, parent\curve_replica.parent_curve));
+ END_IF;
+END_FUNCTION;
+
+FUNCTION acyclic_description_text_assignment_relationship(relation : description_text_assignment_relationship;
+ relatives : SET [1 : ?] OF description_text_assignment;
+ specific_relation : STRING) : BOOLEAN;
+LOCAL
+ x : SET OF description_text_assignment_relationship;
+END_LOCAL;
+ IF relation.relating IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(dtar
+ <* bag_to_set(USEDIN(relation.relating,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_TEXT_ASSIGNMENT_RELATIONSHIP.RELATED'))
+ | specific_relation IN TYPEOF(dtar));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_description_text_assignment_relationship(x[i], relatives + relation.relating, specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_generic_property_relationship(relation : generic_property_relationship;
+ relatives : SET [1 : ?] OF generic_property_definition_select;
+ specific_relation : STRING) : LOGICAL;
+LOCAL
+ x : SET OF generic_property_relationship;
+END_LOCAL;
+ IF relation.relating IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(gpr
+ <* bag_to_set(USEDIN(relation.relating,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_PROPERTY_RELATIONSHIP.RELATED'))
+ | specific_relation IN TYPEOF(gpr));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_generic_property_relationship(x[i], relatives + relation.relating, specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
+ IF SIZEOF(rms) > 0
+ THEN
+ REPEAT j := 1 TO HIINDEX(rms);
+ mis := bag_to_set(USEDIN(rms[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_point_replica(rep : point_replica;
+ parent : point) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA') IN TYPEOF(parent))
+ THEN
+ RETURN(true);
+ END_IF;
+ (* Return TRUE if the parent is not of type point_replica *)
+ IF (parent :=: rep)
+ THEN
+ RETURN(false);
+ ELSE
+ RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt));
+ END_IF;
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_product_definition_specified_occurrence(pdso : product_definition_specified_occurrence;
+ definition : product_definition_occurrence) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_shape_aspect_occurrence(sao : shape_aspect_occurrence;
+ definition : shape_aspect_or_characterized_object) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION acyclic_shape_aspect_relationship(relation : shape_aspect_relationship;
+ relatives : SET [1 : ?] OF shape_aspect;
+ specific_relation : STRING) : BOOLEAN;
+LOCAL
+ x : SET OF shape_aspect_relationship;
+END_LOCAL;
+ IF relation.relating_shape_aspect IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(sa
+ <* bag_to_set(USEDIN(relation.relating_shape_aspect,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'))
+ | specific_relation IN TYPEOF(sa));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_shape_aspect_relationship(x[i], relatives + relation.relating_shape_aspect, specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION acyclic_solid_replica(rep : solid_replica;
+ parent : solid_model) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent))
+ THEN
+ RETURN(true);
+ END_IF;
+ (* Return TRUE if the parent is not of type solid_replica. *)
+ IF (parent :=: rep)
+ THEN
+ RETURN(false);
+ ELSE
+ RETURN(acyclic_solid_replica(rep, parent\solid_replica.parent_solid));
+ END_IF;
+END_FUNCTION;
+
+FUNCTION acyclic_state_definition_to_state_assignment_relationship(relation : state_definition_to_state_assignment_relationship;
+ relatives : SET [1 : ?] OF ascribable_state;
+ specific_relation : STRING) : LOGICAL;
+LOCAL
+ x : SET OF state_definition_to_state_assignment_relationship;
+END_LOCAL;
+ IF relation.relating_ascribable_state IN relatives
+ THEN
+ RETURN(false);
+ END_IF;
+ x := QUERY(sdtsar
+ <* bag_to_set(USEDIN(relation.relating_ascribable_state,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP.RELATED_ASCRIBABLE_STATE'))
+ | specific_relation IN TYPEOF(sdtsar));
+ REPEAT i := 1 TO HIINDEX(x);
+ IF NOT acyclic_state_definition_to_state_assignment_relationship(x[i],
+ relatives + relation.relating_ascribable_state,
+ specific_relation)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION acyclic_surface_replica(rep : surface_replica;
+ parent : surface) : BOOLEAN;
+ IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent))
+ THEN
+ RETURN(true);
+ END_IF;
+ (* Return TRUE if the parent is not of type surface_replica *)
+ IF (parent :=: rep)
+ THEN
+ RETURN(false);
+ ELSE
+ RETURN(acyclic_surface_replica(rep, parent\surface_replica.parent_surface));
+ END_IF;
+END_FUNCTION;
+
+FUNCTION advanced_face_properties(testface : face) : BOOLEAN;
+(* return TRUE if testface is of type advanced_face *)
+ (* return TRUE if testface is of type advanced_face *)
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface)
+ THEN
+ RETURN(true);
+ END_IF;
+ (* if testface is a subface recursively test the parent_face,
+ return FALSE for all other types of face *)
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(testface))
+ THEN
+ RETURN(advanced_face_properties(testface\subface.parent_face));
+ ELSE
+ RETURN(false);
+ END_IF;
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION aspect_ratio(p : planar_box) : positive_ratio_measure;
+ IF (p.size_in_x > 0.) AND (p.size_in_y > 0.)
+ THEN
+ RETURN(p.size_in_x / p.size_in_y);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION assembly_leaf(item : product_definition) : BOOLEAN;
+LOCAL
+ local_relation : SET OF assembly_component_usage := [];
+ local_relation2 : BAG OF assembly_component_usage := [];
+END_LOCAL;
+ local_relation2 := local_relation2 +
+ QUERY(pdr
+ <* USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr));
+ local_relation := bag_to_set(local_relation2);
+ IF (SIZEOF(local_relation) = 0)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION assembly_root(item : product_definition) : BOOLEAN;
+-- extraction of related assembly_component_relationships --
+ IF (SIZEOF(QUERY(pdr
+ <* USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr))) =
+ 0)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+END_FUNCTION;
+
+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:up1.exponent,up2.base:up2.exponent];
+ tspace := make_listed_product_space(factors);
+ END_IF;
+ ELSE
+ IF use_lp2
+ THEN
+ factors := [up1.base:up1.exponent];
+ 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:up2.exponent];
+ 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;
+
+FUNCTION associated_surface(arg : pcurve_or_surface) : surface;
+LOCAL
+ surf : surface;
+END_LOCAL;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(arg)
+ THEN
+ surf := arg\pcurve.basis_surface;
+ ELSE
+ surf := arg;
+ END_IF;
+ RETURN(surf);
+END_FUNCTION;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION cc_design_person_and_organization_correlation(e : cc_design_person_and_organization_assignment) : BOOLEAN;
+LOCAL
+ po_role : STRING;
+END_LOCAL;
+ po_role := e\person_and_organization_assignment.role.name;
+ CASE po_role OF
+ 'request_recipient' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_REQUEST',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_REQUEST'] *
+ TYPEOF(x)) =
+ 1))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'initiator' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_REQUEST',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_REQUEST',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_WORK',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE'] *
+ TYPEOF(x)) =
+ 1))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'creator' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'] *
+ TYPEOF(x)) =
+ 1))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'part_supplier' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
+ TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'design_supplier' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
+ TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'design_owner' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'configuration_manager' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_ITEM' IN
+ TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'contractor' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT' IN TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ 'classification_officer' : IF SIZEOF(e.items) <>
+ SIZEOF(QUERY(x
+ <* e.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION' IN
+ TYPEOF(x)))
+ THEN
+ RETURN(false);
+ END_IF;
+ OTHERWISE: RETURN(true);
+ END_CASE;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION check_continuous_edges(edges : LIST OF UNIQUE edge_curve) : BOOLEAN;
+LOCAL
+ i : INTEGER;
+ next_vertex : vertex;
+END_LOCAL;
+ IF (SIZEOF(edges) = 1)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF ((edges[2].edge_start :=: edges[1].edge_end) XOR (edges[2].edge_start :=: edges[1].edge_start))
+ THEN
+ next_vertex := edges[2].edge_end;
+ ELSE
+ IF ((edges[2].edge_end :=: edges[1].edge_end) XOR (edges[2].edge_end :=: edges[1].edge_start))
+ THEN
+ next_vertex := edges[2].edge_start;
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF (SIZEOF(edges) = 2)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 3 TO HIINDEX(edges);
+ IF (edges[i].edge_start :=: next_vertex)
+ THEN
+ next_vertex := edges[i].edge_end;
+ ELSE
+ IF (edges[i].edge_end :=: next_vertex)
+ THEN
+ next_vertex := edges[i].edge_start;
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION check_curve_planarity(checked_curve : curve) : BOOLEAN;
+LOCAL
+ crv : curve := checked_curve;
+ i : INTEGER;
+ j : INTEGER;
+ result : BOOLEAN := false;
+END_LOCAL;
+ IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
+ TYPEOF(crv)) >
+ 0)
+ THEN
+ result := true;
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(crv)) AND
+ check_curve_planarity(crv\trimmed_curve.basis_curve))
+ THEN
+ result := true;
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(crv)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(crv\pcurve.basis_surface)))
+ THEN
+ result := true;
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(crv))
+ THEN
+ BEGIN
+ REPEAT j := 1 TO HIINDEX(crv\surface_curve.basis_surface);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(crv\surface_curve.basis_surface[j]))
+ THEN
+ result := true;
+ END_IF;
+ END_REPEAT;
+ END;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ RETURN(result);
+END_FUNCTION;
+
+FUNCTION check_geometric_dimension(capt : SET [0 : ?] OF cartesian_point;
+ dir : SET [0 : ?] OF direction;
+ grc : SET [0 : ?] OF geometric_representation_context) : BOOLEAN;
+LOCAL
+ globaldim : INTEGER := 0;
+ reps : SET [0 : ?] OF representation := [];
+ result : BOOLEAN := true;
+END_LOCAL;
+ IF (SIZEOF(grc) = 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ 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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS'] * TYPEOF(item)) = 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'] *
+ TYPEOF(it)) =
+ 1))) =
+ 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION closed_shell_reversed(a_shell : closed_shell) : oriented_closed_shell;
+LOCAL
+ the_reverse : oriented_closed_shell;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION compute_total_depth(swsrh : solid_with_stepped_round_hole) : positive_length_measure;
+LOCAL
+ i : positive_integer;
+ n : positive_integer := swsrh.segments;
+ td : positive_length_measure := swsrh.segment_depths[1];
+END_LOCAL;
+ IF n = 1
+ THEN
+ RETURN(td);
+ ELSE
+ REPEAT i := 2 TO n;
+ td := td + swsrh.segment_depths[i];
+ END_REPEAT;
+ END_IF;
+ RETURN(td);
+END_FUNCTION;
+
+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;
+
+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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
+ TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN
+ TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN
+ TYPEOF(c\composite_curve.segments[k].parent_curve)))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[j])) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN TYPEOF(m.sbsm_boundary[j]))))
+ THEN
+ result := false;
+ RETURN(result);
+ END_IF;
+ END_REPEAT;
+ RETURN(result);
+END_FUNCTION;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN TYPEOF(m.sbwm_boundary[j])) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN TYPEOF(m.sbwm_boundary[j]))))
+ THEN
+ result := false;
+ RETURN(result);
+ END_IF;
+ END_REPEAT;
+ RETURN(result);
+END_FUNCTION;
+
+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;
+ (* Find sum of knot multiplicities. *)
+ sum := knot_mult[1];
+ REPEAT i := 2 TO up_knots;
+ sum := sum + knot_mult[i];
+ END_REPEAT;
+ (* Check limits holding for all B-spline parametrisations *)
+ 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;
+
+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;
+ (* Find sum of knot multiplicities. *)
+ up_knots := SIZEOF(knots);
+ sum := knot_mult[1];
+ REPEAT i := 2 TO up_knots;
+ sum := sum + knot_mult[i];
+ END_REPEAT;
+ (* Check limits holding for all B-spline parametrisations *)
+ 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;
+ (* first pointer shall be 1 or more *)
+ 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;
+
+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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN
+ TYPEOF(s.segments[i][j].parent_surface)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN
+ TYPEOF(s.segments[i][j].parent_surface)))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ (* Check the transition codes, omitting the last row or column *)
+ 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;
+
+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] <= 1.0})
+ THEN
+ result := false;
+ RETURN(result);
+ END_IF;
+ END_REPEAT;
+ RETURN(result);
+END_FUNCTION;
+
+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;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION default_tolerance_table_cell_wr3(agg : compound_item_definition) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i\representation_item.name = 'significant number of digits')))) =
+ 1) OR
+ ((SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i\representation_item.name = 'lower limit')))) =
+ 1) AND
+ (SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION default_tolerance_table_cell_wr4(agg : compound_item_definition) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i\representation_item.name = 'plus minus tolerance value')))) =
+ 1) OR
+ ((SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i\representation_item.name = 'lower tolerance value')))) =
+ 1) AND
+ (SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION default_tolerance_table_cell_wr5(agg : compound_item_definition) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(QUERY(i
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)))) <=
+ 1) AND
+ (SIZEOF(QUERY(i
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)))) =
+ SIZEOF(QUERY(i
+ <* agg
+ | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
+ TYPEOF(i)) AND
+ (i\representation_item.name = 'cell description')))))
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END;
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION dependently_instantiated(set_of_input_instances : SET OF GENERIC : IGEN;
+ set_of_input_types : SET OF STRING;
+ previous_in_chain : LIST OF GENERIC : CGEN) : BOOLEAN;
+(* 'dependently_instantiated' To test whether all instances in the
+ input set_of_input_instances are referenced by independently
+ instantiable instances. If so, this function returns true.
+ Set_of_input_types includes the type strings for all input instances.
+ The instances in previous_in_chain are used to detect cyclic
+ references during recursive calls to this function. The parameter
+ lists already tested instances in a chain of references.
+ *)
+LOCAL
+ number_of_input_instances : INTEGER;
+ number_of_referring_instances : INTEGER;
+ bag_of_referring_instances : BAG OF GENERIC : IGEN := [];
+ dependently_instantiated_flag : BOOLEAN;
+ previous_in_chain_plus : LIST OF GENERIC : CGEN := [];
+ result : BOOLEAN := true;
+ set_of_types : SET OF STRING := [];
+END_LOCAL;
+ IF EXISTS(set_of_input_instances)
+ THEN
+ number_of_input_instances := SIZEOF(set_of_input_instances);
+ set_of_input_types := set_of_input_types + 'GENERIC';
+ REPEAT i := 1 TO number_of_input_instances;
+ bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
+ IF EXISTS(bag_of_referring_instances)
+ THEN
+ number_of_referring_instances := SIZEOF(bag_of_referring_instances);
+ dependently_instantiated_flag := false;
+ REPEAT j := 1 TO number_of_referring_instances;
+ set_of_types := TYPEOF(bag_of_referring_instances[j]);
+ IF set_of_types <= set_of_input_types
+ THEN
+ IF NOT (bag_of_referring_instances[j] IN previous_in_chain)
+ THEN
+ previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
+ IF dependently_instantiated([bag_of_referring_instances[j]], set_of_input_types, previous_in_chain_plus)
+ THEN
+ dependently_instantiated_flag := true;
+ ESCAPE;
+ ELSE
+ SKIP;
+ END_IF;
+ END_IF;
+ ELSE
+ dependently_instantiated_flag := true;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ IF NOT dependently_instantiated_flag
+ THEN
+ RETURN(false);
+ END_IF;
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ ELSE
+ RETURN(false);
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION derive_angle(placement_1 : axis2_placement_3d;
+ placement_2 : axis2_placement_3d) : plane_angle_measure;
+LOCAL
+ v1 : direction;
+ v2 : direction;
+ mag_v1 : REAL;
+ mag_v2 : REAL;
+ theta : plane_angle_measure;
+END_LOCAL;
+ v1 := placement_1.p[1];
+ v2 := placement_2.p[1];
+ mag_v1 := SQRT((v1.direction_ratios[1] * v1.direction_ratios[1]) + (v1.direction_ratios[2] * v1.direction_ratios[2]));
+ mag_v2 := SQRT((v2.direction_ratios[1] * v2.direction_ratios[1]) + (v2.direction_ratios[2] * v2.direction_ratios[2]));
+ IF (mag_v1 = 0) OR (mag_v2 = 0)
+ THEN
+ theta := 0;
+ RETURN(theta);
+ END_IF;
+ theta := ACOS(((v1.direction_ratios[1] * v2.direction_ratios[1]) +
+ (v1.direction_ratios[2] * v2.direction_ratios[2])) /
+ (mag_v1 * mag_v2));
+ RETURN(theta);
+END_FUNCTION;
+
+FUNCTION derive_definite_integral_domain(igrl : definite_integral_function) : tuple_space;
+-- Internal utility function:
+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;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION dimension_of(item : geometric_representation_item) : dimension_count;
+LOCAL
+ x : SET OF representation;
+ y : representation_context;
+ dim : dimension_count;
+END_LOCAL;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item)
+ THEN
+ dim := SIZEOF(item\cartesian_point.coordinates);
+ RETURN(dim);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(item)
+ THEN
+ dim := SIZEOF(item\direction.direction_ratios);
+ RETURN(dim);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION edge_reversed(an_edge : edge) : oriented_edge;
+LOCAL
+ the_reverse : oriented_edge;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION enclose_cregion_in_pregion(crgn : cartesian_complex_number_region;
+ centre : complex_number_literal) : polar_complex_number_region;
+-- Find equivalent direction in range -PI < a <= PI.
+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;
+
+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;
+
+FUNCTION enclose_pregion_in_pregion(prgn : polar_complex_number_region;
+ centre : complex_number_literal) : polar_complex_number_region;
+-- Find equivalent direction in range -PI < a <= PI.
+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 < aitv.max} OR {aitv.min < 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 < 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 < 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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION expression_is_constant(expr : generic_expression) : BOOLEAN;
+ RETURN(bool(SIZEOF(free_variables_of(expr)) = 0));
+END_FUNCTION;
+
+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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_GENERAL_PROPERTY'] *
+ TYPEOF(item)) =
+ 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+ ELSE
+ RETURN(true);
+ END_IF;
+END_FUNCTION;
+
+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;
+
+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 <= 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 <= 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 <= source_interval.max})
+ THEN
+ RETURN(false);
+ END_IF;
+ RETURN(true);
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION face_bound_reversed(a_face_bound : face_bound) : face_bound;
+LOCAL
+ the_reverse : face_bound;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION face_reversed(a_face : face) : oriented_face;
+LOCAL
+ the_reverse : oriented_face;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+FUNCTION find_assembly_root(constituent : SET OF product_definition) : SET OF product_definition;
+LOCAL
+ local_relation : SET OF assembly_component_usage := [];
+ local_relation2 : BAG OF assembly_component_usage := [];
+ local_parent : SET OF product_definition := [];
+ root : SET OF product_definition;
+ i : INTEGER := 0;
+ j : INTEGER := 0;
+END_LOCAL;
+ IF ((SIZEOF(constituent) = 1) AND assembly_root(constituent[1]))
+ THEN
+ RETURN([constituent[1]]);
+ ELSE
+ IF (SIZEOF(constituent) = 0)
+ THEN
+ RETURN([]);
+ ELSE
+ REPEAT j := 1 TO HIINDEX(constituent);
+ local_relation2 := local_relation2 +
+ QUERY(pdr
+ <* USEDIN(constituent[j],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN
+ TYPEOF(pdr));
+ END_REPEAT;
+ local_relation := bag_to_set(local_relation2);
+ IF (SIZEOF(local_relation) = 0)
+ THEN
+ IF (SIZEOF(constituent) = 1)
+ THEN
+ RETURN([constituent[1]]);
+ ELSE
+ RETURN([]);
+ END_IF;
+ ELSE
+ REPEAT i := 1 TO HIINDEX(local_relation);
+ REPEAT j := 1 TO HIINDEX(constituent);
+ IF (local_relation[i].relating_product_definition <> constituent[j])
+ THEN
+ local_parent := local_parent + local_relation[i].relating_product_definition;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ IF ((SIZEOF(local_parent) = 1) AND assembly_root(local_parent[1]))
+ THEN
+ RETURN([local_parent[1]]);
+ ELSE
+ IF (SIZEOF(local_parent) = 0)
+ THEN
+ RETURN([]);
+ ELSE
+ root := find_assembly_root(local_parent);
+ IF (SIZEOF(root) = 1)
+ THEN
+ RETURN(root);
+ ELSE
+ IF (SIZEOF(root) = 0)
+ THEN
+ RETURN([]);
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ RETURN([]);
+END_FUNCTION;
+
+FUNCTION find_representative_shape_representation_of_product_definition(item : product_definition) : shape_representation;
+LOCAL
+ local_s_r : SET OF shape_representation := [];
+END_LOCAL;
+ local_s_r := QUERY(z
+ <* find_shape_representation_of_product_definition(item)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(z));
+ IF (SIZEOF(local_s_r) = 1)
+ THEN
+ RETURN(local_s_r[1]);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION find_representative_shape_representation_of_shape_aspect(item : shape_aspect) : shape_representation;
+LOCAL
+ local_s_r : SET OF shape_representation := [];
+END_LOCAL;
+ local_s_r := QUERY(z
+ <* find_shape_representation_of_shape_aspect(item)
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(z));
+ IF (SIZEOF(local_s_r) = 1)
+ THEN
+ RETURN(local_s_r[1]);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION find_shape_representation_of_product_definition(item : product_definition) : SET OF shape_representation;
+LOCAL
+ local_p_d_s : SET OF product_definition_shape := [];
+ local_p_d_s2 : BAG OF product_definition_shape := [];
+ local_s_d_r : SET OF shape_definition_representation := [];
+ local_s_d_r2 : BAG OF shape_definition_representation := [];
+ local_s_r : SET OF shape_representation := [];
+ i : INTEGER;
+END_LOCAL;
+ local_p_d_s2 := local_p_d_s2 +
+ QUERY(pd
+ <* USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd));
+ local_p_d_s := bag_to_set(local_p_d_s2);
+ REPEAT i := 1 TO HIINDEX(local_p_d_s);
+ local_s_d_r2 := local_s_d_r2 +
+ QUERY(pdr
+ <* USEDIN(local_p_d_s[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(pdr));
+ END_REPEAT;
+ local_s_d_r := bag_to_set(local_s_d_r2);
+ REPEAT i := 1 TO HIINDEX(local_s_d_r);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
+ TYPEOF(local_s_d_r[i].used_representation))
+ THEN
+ local_s_r := local_s_r + local_s_d_r[i].used_representation;
+ END_IF;
+ END_REPEAT;
+ RETURN(local_s_r);
+END_FUNCTION;
+
+FUNCTION find_shape_representation_of_shape_aspect(item : shape_aspect) : SET OF shape_representation;
+LOCAL
+ local_p_d : SET OF property_definition := [];
+ local_s_d_r : SET OF shape_definition_representation := [];
+ local_s_d_r2 : BAG OF shape_definition_representation := [];
+ local_s_r : SET OF shape_representation := [];
+ i : INTEGER;
+END_LOCAL;
+ local_p_d := bag_to_set(USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
+ REPEAT i := 1 TO HIINDEX(local_p_d);
+ local_s_d_r2 := local_s_d_r2 +
+ QUERY(pdr
+ <* USEDIN(local_p_d[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(pdr));
+ END_REPEAT;
+ local_s_d_r := bag_to_set(local_s_d_r2);
+ REPEAT i := 1 TO HIINDEX(local_s_d_r);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
+ TYPEOF(local_s_d_r[i].used_representation))
+ THEN
+ local_s_r := local_s_r + local_s_d_r[i].used_representation;
+ END_IF;
+ END_REPEAT;
+ RETURN(local_s_r);
+END_FUNCTION;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION gbsf_check_curve(cv : representation_item) : BOOLEAN;
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
+ TYPEOF(cv)) >
+ 1
+ THEN
+ RETURN(false);
+ END_IF;
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE'] *
+ TYPEOF(cv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
+ THEN
+ RETURN(gbsf_check_curve(cv\curve_replica.parent_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
+ ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
+ TYPEOF(cv\offset_curve_3d.basis_curve))))
+ THEN
+ RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(cv)
+ THEN
+ IF (SIZEOF(cv\polyline.points) >= 3)
+ THEN
+ RETURN(true);
+ END_IF;
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION gbsf_check_point(pnt : point) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt)
+ THEN
+ RETURN(gbsf_check_curve(pnt\point_on_curve.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt)
+ THEN
+ RETURN(gbsf_check_surface(pnt\point_on_surface.basis_surface));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION gbsf_check_surface(sf : surface) : BOOLEAN;
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] *
+ TYPEOF(sf)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf)
+ THEN
+ RETURN(gbsf_check_surface(sf\surface_replica.parent_surface));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+FUNCTION get_aggregate_id_value(obj : id_attribute_select) : identifier;
+LOCAL
+ aggregate_id_bag : BAG OF aggregate_id_attribute := (USEDIN(obj,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION get_associated_mandatory_document_ids(pdc : product_definition_context) : SET OF STRING;
+LOCAL
+ result : SET OF STRING := [];
+ adrs_raw : SET OF applied_document_reference := bag_to_set(USEDIN(pdc,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS'));
+ adrs_filtered : SET OF applied_document_reference := [];
+ ras : SET OF role_association;
+ dpas : SET OF document_product_association;
+END_LOCAL;
+ REPEAT i := 1 TO HIINDEX(adrs_raw);
+ IF adrs_raw[i]\document_reference.role\object_role.name = 'mandatory'
+ THEN
+ adrs_filtered := adrs_filtered + adrs_raw[i];
+ END_IF;
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(adrs_filtered);
+ dpas := bag_to_set(USEDIN(adrs_filtered[i]\document_reference.assigned_document,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT'));
+ REPEAT j := 1 TO HIINDEX(dpas);
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_EQUIVALENCE' IN TYPEOF(dpas[j])
+ THEN
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
+ TYPEOF(dpas[j]\document_product_association.related_product)
+ THEN
+ result := result +
+ dpas[j]\document_product_association.related_product\product_definition_formation.of_product\product.id;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(dpas[j].related_product)
+ THEN
+ result := result + dpas[j]\document_product_association.related_product\product.id;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ RETURN(result);
+END_FUNCTION;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(c)
+ THEN
+ surfs := [c\pcurve.basis_surface];
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION get_coordinate_values(source : tessellated_surface_item) : coordinates_list;
+LOCAL
+ coordinate_values : coordinates_list;
+ max : INTEGER;
+END_LOCAL;
+ (* If source is of type tessellated_face its single coordinates_list is returned *)
+ CASE true OF
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
+ TYPEOF(source) : BEGIN
+ coordinate_values := source\tessellated_face.coordinates;
+ RETURN(coordinate_values);
+ END;
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET' IN
+ TYPEOF(source) : BEGIN
+ coordinate_values := source\tessellated_surface_set.coordinates;
+ RETURN(coordinate_values);
+ END;
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID' IN
+ TYPEOF(source) : BEGIN
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
+ TYPEOF(source\tessellated_solid.items[1])
+ THEN
+ coordinate_values := source\tessellated_solid.items[1]\tessellated_face.coordinates;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
+ TYPEOF(source\tessellated_solid.items[1])
+ THEN
+ coordinate_values := source\tessellated_solid.items[1]\tessellated_edge.coordinates;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL' IN
+ TYPEOF(source) : BEGIN
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
+ TYPEOF(source\tessellated_shell.items[1])
+ THEN
+ coordinate_values := source\tessellated_shell.items[1]\tessellated_face.coordinates;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
+ TYPEOF(source\tessellated_shell.items[1])
+ THEN
+ coordinate_values := source\tessellated_shell.items[1]\tessellated_edge.coordinates;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+FUNCTION get_description_value(obj : description_attribute_select) : text;
+LOCAL
+ description_bag : BAG OF description_attribute := (USEDIN(obj,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'));
+END_LOCAL;
+ IF SIZEOF(description_bag) = 1
+ THEN
+ RETURN(description_bag[1].attribute_value);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION get_id_value(obj : id_attribute_select) : identifier;
+LOCAL
+ id_bag : BAG OF id_attribute := (USEDIN(obj,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM'));
+END_LOCAL;
+ IF SIZEOF(id_bag) = 1
+ THEN
+ RETURN(id_bag[1].attribute_value);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION get_name_value(obj : name_attribute_select) : label;
+LOCAL
+ name_bag : BAG OF name_attribute := (USEDIN(obj,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM'));
+END_LOCAL;
+ IF SIZEOF(name_bag) = 1
+ THEN
+ RETURN(name_bag[1].attribute_value);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION get_plane_of_implicit_geometry(ps : positioned_sketch) : plane;
+LOCAL
+ sb : sketch_basis_select := ps.sketch_basis;
+ result : plane := ?;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(sb))
+ THEN
+ result := sb\face_surface.face_geometry;
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(sb))
+ THEN
+ result := sb\curve_bounded_surface.basis_surface;
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_CURVE_SELECT' IN TYPEOF(sb))
+ THEN
+ BEGIN
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN TYPEOF(sb))
+ THEN
+ result := dummy_gri || surface() || elementary_surface(sb\conic.position) || plane();
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(sb))
+ THEN
+ BEGIN
+ result := get_plane_of_implicit_geometry(dummy_gri ||
+ positioned_sketch(sb\trimmed_curve.basis_curve, []));
+ END;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(sb))
+ THEN
+ result := sb\pcurve.basis_surface;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(sb))
+ THEN
+ BEGIN
+ IF ((SIZEOF(sb\surface_curve.basis_surface) = 1) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sb\surface_curve.basis_surface[1])))
+ THEN
+ result := sb\surface_curve.basis_surface[1];
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sb\surface_curve.basis_surface[1])) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sb\surface_curve.basis_surface[2])))
+ THEN
+ result := ?;
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
+ TYPEOF(sb\surface_curve.basis_surface[1]))
+ THEN
+ result := sb\surface_curve.basis_surface[1];
+ ELSE
+ result := sb\surface_curve.basis_surface[2];
+ END_IF;
+ END_IF;
+ END_IF;
+ END;
+ END_IF;
+ END;
+ END_IF;
+ END_IF;
+ END_IF;
+ RETURN(result);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
+ END_REPEAT;
+ RETURN(pdr_set);
+END_FUNCTION;
+
+FUNCTION get_relative_direction_2points(cp1 : cartesian_point;
+ cp2 : cartesian_point) : direction;
+LOCAL
+ d1 : REAL;
+ d2 : REAL;
+ d3 : REAL;
+ magnitude : REAL;
+ result : direction := ?;
+END_LOCAL;
+ IF ((cp1.dim <> 3) OR (cp2.dim <> 3))
+ THEN
+ RETURN(result);
+ ELSE
+ BEGIN
+ d1 := cp2.coordinates[1] - cp1.coordinates[1];
+ d2 := cp2.coordinates[2] - cp1.coordinates[2];
+ d3 := cp2.coordinates[3] - cp1.coordinates[3];
+ magnitude := SQRT(d1 * d1 + d2 * d2 + d3 * d3);
+ IF (magnitude = 0)
+ THEN
+ RETURN(result);
+ END_IF;
+ result := dummy_gri || direction([d1,d2,d3]);
+ END;
+ END_IF;
+ RETURN(result);
+END_FUNCTION;
+
+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;
+
+FUNCTION get_role(obj : role_select) : object_role;
+LOCAL
+ role_bag : BAG OF role_association := (USEDIN(obj,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
+END_LOCAL;
+ IF SIZEOF(role_bag) = 1
+ THEN
+ RETURN(role_bag[1].role);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION get_root_shape_aspect(current : shape_aspect) : product_definition_shape;
+ REPEAT WHILE ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONSTITUENT_SHAPE_ASPECT' IN TYPEOF(current));
+ current := current.parent;
+ END_REPEAT;
+ RETURN(current.of_shape);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(pdr)));
+ END_REPEAT;
+ RETURN(pdr_set);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'));
+ END_REPEAT;
+ RETURN(pdr_set);
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION inspected_product_definition(dqir : data_quality_inspection_result_representation) : BAG OF product_definition;
+LOCAL
+ dqdr : BAG OF data_quality_definition_representation_relationship := [];
+ pdqdr : BAG OF product_data_and_data_quality_relationship := [];
+ pd : BAG OF product_definition := [];
+END_LOCAL;
+ dqdr := USEDIN(dqir,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_DEFINITION_REPRESENTATION_RELATIONSHIP.USED_REPRESENTATION');
+ REPEAT i := 1 TO SIZEOF(dqdr);
+ pdqdr := USEDIN(dqdr[i].definition,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DATA_AND_DATA_QUALITY_RELATIONSHIP.DATA_QUALITY');
+ REPEAT j := 1 TO SIZEOF(pdqdr);
+ pd := pd + pdqdr[j].product_data;
+ END_REPEAT;
+ END_REPEAT;
+ RETURN(pd);
+END_FUNCTION;
+
+FUNCTION invalidate_vrep_item(item : variational_representation_item) : BOOLEAN;
+LOCAL
+ reps : SET [1 : ?] OF representation := using_representations(item);
+ svri : SET [1 : ?] OF variational_representation_item;
+ iar : instance_attribute_reference;
+ i : INTEGER;
+ n : INTEGER := HIINDEX(reps);
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item))
+ THEN
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE' IN
+ TYPEOF(item\generic_variable.interpretation\environment.semantics)
+ THEN
+ BEGIN
+ iar := item\generic_variable.interpretation\environment.semantics;
+ IF (reps <> using_representations(iar\instance_attribute_reference.owning_instance))
+ THEN
+ RETURN(true);
+ END_IF;
+ END;
+ ELSE
+ RETURN(true);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item))
+ THEN
+ BEGIN
+ REPEAT i := 1 TO n;
+ svri := QUERY(q
+ <* reps[i]\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREE_FORM_CONSTRAINT' IN TYPEOF(q));
+ IF SIZEOF(QUERY(r
+ <* svri
+ | item IN
+ (r\free_form_constraint.reference_elements +
+ r\free_form_constraint.constrained_elements))) =
+ 0
+ THEN
+ RETURN(true);
+ END_IF;
+ END_REPEAT;
+ END;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET' IN TYPEOF(item))
+ THEN
+ REPEAT i := 1 TO SIZEOF(item\fixed_instance_attribute_set.fixed_attributes);
+ IF (reps <>
+ using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]\instance_attribute_reference.owning_instance))
+ THEN
+ RETURN(true);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_CONSTRAINT' IN TYPEOF(item))
+ THEN
+ IF SIZEOF(QUERY(q
+ <* (item\explicit_constraint.reference_elements + item\explicit_constraint.constrained_elements)
+ | reps <> using_representations(q))) >
+ 0
+ THEN
+ RETURN(true);
+ END_IF;
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item))
+ THEN
+ BEGIN
+ REPEAT i := 1 TO n;
+ svri := QUERY(q
+ <* reps[i]\representation.items
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_GEOMETRIC_CONSTRAINT' IN
+ TYPEOF(q));
+ IF SIZEOF(QUERY(r <* svri | item IN r\explicit_geometric_constraint.reference_elements)) = 0
+ THEN
+ RETURN(true);
+ END_IF;
+ END_REPEAT;
+ END;
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION is_acyclic(arg : generic_expression) : BOOLEAN;
+ RETURN(acyclic(arg, []));
+END_FUNCTION;
+
+FUNCTION is_int_expr(arg : numeric_expression) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_LITERAL' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(is_int_expr(arg\unary_numeric_expression.operand));
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(is_int_expr(arg\unary_numeric_expression.operand));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg))
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)
+ THEN
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_VALUE_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(false);
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION is_sql_mappable(arg : expression) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
+ THEN
+ RETURN(is_sql_mappable(arg\unary_numeric_expression.operand));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_EXPRESSION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NOT_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(is_sql_mappable(arg\unary_generic_expression.operand));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ODD_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.XOR_EXPRESSION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AND_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_EQUAL' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS_EQUAL' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_NOT_EQUAL' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSTRING_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCAT_EXPRESSION' IN TYPEOF(arg)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORMAT_FUNCTION' IN TYPEOF(arg))
+ THEN
+ RETURN(false);
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION item_in_context(item : representation_item;
+ cntxt : representation_context) : BOOLEAN;
+LOCAL
+ y : BAG OF representation_item;
+END_LOCAL;
+ IF SIZEOF(USEDIN(item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS') *
+ cntxt.representations_in_context) >
+ 0
+ THEN
+ RETURN(true);
+ ELSE
+ y := QUERY(z
+ <* USEDIN(item, '')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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]:n];
+ REPEAT i := 2 TO n;
+ res[low + i - 1] := lis[i];
+ END_REPEAT;
+ RETURN(res);
+ END_IF;
+END_FUNCTION;
+
+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;
+
+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;
+ (* Check input dimensions for consistency *)
+ IF (u1 - low1 + 1) <> SIZEOF(lis)
+ THEN
+ RETURN(?);
+ END_IF;
+ IF (u2 - low2 + 1) <> SIZEOF(lis[1])
+ THEN
+ RETURN(?);
+ END_IF;
+ (* Initialise res with values from lis[1] *)
+ res := [list_to_array(lis[1], low2, u2):(u1 - low1 + 1)];
+ 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;
+
+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;
+ (* Check input dimensions for consistency *)
+ IF (u1 - low1 + 1) <> SIZEOF(lis)
+ THEN
+ RETURN(?);
+ END_IF;
+ IF (u2 - low2 + 1) <> SIZEOF(lis[1])
+ THEN
+ RETURN(?);
+ END_IF;
+ (* Initialise res with values from lis[1] *)
+ res := [make_array_of_array(lis[1], low2, u2, low3, u3):(u1 - low1 + 1)];
+ 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;
+
+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;
+
+FUNCTION make_binary_literal(lit_value : BINARY) : binary_literal;
+ RETURN(binary_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
+END_FUNCTION;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION make_logical_literal(lit_value : LOGICAL) : logical_literal;
+ RETURN(logical_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION make_numeric_set(start : maths_number;
+ delta : maths_number;
+ incs : positive_integer) : SET [2 : ?] OF maths_number;
+LOCAL
+ i : INTEGER;
+ numeric_set : SET [2 : ?] OF maths_number := [start,(start + delta)];
+END_LOCAL;
+ IF incs > 1
+ THEN
+ REPEAT i := 2 TO incs;
+ numeric_set := numeric_set + (start + (i * delta));
+ END_REPEAT;
+ END_IF;
+ RETURN(numeric_set);
+END_FUNCTION;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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_with_placeholder.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_LOCATION' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'angularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULARITY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'circular runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'circularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'coaxiality' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COAXIALITY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'concentricity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCENTRICITY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'curve dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'cylindricity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICITY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'datum' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'datum target' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'diameter dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'flatness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLATNESS_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'general dimension' : IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION'] *
+ v) =
+ 1)
+ THEN
+ RETURN(true);
+ END_IF;
+ 'general note' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'general tolerance' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'label' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'linear dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'note' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'ordinate dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'parallelism' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARALLELISM_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'perpendicularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERPENDICULARITY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'position' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'profile of line' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'profile of surface' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'radial dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'roundness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'straightness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRAIGHTNESS_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'surface roughness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'symmetry' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMMETRY_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ 'total runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE' IN v
+ THEN
+ RETURN(true);
+ END_IF;
+ OTHERWISE: RETURN(false);
+ END_CASE;
+END_FUNCTION;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(input\geometric_set.elements[i])) AND
+ NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
+ TYPEOF(input\geometric_set.elements[i])) =
+ 1)
+ THEN
+ pass := false;
+ ELSE
+ points := points + input\geometric_set.elements[i];
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(input\geometric_set.elements[i])
+ THEN
+ boxes := boxes + input\geometric_set.elements[i];
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN TYPEOF(input\geometric_set.elements[i])
+ THEN
+ texts := texts + input\geometric_set.elements[i];
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(points) < 1
+ THEN
+ pass := false;
+ END_IF;
+ IF SIZEOF(placements) <> 1
+ THEN
+ pass := false;
+ END_IF;
+ RETURN(pass);
+END_FUNCTION;
+
+FUNCTION member_of(val : GENERIC : G;
+ spc : maths_space) : LOGICAL;
+-- Trivial function introduced to avoid NIST Fedex compiler error
+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 <= 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 <= s\finite_real_interval.max});
+ ELSE
+ RETURN({s\finite_real_interval.min <= 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 <= s\finite_real_interval.max});
+ ELSE
+ RETURN({s\finite_real_interval.min < 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;
+
+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;
+
+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;
+
+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 := ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF(l[1]));
+ REPEAT i := 2 TO SIZEOF(l);
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type)
+ THEN
+ RETURN(true);
+ END_IF;
+ END_REPEAT;
+ RETURN(false);
+END_FUNCTION;
+
+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;
+
+FUNCTION msf_curve_check(cv : representation_item) : BOOLEAN;
+(* This function varifies the validity of a curve in the context of a
+ manifold surface model. Representation_items are
+ valid input, however, they are supposed to be curves; otherwise
+ this function will return false.
+ *)
+(* complex subtypes of curve that are both bounded_curve and
+ oneof conic, curve_replica, line, or offset_curve_3d are not
+ valid
+ *)
+ (* This function varifies the validity of a curve in the context of a
+ manifold surface model. Representation_items are
+ valid input, however, they are supposed to be curves; otherwise
+ this function will return false.
+ *)
+ (* complex subtypes of curve that are both bounded_curve and
+ oneof conic, curve_replica, line, or offset_curve_3d are not
+ valid
+ *)
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
+ TYPEOF(cv)) >
+ 1
+ THEN
+ RETURN(false);
+ END_IF;
+ (* b_spline_curves shall not self-intersect
+ *)
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
+ TYPEOF(cv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
+ THEN
+ RETURN(msf_curve_check(cv\curve_replica.parent_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
+ ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
+ TYPEOF(cv\offset_curve_3d.basis_curve))))
+ THEN
+ RETURN(msf_curve_check(cv\offset_curve_3d.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ (* FALSE is returned if the input parameter cv is not a valid curve.
+ *)
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION msf_surface_check(surf : surface) : BOOLEAN;
+(* This function varifies the validity of a surface in the
+ context of a manifold surface model.
+ *)
+(* elementary_surfaces are valid surface types
+ *)
+ (* This function varifies the validity of a surface in the
+ context of a manifold surface model.
+ *)
+ (* elementary_surfaces are valid surface types
+ *)
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf)
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(surf)
+ THEN
+ RETURN(msf_curve_check(surf\swept_surface.swept_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf)
+ THEN
+ RETURN(msf_surface_check(surf\surface_replica.parent_surface));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION nmsf_curve_check(cv : representation_item) : BOOLEAN;
+(* This function varifies the validity of a curve in the context of a
+ non-manifold surface model. Representation_items are
+ valid input, however, they are supposed to be curves; otherwise
+ this function will return false.
+ *)
+(* complex subtypes of curve that are both bounded_curve and
+ oneof conic, curve_replica, line, or offset_curve_3d are not
+ valid
+ *)
+ (* This function varifies the validity of a curve in the context of a
+ non-manifold surface model. Representation_items are
+ valid input, however, they are supposed to be curves; otherwise
+ this function will return false.
+ *)
+ (* complex subtypes of curve that are both bounded_curve and
+ oneof conic, curve_replica, line, or offset_curve_3d are not
+ valid
+ *)
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
+ TYPEOF(cv)) >
+ 1
+ THEN
+ RETURN(false);
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
+ TYPEOF(cv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
+ THEN
+ RETURN(nmsf_curve_check(cv\curve_replica.parent_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
+ ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
+ TYPEOF(cv\offset_curve_3d.basis_curve))))
+ THEN
+ RETURN(nmsf_curve_check(cv\offset_curve_3d.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ (* FALSE is returned if the input parameter cv is not a valid curve.
+ *)
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION nmsf_surface_check(surf : surface) : BOOLEAN;
+(* This function varifies the validity of a surface in the
+ context of a non-manifold surface model.
+ *)
+(* elementary_surfaces are valid surface types
+ *)
+ (* This function varifies the validity of a surface in the
+ context of a non-manifold surface model.
+ *)
+ (* elementary_surfaces are valid surface types
+ *)
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf)
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(surf)
+ THEN
+ RETURN(nmsf_curve_check(surf\swept_surface.swept_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf)
+ THEN
+ RETURN(nmsf_surface_check(surf\surface_replica.parent_surface));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+FUNCTION one_tuples_of(spc : maths_space) : tuple_space;
+ RETURN(make_uniform_product_space(spc, 1));
+END_FUNCTION;
+
+FUNCTION open_path_based_inner_boundary(input : SET OF primitive_2d) : BOOLEAN;
+LOCAL
+ pass : BOOLEAN := true;
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(input);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS' IN TYPEOF(input[i])) AND
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN
+ TYPEOF(input[i]\mapped_item.mapping_source\representation_map.mapping_origin)) OR
+ (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN
+ TYPEOF(input[i]\mapped_item.mapping_source\representation_map.mapping_origin)) AND
+ (input[i]\mapped_item.mapping_source\representation_map.mapping_origin\composite_curve.closed_curve = true)))
+ THEN
+ pass := false;
+ END_IF;
+ END_REPEAT;
+ RETURN(pass);
+END_FUNCTION;
+
+FUNCTION open_shell_reversed(a_shell : open_shell) : oriented_open_shell;
+LOCAL
+ the_reverse : oriented_open_shell;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION path_reversed(a_path : path) : oriented_path;
+LOCAL
+ the_reverse : oriented_path;
+END_LOCAL;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(link_cntxt))
+ THEN
+ RETURN(?);
+ END_IF;
+ pa_units := QUERY(unit
+ <* link_cntxt\global_unit_assigned_context.units
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
+ IF SIZEOF(pa_units) <> 1
+ THEN
+ RETURN(?);
+ END_IF;
+ pau := pa_units[1];
+ IF (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF(pau)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(pau)))
+ THEN
+ RETURN(?);
+ END_IF;
+ REPEAT WHILE ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF(pau)) AND
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(pau))) OR
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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.E18 * converted_angle);
+ si_prefix.peta : RETURN(1.E15 * converted_angle);
+ si_prefix.tera : RETURN(1.E12 * converted_angle);
+ si_prefix.giga : RETURN(1.E9 * converted_angle);
+ si_prefix.mega : RETURN(1.E6 * converted_angle);
+ si_prefix.kilo : RETURN(1.E3 * converted_angle);
+ si_prefix.hecto : RETURN(1.E2 * converted_angle);
+ si_prefix.deca : RETURN(1.E1 * converted_angle);
+ si_prefix.deci : RETURN(1.E-1 * converted_angle);
+ si_prefix.centi : RETURN(1.E-2 * converted_angle);
+ si_prefix.milli : RETURN(1.E-3 * converted_angle);
+ si_prefix.micro : RETURN(1.E-6 * converted_angle);
+ si_prefix.nano : RETURN(1.E-9 * converted_angle);
+ si_prefix.pico : RETURN(1.E-12 * converted_angle);
+ si_prefix.femto : RETURN(1.E-15 * converted_angle);
+ si_prefix.atto : RETURN(1.E-18 * converted_angle);
+ OTHERWISE: RETURN(converted_angle);
+ END_CASE;
+END_FUNCTION;
+
+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;
+
+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;
+
+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 < shape[j]})
+ THEN
+ RETURN(?);
+ END_IF;
+ index := index + k * inc[j];
+ END_REPEAT;
+ RETURN(index);
+END_FUNCTION;
+
+FUNCTION relating_shape_representations_of_extreme_values(item : location_of_extreme_value_select) : SET OF shape_representation;
+LOCAL
+ results : SET OF shape_representation := [];
+ exti : SET OF extreme_instance := [];
+ ii_ei : SET OF instance_report_item_with_extreme_instances := [];
+ sdiir : SET OF shape_data_quality_inspection_instance_report := [];
+ sdqr : SET OF shape_data_quality_inspection_result_representation := [];
+ sdisr : SET OF shape_data_quality_inspected_shape_and_result_relationship := [];
+END_LOCAL;
+ exti := exti +
+ bag_to_set(USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTREME_INSTANCE.LOCATIONS_OF_EXTREME_VALUE'));
+ REPEAT i := 1 TO HIINDEX(exti);
+ ii_ei := ii_ei +
+ bag_to_set(USEDIN(exti[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES.EXTREME_INSTANCES'));
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(ii_ei);
+ sdiir := sdiir +
+ bag_to_set(USEDIN(ii_ei[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT.INSPECTED_INSTANCES'));
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(sdiir);
+ sdqr := sdqr +
+ QUERY(i1
+ <* bag_to_set(USEDIN(sdiir[i].inspection_result,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
+ TYPEOF(i1));
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(sdqr);
+ sdisr := sdisr +
+ bag_to_set(USEDIN(sdqr[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.REP_2'));
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(sdisr);
+ results := results + sdisr[i].rep_1;
+ END_REPEAT;
+ RETURN(results);
+END_FUNCTION;
+
+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;
+
+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;
+
+FUNCTION representation_of_link(link : kinematic_link) : kinematic_link_representation;
+(*
+ LOCAL
+ link_rep_rel : BAG OF kinematic_link_representation_relation;
+ END_LOCAL;
+
+ link_rep_rel := USEDIN (link, 'KINEMATIC_STRUCTURE_SCHEMA.'+
+ 'KINEMATIC_LINK_REPRESENTATION_RELATION.'+
+ 'TOPOLOGICAL_ASPECTS');
+ IF (SIZEOF (link_rep_rel) = 0) THEN
+ RETURN (?);
+ ELSE
+ RETURN (link_rep_rel[1].geometric_aspects);
+ END_IF;
+ *)
+ (*
+ LOCAL
+ link_rep_rel : BAG OF kinematic_link_representation_relation;
+ END_LOCAL;
+
+ link_rep_rel := USEDIN (link, 'KINEMATIC_STRUCTURE_SCHEMA.'+
+ 'KINEMATIC_LINK_REPRESENTATION_RELATION.'+
+ 'TOPOLOGICAL_ASPECTS');
+ IF (SIZEOF (link_rep_rel) = 0) THEN
+ RETURN (?);
+ ELSE
+ RETURN (link_rep_rel[1].geometric_aspects);
+ END_IF;
+ *)
+ RETURN(?);
+END_FUNCTION;
+
+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;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION shell_reversed(a_shell : shell) : shell;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(a_shell))
+ THEN
+ RETURN(open_shell_reversed(a_shell));
+ ELSE
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN TYPEOF(a_shell))
+ THEN
+ RETURN(closed_shell_reversed(a_shell));
+ ELSE
+ RETURN(?);
+ END_IF;
+ END_IF;
+END_FUNCTION;
+
+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;
+
+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] <= 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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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 ((LENGTH(types[i]) > n) AND (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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION sts_get_product_definition_shape(input : geometric_tolerance_target) : product_definition_shape;
+ CASE true OF
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN
+ TYPEOF(input)) : RETURN(input\shape_aspect_relationship.relating_shape_aspect\shape_aspect.of_shape);
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN
+ TYPEOF(input)) : RETURN(input\dimensional_size.applies_to\shape_aspect.of_shape);
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(input)) : RETURN(input);
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(input)) : RETURN(input\shape_aspect.of_shape);
+ OTHERWISE: RETURN(?);
+ END_CASE;
+END_FUNCTION;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+FUNCTION topology_reversed(an_item : reversible_topology) : reversible_topology;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE' IN TYPEOF(an_item))
+ THEN
+ RETURN(edge_reversed(an_item));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH' IN TYPEOF(an_item))
+ THEN
+ RETURN(path_reversed(an_item));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND' IN TYPEOF(an_item))
+ THEN
+ RETURN(face_bound_reversed(an_item));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' IN TYPEOF(an_item))
+ THEN
+ RETURN(face_reversed(an_item));
+ END_IF;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(links[i]\product_definition_relationship.related_product_definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN
+ TYPEOF(links[i]\product_definition_relationship.related_product_definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN
+ TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION unique_in_product_definition(item : representative_shape_representation) : BOOLEAN;
+LOCAL
+ local_p_d : SET OF product_definition := [];
+ local_s_r : SET OF shape_representation := [];
+ i : INTEGER;
+ j : INTEGER;
+END_LOCAL;
+ local_p_d := using_product_definition_of_shape_representation(item);
+ IF (SIZEOF(local_p_d) <> 1)
+ THEN
+ RETURN(false);
+ ELSE
+ REPEAT i := 1 TO HIINDEX(local_p_d);
+ local_s_r := find_shape_representation_of_product_definition(local_p_d[i]);
+ REPEAT j := 1 TO HIINDEX(local_s_r);
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(local_s_r[j])) AND
+ (local_s_r[j] :<>: item))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION unique_in_shape_aspect(item : representative_shape_representation) : BOOLEAN;
+LOCAL
+ local_s_a : SET OF shape_aspect := [];
+ local_s_r : SET OF shape_representation := [];
+ i : INTEGER;
+ j : INTEGER;
+END_LOCAL;
+ local_s_a := using_shape_aspect_of_shape_representation(item);
+ IF (SIZEOF(local_s_a) <> 1)
+ THEN
+ RETURN(false);
+ ELSE
+ REPEAT i := 1 TO HIINDEX(local_s_a);
+ local_s_r := find_shape_representation_of_shape_aspect(local_s_a[i]);
+ REPEAT j := 1 TO HIINDEX(local_s_r);
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
+ TYPEOF(local_s_r[j])) AND
+ (local_s_r[j] :<>: item))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION used_variables(arg : generic_expression) : SET OF generic_variable;
+LOCAL
+ result : SET OF generic_variable := [];
+END_LOCAL;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_VARIABLE' IN TYPEOF(arg)
+ THEN
+ RETURN([arg]);
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(used_variables(arg\unary_generic_expression.operand));
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ RETURN(used_variables(arg\binary_generic_expression.operands[1]) +
+ used_variables(arg\binary_generic_expression.operands[2]));
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg)
+ THEN
+ REPEAT i := 1 TO SIZEOF(arg\multiple_arity_generic_expression.operands);
+ result := result + used_variables(arg\multiple_arity_generic_expression.operands[i]);
+ END_REPEAT;
+ RETURN(result);
+ END_IF;
+ RETURN([]);
+END_FUNCTION;
+
+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, ''))
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION using_product_definition_of_shape_aspect(item : shape_aspect) : product_definition;
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(item.of_shape.definition))
+ THEN
+ RETURN(item.of_shape.definition);
+ ELSE
+ RETURN(?);
+ END_IF;
+END_FUNCTION;
+
+FUNCTION using_product_definition_of_shape_representation(item : shape_representation) : SET OF product_definition;
+LOCAL
+ local_s_d_r : SET OF shape_definition_representation := [];
+ local_p_d : SET OF product_definition := [];
+ i : INTEGER;
+END_LOCAL;
+ local_s_d_r := QUERY(i1
+ <* bag_to_set(USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(i1));
+ REPEAT i := 1 TO HIINDEX(local_s_d_r);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN
+ TYPEOF(local_s_d_r[i]\property_definition_representation.definition))
+ THEN
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition))
+ THEN
+ local_p_d := local_p_d +
+ local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ RETURN(local_p_d);
+END_FUNCTION;
+
+FUNCTION using_representation_with_mapping(item : representation_item) : SET OF representation;
+LOCAL
+ results : SET OF representation := [];
+ local_results : SET OF representation := [];
+ local_representation_map : SET OF representation_map := [];
+ intermediate_items : SET OF representation_item := [];
+ i : INTEGER;
+ j : INTEGER;
+END_LOCAL;
+ local_results := QUERY(z
+ <* using_representations(item)
+ | SIZEOF(USEDIN(z,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')) >
+ 0);
+ IF (SIZEOF(local_results) = 0)
+ THEN
+ RETURN([]);
+ ELSE
+ REPEAT i := 1 TO HIINDEX(local_results);
+ local_representation_map := local_representation_map +
+ bag_to_set(USEDIN(local_results[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(local_representation_map);
+ intermediate_items := intermediate_items +
+ bag_to_set(USEDIN(local_representation_map[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'));
+ END_REPEAT;
+ REPEAT j := 1 TO HIINDEX(intermediate_items);
+ results := results + bag_to_set(using_representation_with_mapping(intermediate_items[j]));
+ END_REPEAT;
+ END_IF;
+ RETURN(results);
+END_FUNCTION;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION using_shape_aspect_of_shape_representation(item : shape_representation) : SET OF shape_aspect;
+LOCAL
+ local_s_d_r : SET OF shape_definition_representation := [];
+ local_s_d_r2 : BAG OF shape_definition_representation := [];
+ local_s_a : SET OF shape_aspect := [];
+ i : INTEGER;
+END_LOCAL;
+ local_s_d_r2 := local_s_d_r2 +
+ QUERY(pdr
+ <* USEDIN(item,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(pdr));
+ local_s_d_r := bag_to_set(local_s_d_r2);
+ REPEAT i := 1 TO HIINDEX(local_s_d_r);
+ IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
+ TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition))
+ THEN
+ local_s_a := local_s_a +
+ local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
+ END_IF;
+ END_REPEAT;
+ RETURN(local_s_a);
+END_FUNCTION;
+
+FUNCTION valid_basis_curve_in_2d_wireframe(crv : curve) : BOOLEAN;
+-- check for valid basic curve types
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'] *
+ TYPEOF(crv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE') IN TYPEOF(crv))
+ THEN
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARABOLA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA'] *
+ TYPEOF(crv\trimmed_curve.basis_curve)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(valid_basis_curve_in_2d_wireframe(crv\trimmed_curve.basis_curve));
+ END_IF;
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D') IN TYPEOF(crv))
+ THEN
+ RETURN(valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d.basis_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA') IN TYPEOF(crv))
+ THEN
+ RETURN(valid_basis_curve_in_2d_wireframe(crv\curve_replica.parent_curve));
+ ELSE
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE') IN TYPEOF(crv))
+ THEN
+ RETURN(SIZEOF(QUERY(ccs
+ <* crv\composite_curve.segments
+ | NOT (valid_basis_curve_in_2d_wireframe(ccs.parent_curve)))) =
+ 0);
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION valid_calendar_date(date : calendar_date) : LOGICAL;
+ CASE date.month_component OF
+ 1 : RETURN({1 <= date.day_component <= 31});
+ 2 : BEGIN
+ IF (leap_year(date.year_component))
+ THEN
+ RETURN({1 <= date.day_component <= 29});
+ ELSE
+ RETURN({1 <= date.day_component <= 28});
+ END_IF;
+ END;
+ 3 : RETURN({1 <= date.day_component <= 31});
+ 4 : RETURN({1 <= date.day_component <= 30});
+ 5 : RETURN({1 <= date.day_component <= 31});
+ 6 : RETURN({1 <= date.day_component <= 30});
+ 7 : RETURN({1 <= date.day_component <= 31});
+ 8 : RETURN({1 <= date.day_component <= 31});
+ 9 : RETURN({1 <= date.day_component <= 30});
+ 10 : RETURN({1 <= date.day_component <= 31});
+ 11 : RETURN({1 <= date.day_component <= 30});
+ 12 : RETURN({1 <= date.day_component <= 31});
+ END_CASE;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION valid_csg_2d_primitives(input : csg_solid_2d) : BOOLEAN;
+ CASE true OF
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN
+ TYPEOF(input\csg_solid_2d.tree_root_expression)) : BEGIN
+ IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPLEX_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPTIC_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HALF_SPACE_2D',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_AREA'] *
+ TYPEOF(input\csg_solid_2d.tree_root_expression)) >
+ 0)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END;
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_RESULT_2D' IN
+ TYPEOF(input\csg_solid_2d.tree_root_expression)) : RETURN(valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.first_operand) AND
+ valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.second_operand));
+ OTHERWISE: RETURN(false);
+ END_CASE;
+END_FUNCTION;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
+ TYPEOF(rep)));
+ IF (SIZEOF(QUERY(srwp
+ <* parameter_representations
+ | (SIZEOF(QUERY(i
+ <* srwp.items
+ | (i.name = 'orientation') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
+ TYPEOF(i)) =
+ 2))) =
+ 1))) =
+ 1));
+ OTHERWISE: RETURN(false);
+ END_CASE;
+END_FUNCTION;
+
+FUNCTION valid_geometrically_bounded_wf_curve(crv : curve) : BOOLEAN;
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'] *
+ TYPEOF(crv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(crv)
+ THEN
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARABOLA',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(crv)
+ THEN
+ RETURN(valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(crv)
+ THEN
+ RETURN(valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION valid_geometrically_bounded_wf_point(pnt : point) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt)
+ THEN
+ RETURN(valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (prd.name =
+ 'occurrence selection')));
+ property_definition_representations : SET OF property_definition_representation := bag_to_set(QUERY(pdr
+ <* USEDIN(properties[1],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) =
+ 1) AND
+ (i.name = 'selection quantity'))) <>
+ 1)
+ THEN
+ RETURN(false);
+ END_IF;
+ IF (SIZEOF(QUERY(i
+ <* selected_representation\representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUALIFIED_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
+ TYPEOF(i)) =
+ 0))) >
+ 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ RETURN(true);
+END_FUNCTION;
+
+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;
+
+FUNCTION valid_units(m : measure_with_unit) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION valid_wireframe_edge_curve(crv : curve) : BOOLEAN;
+ IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'] *
+ TYPEOF(crv)) =
+ 1
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(crv)
+ THEN
+ RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION valid_wireframe_vertex_point(pnt : point) : BOOLEAN;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
+ THEN
+ RETURN(true);
+ ELSE
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF(pnt)
+ THEN
+ RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
+ END_IF;
+ END_IF;
+ RETURN(false);
+END_FUNCTION;
+
+FUNCTION validate_accuracy_types(ei : shape_data_quality_criterion;
+ type_list : BAG OF STRING) : LOGICAL;
+LOCAL
+ sdqca : BAG OF shape_data_quality_criterion_and_accuracy_association := [];
+ sma : BAG OF shape_measurement_accuracy := [];
+ sdqir : SET OF shape_data_quality_inspection_result := [];
+ scraa : BAG OF shape_inspection_result_accuracy_association := [];
+ t_logic : BOOLEAN;
+END_LOCAL;
+ sdqca := USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.SHAPE_DATA_QUALITY_CRITERION');
+ IF (SIZEOF(sdqca) <> 0)
+ THEN
+ REPEAT i := 1 TO SIZEOF(sdqca);
+ sma := sma + sdqca[i].required_specific_accuracy;
+ END_REPEAT;
+ IF (SIZEOF(type_list) < SIZEOF(sma))
+ THEN
+ RETURN(false);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sma);
+ t_logic := false;
+ REPEAT j := 1 TO SIZEOF(type_list);
+ IF (type_list[j] IN value_limit_type(sma[i].range))
+ THEN
+ t_logic := true;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ IF (NOT (t_logic))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ sdqir := QUERY(q
+ <* bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
+ IF (SIZEOF(sdqir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ scraa := USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.SHAPE_DATA_QUALITY_RESULT');
+ IF (SIZEOF(scraa) <> 0)
+ THEN
+ sma := [];
+ REPEAT j := 1 TO SIZEOF(scraa);
+ sma := sma + scraa[j].applied_specific_accuracy;
+ END_REPEAT;
+ IF (SIZEOF(type_list) < SIZEOF(sma))
+ THEN
+ RETURN(false);
+ END_IF;
+ REPEAT j := 1 TO SIZEOF(sma);
+ t_logic := false;
+ REPEAT k := 1 TO SIZEOF(type_list);
+ IF (type_list[k] IN value_limit_type(sma[j].range))
+ THEN
+ t_logic := true;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ IF (NOT (t_logic))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION validate_attribute_id(attid : attribute_identifier) : BOOLEAN;
+
+CONSTANT
+ letters : SET [52 : 52] OF STRING :=
+ ['a',
+ 'b',
+ 'c',
+ 'd',
+ 'e',
+ 'f',
+ 'g',
+ 'h',
+ 'i',
+ 'j',
+ 'k',
+ 'l',
+ 'm',
+ 'n',
+ 'o',
+ 'p',
+ 'q',
+ 'r',
+ 's',
+ 't',
+ 'u',
+ 'v',
+ 'w',
+ 'x',
+ 'y',
+ 'z',
+ 'A',
+ 'B',
+ 'C',
+ 'D',
+ 'E',
+ 'F',
+ 'G',
+ 'H',
+ 'I',
+ 'J',
+ 'K',
+ 'L',
+ 'M',
+ 'N',
+ 'O',
+ 'P',
+ 'Q',
+ 'R',
+ 'S',
+ 'T',
+ 'U',
+ 'V',
+ 'W',
+ 'X',
+ 'Y',
+ 'Z'];
+ numbers_etc : SET [15 : 15] OF STRING := ['0','1','2','3','4','5','6','7','8','9','_','[',']','.','\'];
+ valid_chars : SET [67 : 67] OF STRING := letters + numbers_etc;
+END_CONSTANT;
+LOCAL
+ id_length : INTEGER := LENGTH(attid);
+ id_valid : BOOLEAN := true;
+ i : INTEGER;
+END_LOCAL;
+ IF NOT (attid[1] IN letters)
+ THEN
+ id_valid := false;
+ END_IF;
+ REPEAT i := 2 TO id_length
+ WHILE id_valid = true;
+ IF NOT (attid[i] IN valid_chars)
+ THEN
+ id_valid := false;
+ END_IF;
+ END_REPEAT;
+ RETURN(id_valid);
+END_FUNCTION;
+
+FUNCTION validate_countersink_radii(cskhole : solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN;
+LOCAL
+ i : INTEGER;
+ j : INTEGER;
+ n : INTEGER := 1 + cskhole\solid_with_stepped_round_hole.segments;
+ smaller : positive_length_measure;
+ larger : positive_length_measure;
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions);
+ IF (((cskhole.conical_transitions[i].transition_number = 1) AND
+ (cskhole.conical_transitions[i].cone_apex_angle < 0)) XOR
+ ((cskhole.conical_transitions[i].transition_number = n) AND
+ (cskhole.conical_transitions[i].cone_apex_angle > 0)))
+ THEN
+ RETURN(false);
+ ELSE
+ IF ((cskhole.conical_transitions[i].transition_number <> 1) AND
+ (cskhole.conical_transitions[i].transition_number <> n))
+ THEN
+ BEGIN
+ j := cskhole.conical_transitions[i].transition_number;
+ IF cskhole\solid_with_stepped_round_hole.segment_radii[j] >
+ cskhole\solid_with_stepped_round_hole.segment_radii[j - 1]
+ THEN
+ BEGIN
+ IF (cskhole.conical_transitions[i].cone_apex_angle > 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ larger := cskhole\solid_with_stepped_round_hole.segment_radii[j];
+ smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
+ END;
+ ELSE
+ BEGIN
+ IF (cskhole.conical_transitions[i].cone_apex_angle < 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ larger := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
+ smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j];
+ END;
+ END_IF;
+ IF ((cskhole.conical_transitions[i].cone_base_radius > larger) OR
+ (cskhole.conical_transitions[i].cone_base_radius < smaller))
+ THEN
+ RETURN(false);
+ END_IF;
+ END;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION validate_ecdq_inspected_elements_type(ei : externally_conditioned_data_quality_criterion;
+ type_list : BAG OF STRING) : LOGICAL;
+LOCAL
+ sdqir : SET OF externally_conditioned_data_quality_inspection_result := [];
+ dir : SET OF data_quality_inspection_instance_report := [];
+ sdiri : SET OF externally_conditioned_data_quality_inspection_instance_report_item := [];
+ t_type_list : BAG OF STRING := [];
+END_LOCAL;
+ sdqir := QUERY(q
+ <* bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
+ TYPEOF(q));
+ IF (SIZEOF(sdqir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ dir := dir +
+ QUERY(q
+ <* bag_to_set(USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF (SIZEOF(dir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(dir);
+ sdiri := sdiri +
+ QUERY(q
+ <* dir[i].inspected_instances
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF (SIZEOF(sdiri) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdiri);
+ IF (SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list))
+ THEN
+ RETURN(false);
+ END_IF;
+ t_type_list := type_list;
+ REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
+ REPEAT k := 1 TO SIZEOF(t_type_list);
+ IF (t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]))
+ THEN
+ t_type_list := t_type_list - t_type_list[k];
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ IF (SIZEOF(t_type_list) > 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION validate_inspected_elements_type(ei : shape_data_quality_criterion;
+ type_list : BAG OF STRING) : LOGICAL;
+LOCAL
+ sdqir : SET OF shape_data_quality_inspection_result := [];
+ sdir : SET OF shape_data_quality_inspection_instance_report := [];
+ sdiri : SET OF shape_data_quality_inspection_instance_report_item := [];
+ t_type_list : BAG OF STRING := [];
+END_LOCAL;
+ sdqir := QUERY(q
+ <* bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
+ IF (SIZEOF(sdqir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ sdir := sdir +
+ QUERY(q
+ <* bag_to_set(USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF (SIZEOF(sdir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdir);
+ sdiri := sdiri +
+ QUERY(q
+ <* sdir[i].inspected_instances
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF (SIZEOF(sdiri) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdiri);
+ IF (SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list))
+ THEN
+ RETURN(false);
+ END_IF;
+ t_type_list := type_list;
+ REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
+ REPEAT k := 1 TO SIZEOF(t_type_list);
+ IF (t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]))
+ THEN
+ t_type_list := t_type_list - t_type_list[k];
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ IF (SIZEOF(t_type_list) > 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION validate_locations_of_extreme_value_type(ei : shape_data_quality_criterion;
+ type_list : BAG OF STRING) : LOGICAL;
+LOCAL
+ sdqir : SET OF shape_data_quality_inspection_result := [];
+ sdir : SET OF shape_data_quality_inspection_instance_report := [];
+ sdei : SET OF instance_report_item_with_extreme_instances := [];
+ t_type_list : BAG OF STRING := [];
+END_LOCAL;
+ sdqir := QUERY(q
+ <* bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
+ IF (SIZEOF(sdqir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ sdir := sdir +
+ QUERY(q
+ <* bag_to_set(USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(q));
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdir);
+ sdei := sdei +
+ QUERY(q
+ <* sdir[i].inspected_instances
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF (SIZEOF(sdei) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ IF ((SIZEOF(type_list) = 0) AND (SIZEOF(sdei) <> 0))
+ THEN
+ RETURN(false);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdei);
+ REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
+ IF (SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value) <> SIZEOF(type_list))
+ THEN
+ RETURN(false);
+ END_IF;
+ t_type_list := type_list;
+ REPEAT k := 1 TO SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value);
+ REPEAT l := 1 TO SIZEOF(t_type_list);
+ IF (t_type_list[l] IN TYPEOF(sdei[i].extreme_instances[j].locations_of_extreme_value[k]))
+ THEN
+ t_type_list := t_type_list - t_type_list[l];
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ IF (SIZEOF(t_type_list) > 0)
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION validate_measured_data_type(ei : shape_data_quality_criterion;
+ type_string : STRING) : LOGICAL;
+LOCAL
+ sdqir : SET OF shape_data_quality_inspection_result := [];
+ sdcr : SET OF shape_data_quality_inspection_criterion_report := [];
+ sdir : SET OF shape_data_quality_inspection_instance_report := [];
+ sdii : SET OF shape_data_quality_inspection_instance_report_item := [];
+ sdei : BAG OF instance_report_item_with_extreme_instances := [];
+END_LOCAL;
+ sdqir := QUERY(q
+ <* bag_to_set(USEDIN(ei,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
+ IF (SIZEOF(sdqir) = 0)
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ sdcr := sdcr +
+ QUERY(q
+ <* bag_to_set(USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_CRITERION_REPORT' IN
+ TYPEOF(q));
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdqir);
+ sdir := sdir +
+ QUERY(q
+ <* bag_to_set(USEDIN(sdqir[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
+ TYPEOF(q));
+ END_REPEAT;
+ IF ((SIZEOF(sdcr) = 0) AND (SIZEOF(sdir) = 0))
+ THEN
+ RETURN(true);
+ END_IF;
+ REPEAT i := 1 TO SIZEOF(sdir);
+ sdii := sdii +
+ QUERY(q
+ <* sdir[i].inspected_instances
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
+ TYPEOF(q));
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdir);
+ sdei := sdei +
+ QUERY(q
+ <* sdir[i].inspected_instances
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
+ TYPEOF(q));
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdcr);
+ IF (NOT (type_string IN TYPEOF(sdcr[i].representative_measured_value)))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdii);
+ IF (NOT (type_string IN TYPEOF(sdii[i].measured_value)))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ REPEAT i := 1 TO SIZEOF(sdei);
+ REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
+ IF (NOT (type_string IN TYPEOF(sdei[i].extreme_instances[j].measured_value)))
+ THEN
+ RETURN(false);
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+ RETURN(true);
+END_FUNCTION;
+
+FUNCTION value_limit_type(iv : shape_data_quality_value_limit_type_select) : SET OF STRING;
+LOCAL
+ retval : SET OF STRING := [];
+END_LOCAL;
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE') IN TYPEOF(iv))
+ THEN
+ retval := TYPEOF(iv\compound_representation_item.item_element[1].value_component);
+ END_IF;
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_LIMIT') IN TYPEOF(iv))
+ THEN
+ IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_WITH_UNIT') IN TYPEOF(iv))
+ THEN
+ retval := TYPEOF(iv\measure_with_unit.value_component);
+ END_IF;
+ END_IF;
+ RETURN(retval);
+END_FUNCTION;
+
+FUNCTION value_range_aggregate_rep_item(agg : AGGREGATE OF representation_item) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(QUERY(i1
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i1)))) =
+ 6)
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END;
+END_FUNCTION;
+
+FUNCTION value_range_wr1(agg : compound_item_definition) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(agg) = 2) AND
+ ((SIZEOF(QUERY(i1
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i1)))) =
+ 2) OR
+ (SIZEOF(QUERY(i2
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
+ TYPEOF(i2)))) =
+ 2))
+ THEN
+ RETURN(true);
+ ELSE
+ RETURN(false);
+ END_IF;
+ END;
+END_FUNCTION;
+
+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;
+
+FUNCTION value_range_wr3(agg : compound_item_definition) : BOOLEAN;
+ BEGIN
+ IF (SIZEOF(QUERY(i1
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
+ TYPEOF(i1)) AND
+ (SIZEOF(QUERY(i2
+ <* agg
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+FUNCTION values_space_of(expr : generic_expression) : maths_space;
+LOCAL
+ e_prefix : STRING := 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.';
+ 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;
+
+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 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(arg1)
+ THEN
+ mag1 := arg1\vector.magnitude;
+ vec1 := arg1\vector.orientation;
+ ELSE
+ mag1 := 1.0;
+ vec1 := arg1;
+ END_IF;
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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;
+
+FUNCTION ypr_index(ypr : ypr_enumeration) : INTEGER;
+ CASE ypr OF
+ yaw : RETURN(1);
+ pitch : RETURN(2);
+ roll : RETURN(3);
+ END_CASE;
+ RETURN(?);
+END_FUNCTION;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'alternative solution')) =
+ 1);
+WHERE
+ WR1: SIZEOF(QUERY(pdf
+ <* solution_versions
+ | SIZEOF(QUERY(pd
+ <* USEDIN(pdf,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
+ | pd.frame_of_reference.name = 'alternative definition')) <>
+ 1)) =
+ 0;
+END_RULE;
+
+RULE ap242_application_protocol_definition_required FOR (application_context);
+WHERE
+ WR1: SIZEOF(QUERY(ac
+ <* application_context
+ | (SIZEOF(QUERY(apd
+ <* USEDIN(ac,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION')
+ | apd.application_interpreted_model_schema_name =
+ 'ap242_managed_model_based_3d_engineering_mim_lf')) >
+ 0))) >
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'functionality')) =
+ 1) AND
+ (SIZEOF(QUERY(pd
+ <* USEDIN(pdf,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'conceptual design')) =
+ 1) AND
+ (SIZEOF(QUERY(pd
+ <* USEDIN(pdf,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
+ | pd.frame_of_reference.name = 'conceptual definition')) <
+ 1))) =
+ 0;
+END_RULE;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'chamfer face'))))))) =
+ 0);
+END_RULE;
+
+RULE compatible_dimension FOR (cartesian_point, direction, geometric_representation_context);
+WHERE
+ WR1: check_geometric_dimension(cartesian_point, direction, geometric_representation_context);
+END_RULE;
+
+RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition,
+ next_assembly_usage_occurrence,
+ product_related_product_category);
+LOCAL
+ i : INTEGER := 0;
+ j : INTEGER := 0;
+ k : INTEGER := 0;
+ dkuhr : LOGICAL := true;
+ nnauo : INTEGER := 0;
+ nprpc : INTEGER := 0;
+ rp : product;
+END_LOCAL;
+ REPEAT i := LOINDEX(composite_assembly_sequence_definition) TO HIINDEX(composite_assembly_sequence_definition);
+ nnauo := 0;
+ REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
+ IF (composite_assembly_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition)
+ THEN
+ rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
+ nprpc := 0;
+ REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
+ IF ((rp IN product_related_product_category[k].products) AND
+ (product_related_product_category[k].name IN
+ ['ply','ply laminate','filament laminate','processed core','composite assembly']))
+ THEN
+ nprpc := nprpc + 1;
+ END_IF;
+ END_REPEAT;
+ IF (nprpc = 1)
+ THEN
+ nnauo := nnauo + 1;
+ ELSE
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ IF (dkuhr = false)
+ THEN
+ ESCAPE;
+ END_IF;
+ IF (nnauo = 0)
+ THEN
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+WHERE
+ WR1: dkuhr;
+END_RULE;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNCERTAINTY_QUALIFIER' IN
+ TYPEOF(u1)) AND
+ (SIZEOF(QUERY(u2
+ <* qri.qualifiers
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNCERTAINTY_QUALIFIER' IN
+ TYPEOF(u2)) AND
+ (u2\uncertainty_qualifier.measure_name =
+ u1\uncertainty_qualifier.measure_name))) >
+ 1))) >
+ 0)) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'requirement')) =
+ 0))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'requirement')) >
+ 0) AND
+ (SIZEOF(QUERY(pd
+ <* USEDIN(pdf,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
+ | pd.frame_of_reference.name = 'design constraint definition')) <
+ 1))) =
+ 0;
+END_RULE;
+
+RULE dimensioning_data_requires_document FOR (applied_document_reference,
+ product_definition_context_association,
+ role_association);
+LOCAL
+ adr : SET OF applied_document_reference := (QUERY(adr
+ <* applied_document_reference
+ | (adr\document_reference.assigned_document\document.kind\document_type.product_data_type =
+ 'Standards Document') AND
+ ((adr\document_reference.assigned_document\document.id =
+ 'ASME Y14.41-2003') OR
+ (adr\document_reference.assigned_document\document.id =
+ 'ASME Y14.5M-1994') OR
+ (adr\document_reference.assigned_document\document.id =
+ 'ISO 1101: 2004'))));
+ pdca : SET OF product_definition_context_association := (QUERY(pdca
+ <* product_definition_context_association
+ | (pdca\product_definition_context_association.role\product_definition_context_role.name =
+ 'additional context') AND
+ (pdca\product_definition_context_association.frame_of_reference\application_context_element.name =
+ 'Geometric Dimensioning and Tolerancing Product Specification')));
+ ra : SET OF role_association := (QUERY(ra
+ <* role_association
+ | ra\role_association.role\object_role.name =
+ 'dimensioning standard'));
+ ra1 : SET OF role_association := [];
+ pdpdca : SET OF product_definition := [];
+ pdadr : SET OF product_definition := [];
+ pass : BOOLEAN := true;
+END_LOCAL;
+ REPEAT i := 1 TO HIINDEX(pdca);
+ pdpdca := pdpdca + pdca[i]\product_definition_context_association.definition;
+ END_REPEAT;
+ REPEAT i := 1 TO HIINDEX(adr);
+ ra1 := bag_to_set(USEDIN(adr[i],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
+ IF (ra1 * ra) <> ra1
+ THEN
+ pass := false;
+ END_IF;
+ REPEAT j := 1 TO HIINDEX(adr[i]\applied_document_reference.items);
+ IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(adr[i]\applied_document_reference.items[j])
+ THEN
+ pdadr := pdadr + adr[i]\applied_document_reference.items[j];
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+WHERE
+ WR1: pass;
+ WR2: pdpdca = pdadr;
+END_RULE;
+
+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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
+ TYPEOF(pdr.used_representation)) AND
+ (pdr.used_representation.name = 'second face shape'))))))) =
+ 0);
+END_RULE;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS')) <>
+ 1)) =
+ 0;
+END_RULE;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
+ TYPEOF(edc.source));
+WHERE
+ WR1: SIZEOF(QUERY(edgp
+ <* known_sourced_properties
+ | (SIZEOF(QUERY(edir
+ <* USEDIN(edgp,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM')
+ | (edir.name = 'name scope') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_CLASS' IN
+ TYPEOF(edir.related_item)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
+ TYPEOF(edir.related_item.source)))) <>
+ 1))) =
+ 0;
+END_RULE;
+
+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
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
+ TYPEOF(edgp.source)) AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE.NAME' =
+ 'ISO 13584 library'));
+WHERE
+ WR1: SIZEOF(QUERY(edgp
+ <* plib_properties
+ | (SIZEOF(QUERY(edir
+ <* USEDIN(edgp,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS')
+ | (edir.role.name = 'version'))) <>
+ 1))) =
+ 0;
+END_RULE;
+
+RULE ply_reference FOR (ply_laminate_sequence_definition,
+ next_assembly_usage_occurrence,
+ product_related_product_category);
+LOCAL
+ i : INTEGER;
+ j : INTEGER;
+ k : INTEGER;
+ dkuhr : LOGICAL := true;
+ nnauo : INTEGER;
+ nprpc : INTEGER := 0;
+ rp : product;
+END_LOCAL;
+ REPEAT i := LOINDEX(ply_laminate_sequence_definition) TO HIINDEX(ply_laminate_sequence_definition);
+ nnauo := 0;
+ REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
+ IF (ply_laminate_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition)
+ THEN
+ rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
+ nprpc := 0;
+ REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
+ IF ((product_related_product_category[k].name = 'ply') AND
+ (rp IN product_related_product_category[k].products))
+ THEN
+ nprpc := nprpc + 1;
+ END_IF;
+ END_REPEAT;
+ IF (nprpc = 1)
+ THEN
+ nnauo := nnauo + 1;
+ ELSE
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ IF (dkuhr = false)
+ THEN
+ ESCAPE;
+ END_IF;
+ IF (nnauo = 0)
+ THEN
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+WHERE
+ WR1: dkuhr;
+END_RULE;
+
+RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option);
+LOCAL
+ i : INTEGER;
+ j : INTEGER;
+ k : INTEGER;
+ kp : INTEGER;
+ dkuhr : LOGICAL;
+ nmfuo : INTEGER;
+ nprpc : INTEGER := 0;
+ rp : product;
+END_LOCAL;
+ dkuhr := true;
+ REPEAT kp := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
+ IF (product_related_product_category[kp].name = 'ply')
+ THEN
+ REPEAT i := LOINDEX(product_related_product_category[kp].products) TO HIINDEX(product_related_product_category[kp].products);
+ nmfuo := 0;
+ REPEAT j := LOINDEX(make_from_usage_option) TO HIINDEX(make_from_usage_option);
+ rp := make_from_usage_option[j].related_product_definition.formation.of_product;
+ IF (product_related_product_category[kp].products[i] = rp)
+ THEN
+ REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
+ IF ((rp IN product_related_product_category[k].products) AND
+ (product_related_product_category[k].name IN
+ ['isotropic material','filament assembly','discontinuous fiber assembly']))
+ THEN
+ nprpc := nprpc + 1;
+ END_IF;
+ END_REPEAT;
+ IF (nprpc = 1)
+ THEN
+ nmfuo := nmfuo + 1;
+ ELSE
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ IF (dkuhr = false)
+ THEN
+ ESCAPE;
+ END_IF;
+ IF (nmfuo <> 1)
+ THEN
+ dkuhr := false;
+ ESCAPE;
+ END_IF;
+ END_REPEAT;
+ END_IF;
+ END_REPEAT;
+WHERE
+ WR1: dkuhr;
+END_RULE;
+
+RULE product_concept_feature_requires_category FOR (product_concept_feature);
+WHERE
+ WR1: SIZEOF(QUERY(pcf
+ <* product_concept_feature
+ | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INCLUSION_PRODUCT_CONCEPT_FEATURE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE'] *
+ TYPEOF(pcf)) =
+ 0) AND
+ (SIZEOF(QUERY(aga
+ <* USEDIN(pcf,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_GROUP_ASSIGNMENT.ITEMS')
+ | (aga\group_assignment.role\object_role.name =
+ 'specification category member') AND
+ ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
+ TYPEOF(aga.assigned_group)))) <>
+ 1))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) =
+ 0))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')
+ | aoa.role.name = 'supplier')) <>
+ 1))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+RULE restrict_centre_of_mass_representation FOR (representation);
+WHERE
+ WR1: SIZEOF(QUERY(r
+ <* representation
+ | (r.name = 'centre of mass') AND
+ ((SIZEOF(r.items) <> 1) OR
+ (SIZEOF(QUERY(i
+ <* r.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(i)) AND
+ (i.name = 'centre point'))) <>
+ 1)))) =
+ 0;
+END_RULE;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR')
+ | SIZEOF(QUERY(ccf
+ <* USEDIN(cfrwc,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE.CONDITION')
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR')
+ | cfrwc.related_product_concept_feature :<>:
+ cfrwc.relating_product_concept_feature)) >
+ 0))) =
+ 0;
+END_RULE;
+
+RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design);
+WHERE
+ WR1: SIZEOF(QUERY(cd
+ <* configuration_design
+ | (cd.name = 'functionality') AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CLASS' IN
+ TYPEOF(cd.configuration.item_concept))))) =
+ 0;
+END_RULE;
+
+RULE restrict_configuration_design_for_design_constraint FOR (configuration_design);
+WHERE
+ WR1: SIZEOF(QUERY(cd
+ <* configuration_design
+ | (cd.name = 'design constraint usage') AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
+ TYPEOF(cd.design)) OR
+ (cd.design\product_definition.frame_of_reference.name <>
+ 'design constraint definition')))) =
+ 0;
+END_RULE;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN
+ TYPEOF(gr\group_relationship.related_group)) OR
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN
+ TYPEOF(gr\group_relationship.relating_group))))) =
+ 0;
+END_RULE;
+
+RULE restrict_group_relationship_for_specification_category FOR (group_relationship);
+WHERE
+ WR1: SIZEOF(QUERY(gr
+ <* group_relationship
+ | (gr.name = 'specification category hierarchy') AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
+ TYPEOF(gr.related_group)) OR
+ NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
+ TYPEOF(gr.relating_group))))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
+ | pdr.name = 'definition usage')) <>
+ 1) AND
+ (SIZEOF(QUERY(cd
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.DESIGN')
+ | (cd.name = 'occurrence usage definition') AND
+ (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_IDENTIFICATION' IN
+ TYPEOF(cd.configuration))))) <>
+ 1))) =
+ 0;
+ WR3: SIZEOF(QUERY(pd
+ <* part_occurrences
+ | (SIZEOF(QUERY(cd
+ <* USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN
+ TYPEOF(cd)))) =
+ 0) AND
+ (SIZEOF(USEDIN(pd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
+ | (ppd.name = 'occurrence quantity') AND
+ (SIZEOF(QUERY(pdr
+ <* USEDIN(ppd,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
+ | (pdr.used_representation.name = 'quantity') AND
+ (SIZEOF(pdr.used_representation.items) = 1) AND
+ (SIZEOF(QUERY(i
+ <* pdr.used_representation.items
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN
+ TYPEOF(pdor.occurrence_usage))) =
+ 0))) =
+ 0;
+END_RULE;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name IN ['part','raw material','tool'])) =
+ 0))) =
+ 0;
+END_RULE;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
+ | (pdca.role.name = 'part definition type') AND
+ (pdca.frame_of_reference.name = 'collection definition'))) =
+ 0)))) =
+ 0;
+END_RULE;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'part')) <>
+ 0))) =
+ 0;
+END_RULE;
+
+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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+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;
+
+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,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
+ | prpc.name = 'alternative solution')) =
+ 0))) =
+ 0;
+END_RULE;
+
+RULE styled_curve FOR (styled_item);
+WHERE
+ WR1: SIZEOF(QUERY(si
+ <* styled_item
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(si.item)) AND
+ (SIZEOF(QUERY(psa
+ <* si.styles
+ | (SIZEOF(QUERY(cs
+ <* psa.styles
+ | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
+ TYPEOF(cs)))) >
+ 0))) <>
+ 1))) =
+ 0;
+END_RULE;
+
+RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance);
+WHERE
+ WR1: SIZEOF(QUERY(gt
+ <* geometric_tolerance
+ | NOT (type_check_function(gt,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULARITY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COAXIALITY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCENTRICITY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICITY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLATNESS_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARALLELISM_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERPENDICULARITY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRAIGHTNESS_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMMETRY_TOLERANCE',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE'],
+ 2)))) =
+ 0;
+END_RULE;
+
+RULE subtype_exclusiveness_representation_item FOR (representation_item);
+WHERE
+ WR1: SIZEOF(QUERY(cri
+ <* representation_item
+ | NOT (type_check_function(cri,
+ ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM'],
+ 3)))) =
+ 0;
+END_RULE;
+
+RULE subtype_mandatory_shape_representation FOR (shape_representation);
+WHERE
+ WR1: SIZEOF(QUERY(sr
+ <* shape_representation
+ | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEVELED_SHEET_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHEET_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION'] *
+ TYPEOF(sr)) =
+ 1) OR
+ (SIZEOF(QUERY(it
+ <* sr\representation.items
+ | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
+ TYPEOF(it)))) =
+ 0) OR
+ (SIZEOF(QUERY(sdr
+ <* QUERY(pdr
+ <* USEDIN(sr,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
+ | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
+ TYPEOF(pdr))
+ | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT',
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP'] *
+ TYPEOF(sdr.definition)) =
+ 1))) =
+ 0)))) =
+ 0;
+END_RULE;
+
+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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT')) = 0)) =
+ 0;
+ WR2: SIZEOF(QUERY(edtf
+ <* externally_defined_text_font
+ | SIZEOF(USEDIN(edtf, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT')) = 0)) =
+ 0;
+END_RULE;
+
+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;
+
+RULE transition_feature_on_part_boundary FOR (transition_feature);
+WHERE
+ WR1: SIZEOF(QUERY(tf <* transition_feature | NOT (tf.product_definitional))) = 0;
+END_RULE;
+
+RULE unique_datum_system FOR (datum_system);
+LOCAL
+ pass : BOOLEAN := true;
+END_LOCAL;
+ REPEAT i := 1 TO SIZEOF(datum_system);
+ REPEAT j := 1 TO SIZEOF(datum_system);
+ IF (i <> j)
+ THEN
+ IF datum_system[i]\datum_system.constituents = datum_system[j]\datum_system.constituents
+ THEN
+ pass := false;
+ END_IF;
+ END_IF;
+ END_REPEAT;
+ END_REPEAT;
+WHERE
+ WR1: pass;
+END_RULE;
+
+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],
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
+
+RULE valid_product_and_manufacturing_information_view_contexts FOR (product_definition_context);
+LOCAL
+ design_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.life_cycle_stage =
+ 'design');
+ gdt_representation_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'geometrical dimensioning and tolerancing representation');
+ machining_feature_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'machining feature');
+ material_specification_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'material specification');
+ model_based_3d_annotation_presentation_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'model based 3D annotation presentation');
+ model_based_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'model based product geometry');
+ process_state_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'process state');
+ surface_finish_view_contexts : SET OF product_definition_context := QUERY(pdc
+ <* product_definition_context
+ | pdc.frame_of_reference.application =
+ 'surface finish');
+ additional_view_contexts : SET OF product_definition_context := gdt_representation_view_contexts +
+ machining_feature_view_contexts +
+ material_specification_view_contexts +
+ model_based_3d_annotation_presentation_view_contexts +
+ process_state_view_contexts +
+ surface_finish_view_contexts;
+ need_initial_model_based_view_contexts : SET OF product_definition_context := gdt_representation_view_contexts +
+ model_based_3d_annotation_presentation_view_contexts;
+END_LOCAL;
+WHERE
+ WR1: SIZEOF(gdt_representation_view_contexts * design_view_contexts) = SIZEOF(gdt_representation_view_contexts);
+ WR2: SIZEOF(machining_feature_view_contexts * design_view_contexts) = SIZEOF(machining_feature_view_contexts);
+ WR3: SIZEOF(material_specification_view_contexts * design_view_contexts) =
+ SIZEOF(material_specification_view_contexts);
+ WR4: SIZEOF(model_based_3d_annotation_presentation_view_contexts * design_view_contexts) =
+ SIZEOF(model_based_3d_annotation_presentation_view_contexts);
+ WR5: SIZEOF(model_based_view_contexts * design_view_contexts) = SIZEOF(model_based_view_contexts);
+ WR6: SIZEOF(process_state_view_contexts * design_view_contexts) = SIZEOF(process_state_view_contexts);
+ WR7: SIZEOF(surface_finish_view_contexts * design_view_contexts) = SIZEOF(surface_finish_view_contexts);
+ WR8: SIZEOF(QUERY(mbvc
+ <* model_based_view_contexts
+ | (SIZEOF(USEDIN(mbvc,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE')) =
+ 0))) =
+ SIZEOF(model_based_view_contexts);
+ WR9: SIZEOF(QUERY(avc
+ <* additional_view_contexts
+ | (SIZEOF(USEDIN(avc,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FRAME_OF_REFERENCE')) =
+ 0))) =
+ SIZEOF(additional_view_contexts);
+ WR10: SIZEOF(QUERY(nimbvc
+ <* need_initial_model_based_view_contexts
+ | NOT (SIZEOF(QUERY(pdca
+ <* USEDIN(nimbvc,
+ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE')
+ | (pdca\product_definition_context_association.definition\product_definition.frame_of_reference IN
+ model_based_view_contexts))) =
+ SIZEOF(need_initial_model_based_view_contexts)))) =
+ 0;
+ WR11: SIZEOF(QUERY(gdt_pdc
+ <* gdt_representation_view_contexts
+ | SIZEOF(['ISO 1101','ASME Y14.5'] * get_associated_mandatory_document_ids(gdt_pdc)) = 0)) =
+ 0;
+ WR12: SIZEOF(QUERY(mb3d_pdc
+ <* model_based_3d_annotation_presentation_view_contexts
+ | SIZEOF(['ISO 1101','ISO 16792','ASME Y14.41','ASME Y14.5'] *
+ get_associated_mandatory_document_ids(mb3d_pdc)) =
+ 0)) =
+ 0;
+END_RULE;
+
+RULE validate_dependently_instantiable_entity_data_types FOR (aggregate_id_attribute,
+ attribute_value_role,
+ camera_model_d2,
+ classification_assignment_relationship,
+ concept_feature_relationship,
+ concept_feature_relationship_with_condition,
+ data_equivalence_assessment_specification,
+ data_equivalence_criteria_representation,
+ data_equivalence_criterion,
+ data_equivalence_inspection_instance_report_item,
+ data_equivalence_inspection_requirement,
+ data_equivalence_inspection_result_representation,
+ document_usage_constraint,
+ edge_blended_solid,
+ effectivity_context_role,
+ event_occurrence_role,
+ explicit_procedural_representation_item_relationship,
+ founded_item,
+ indirectly_selected_elements,
+ location_representation_role,
+ location_role,
+ modified_solid_with_placed_configuration,
+ one_direction_repeat_factor,
+ organization_type_role,
+ procedural_representation,
+ procedural_representation_sequence,
+ product_definition_effectivity,
+ product_definition_relationship_relationship,
+ runout_zone_orientation,
+ solid_with_depression,
+ solid_with_hole,
+ solid_with_pocket,
+ solid_with_protrusion,
+ solid_with_shape_element_pattern,
+ solid_with_slot,
+ swept_area_solid,
+ symbol_target,
+ two_direction_repeat_factor,
+ user_selected_elements);
+LOCAL
+ number_of_input_instances : INTEGER;
+ previous_in_chain : LIST OF GENERIC := [];
+ set_of_input_types : SET OF STRING := [];
+ all_instances : SET OF GENERIC := [];
+END_LOCAL;
+ all_instances := all_instances + aggregate_id_attribute;
+ all_instances := all_instances + attribute_value_role;
+ all_instances := all_instances + camera_model_d2;
+ all_instances := all_instances + classification_assignment_relationship;
+ all_instances := all_instances + concept_feature_relationship;
+ all_instances := all_instances + concept_feature_relationship_with_condition;
+ all_instances := all_instances + data_equivalence_assessment_specification;
+ all_instances := all_instances + data_equivalence_criteria_representation;
+ all_instances := all_instances + data_equivalence_criterion;
+ all_instances := all_instances + data_equivalence_inspection_instance_report_item;
+ all_instances := all_instances + data_equivalence_inspection_requirement;
+ all_instances := all_instances + data_equivalence_inspection_result_representation;
+ all_instances := all_instances + document_usage_constraint;
+ all_instances := all_instances + edge_blended_solid;
+ all_instances := all_instances + effectivity_context_role;
+ all_instances := all_instances + event_occurrence_role;
+ all_instances := all_instances + explicit_procedural_representation_item_relationship;
+ all_instances := all_instances + founded_item;
+ all_instances := all_instances + indirectly_selected_elements;
+ all_instances := all_instances + location_representation_role;
+ all_instances := all_instances + location_role;
+ all_instances := all_instances + modified_solid_with_placed_configuration;
+ all_instances := all_instances + one_direction_repeat_factor;
+ all_instances := all_instances + organization_type_role;
+ all_instances := all_instances + procedural_representation;
+ all_instances := all_instances + procedural_representation_sequence;
+ all_instances := all_instances + product_definition_effectivity;
+ all_instances := all_instances + product_definition_relationship_relationship;
+ all_instances := all_instances + runout_zone_orientation;
+ all_instances := all_instances + solid_with_depression;
+ all_instances := all_instances + solid_with_hole;
+ all_instances := all_instances + solid_with_pocket;
+ all_instances := all_instances + solid_with_protrusion;
+ all_instances := all_instances + solid_with_shape_element_pattern;
+ all_instances := all_instances + solid_with_slot;
+ all_instances := all_instances + swept_area_solid;
+ all_instances := all_instances + symbol_target;
+ all_instances := all_instances + two_direction_repeat_factor;
+ all_instances := all_instances + user_selected_elements;
+ ;
+ number_of_input_instances := SIZEOF(all_instances);
+ REPEAT i := 1 TO number_of_input_instances;
+ set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
+ END_REPEAT;
+WHERE
+ WR1: dependently_instantiated(all_instances, set_of_input_types, previous_in_chain);
+END_RULE;
+END_SCHEMA;