From 64e260027b68317345142f1d2c52f3d2f03d1278 Mon Sep 17 00:00:00 2001 From: ika Date: Mon, 6 Apr 2020 18:06:47 +0300 Subject: [PATCH] Replace generation of CDLs by HXX files, add generation of entity registration code, add a small readme, add some useful files, remove unnecessary old html. --- src/ExpToCasExe/ExpToCasExe.cxx | 17 +- src/ExpToCasExe/ap242.exp | 49554 +++++++++++++++++++++++ src/ExpToCasExe/expparse.cxx | 6 + src/ExpToCasExe/expscan.cxx | 7 + src/ExpToCasExe/exptocas.html | 51 - src/ExpToCasExe/occt_step_entities.lst | 780 + src/ExpToCasExe/readme.txt | 15 + src/Express/Express.cxx | 33 +- src/Express/Express.hxx | 5 +- src/Express/Express_Alias.cxx | 12 +- src/Express/Express_Alias.hxx | 5 +- src/Express/Express_Boolean.cxx | 10 - src/Express/Express_Boolean.hxx | 3 - src/Express/Express_ComplexType.cxx | 35 - src/Express/Express_ComplexType.hxx | 3 - src/Express/Express_Entity.cxx | 576 +- src/Express/Express_Entity.hxx | 9 +- src/Express/Express_Enum.cxx | 27 +- src/Express/Express_Enum.hxx | 2 +- src/Express/Express_Integer.cxx | 10 - src/Express/Express_Integer.hxx | 3 - src/Express/Express_Item.cxx | 36 +- src/Express/Express_Item.hxx | 18 +- src/Express/Express_Logical.cxx | 10 - src/Express/Express_Logical.hxx | 3 - src/Express/Express_NamedType.cxx | 10 - src/Express/Express_NamedType.hxx | 3 - src/Express/Express_Real.cxx | 10 - src/Express/Express_Real.hxx | 3 - src/Express/Express_Schema.hxx | 2 +- src/Express/Express_Select.cxx | 268 +- src/Express/Express_Select.hxx | 2 +- src/Express/Express_String.cxx | 10 - src/Express/Express_String.hxx | 3 - src/Express/Express_Type.hxx | 3 - 35 files changed, 50936 insertions(+), 608 deletions(-) create mode 100644 src/ExpToCasExe/ap242.exp delete mode 100644 src/ExpToCasExe/exptocas.html create mode 100644 src/ExpToCasExe/occt_step_entities.lst create mode 100644 src/ExpToCasExe/readme.txt diff --git a/src/ExpToCasExe/ExpToCasExe.cxx b/src/ExpToCasExe/ExpToCasExe.cxx index 427bb1bbd4..3eead1ccf7 100644 --- a/src/ExpToCasExe/ExpToCasExe.cxx +++ b/src/ExpToCasExe/ExpToCasExe.cxx @@ -13,6 +13,10 @@ #include #include +#pragma warning(push) +#pragma warning (disable:4267) +#pragma warning (disable:4706) + Handle(Express_Schema) ec_parse ( FILE *fin ); // interface to parser // Load list of (class name, package name) from the file @@ -30,7 +34,7 @@ static Standard_Boolean LoadList (const char file[], const Handle(Express_Schema char string[200]; while ( fgets ( string, 199, fd_pack ) ) { char *s = string, *name=0; - Standard_Integer ind; + Standard_Integer ind = 0; while ( *s && ! ( ind = strcspn ( s, " \t\r\n" ) ) ) s++; if ( ! *s ) continue; name = s; @@ -127,7 +131,7 @@ Standard_Integer main ( const Standard_Integer argc, const char *argv[] ) { if ( argc <2 ) { std::cout << "EXPRESS -> CASCADE/XSTEP classes generator 3.0" << std::endl; - std::cout << "Use: ExpToCas [ []]" << std::endl; + std::cout << "Use: ExpToCas [ [ [start_index]]]" << std::endl; std::cout << "Where: " << std::endl; std::cout << "- schema.exp is a file with EXPRESS schema " << std::endl; std::cout << "- create.lst is a file with list of types to generate (all if none)" << std::endl; @@ -135,6 +139,8 @@ Standard_Integer main ( const Standard_Integer argc, const char *argv[] ) std::cout << "- packaging.lst is a file with classes distribution per package" << std::endl; std::cout << " in the form of the list (one item per line) \" \"" << std::endl; std::cout << " If package not defined for some type, \"StepStep\" assumed" << std::endl; + std::cout << "- start_index - a first number for auxiliary generated files with data" << std::endl; + std::cout << " to copy into StepAP214_Protocol.cxx, RWStepAP214_GeneralModule.cxx and RWStepAP214_ReadWriteModule.cxx" << std::endl; return 0; } @@ -176,12 +182,17 @@ Standard_Integer main ( const Standard_Integer argc, const char *argv[] ) else if ( ! LoadList ( argv[2], schema, Standard_True ) ) return 0; } + Standard_Integer anIndex = -1; + if (argc > 4) + anIndex = atoi(argv[4]); + //================================= // Step 3: Iterate by items and generate classes std::cout << "Total " << schema->NbItems() << " items" << std::endl; Standard_Boolean done = Standard_False; Standard_Integer nbgen = 0; + Express_Item::SetIndex(anIndex); do { done = Standard_False; for ( Standard_Integer num=1; num <= schema->NbItems(); num++ ) { @@ -194,3 +205,5 @@ Standard_Integer main ( const Standard_Integer argc, const char *argv[] ) // std::cout << "Finished; total " << nbgen << " classes generated" << std::endl; return 1; } + +#pragma warning(pop) diff --git a/src/ExpToCasExe/ap242.exp b/src/ExpToCasExe/ap242.exp new file mode 100644 index 0000000000..994d3505cd --- /dev/null +++ b/src/ExpToCasExe/ap242.exp @@ -0,0 +1,49554 @@ +(* + $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; diff --git a/src/ExpToCasExe/expparse.cxx b/src/ExpToCasExe/expparse.cxx index 76507817fd..20d5abfca4 100644 --- a/src/ExpToCasExe/expparse.cxx +++ b/src/ExpToCasExe/expparse.cxx @@ -53,6 +53,11 @@ complex time or redefinition of inherited field are ignored. #include #include +#pragma warning(push) +#pragma warning(disable:4244) +#pragma warning(disable:4274) +#pragma warning(disable:4800) + /************************************************/ /* ERROR MESSAGE FUNCTION */ @@ -1314,3 +1319,4 @@ case 66: goto yystack; /* reset registers in driver code */ } +#pragma warning(pop) diff --git a/src/ExpToCasExe/expscan.cxx b/src/ExpToCasExe/expscan.cxx index 3bcb1b9cb1..6274344bf5 100644 --- a/src/ExpToCasExe/expscan.cxx +++ b/src/ExpToCasExe/expscan.cxx @@ -80,6 +80,11 @@ struct yysvf { struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; +#pragma warning(push) +#pragma warning (disable:4244) +#pragma warning (disable:4274) +#pragma warning (disable:4706) +#pragma warning (disable:4701) # line 4 "exptocas.l" /* File: exptocas.l */ @@ -2910,3 +2915,5 @@ yyunput(c) { unput(c); } + +#pragma warning(pop) diff --git a/src/ExpToCasExe/exptocas.html b/src/ExpToCasExe/exptocas.html deleted file mode 100644 index 8bc7b59cc4..0000000000 --- a/src/ExpToCasExe/exptocas.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - ExpToCas: Generator of STEP read/write classes from EXPRESS schema - - - -

ExpToCas: Generator of STEP read/write classes from EXPRESS schema

- -
-

Abstract

- -This document describes ExpToCas, a package defining several parsers of -EXPRESS schema aimed to analyse the schema and generate STEP read/write classes -for Open CASCADE Data Exchange (XSTEP). - -
-

Basic principles

- -EXPRESS schema is parsed by tools based on -lex -(scanner) and yacc -(parser). - -

- - -


-

Organisation

- -

-Physically ExpToCas is organised as two WOK units: - -

CDL package ExpToCas

- -Defines set of classes to represent structure of -EXPRESS file (more accurately to say, schema). It represents data contained -in EXPRESS schema as list of items (e.g. definition of ENTITY and SELECT -types). Each item has methods to generate relevant CDL/CXX classes for -CASCADE. - -

Executable ExpToCasExe

- -Provides executable (named ExpToCas) allowing to load EXPRESS file to memory -(to the structure of classes from ExpToCas package) and generate CDL/CXX classes -for user-defined list of entities. - - - diff --git a/src/ExpToCasExe/occt_step_entities.lst b/src/ExpToCasExe/occt_step_entities.lst new file mode 100644 index 0000000000..d7ddbbb505 --- /dev/null +++ b/src/ExpToCasExe/occt_step_entities.lst @@ -0,0 +1,780 @@ +# Last update 03.04.2020 +#=============================================== +# package StepAP203 +#=============================================== +ApprovedItem StepAP203 +CcDesignApproval StepAP203 +CcDesignCertification StepAP203 +CcDesignContract StepAP203 +CcDesignDateAndTimeAssignment StepAP203 +CcDesignPersonAndOrganizationAssignment StepAP203 +CcDesignSecurityClassification StepAP203 +CcDesignSpecificationReference StepAP203 +CertifiedItem StepAP203 +Change StepAP203 +ChangeRequest StepAP203 +ChangeRequestItem StepAP203 +ClassifiedItem StepAP203 +ContractedItem StepAP203 +DateTimeItem StepAP203 +PersonOrganizationItem StepAP203 +SpecifiedItem StepAP203 +StartRequest StepAP203 +StartRequestItem StepAP203 +StartWork StepAP203 +WorkItem StepAP203 + +#=============================================== +# package StepAP214 +#=============================================== +AppliedApprovalAssignment StepAP214 +AppliedDateAndTimeAssignment StepAP214 +AppliedDateAssignment StepAP214 +AppliedDocumentReference StepAP214 +AppliedExternalIdentificationAssignment StepAP214 +AppliedGroupAssignment StepAP214 +AppliedOrganizationAssignment StepAP214 +AppliedPersonAndOrganizationAssignment StepAP214 +AppliedPresentedItem StepAP214 +AppliedSecurityClassificationAssignment StepAP214 +ApprovalItem StepAP214 +AutoDesignActualDateAndTimeAssignment StepAP214 +AutoDesignActualDateAssignment StepAP214 +AutoDesignApprovalAssignment StepAP214 +AutoDesignDateAndPersonAssignment StepAP214 +AutoDesignDateAndPersonItem StepAP214 +AutoDesignDateAndTimeItem StepAP214 +AutoDesignDatedItem StepAP214 +AutoDesignDocumentReference StepAP214 +AutoDesignGeneralOrgItem StepAP214 +AutoDesignGroupAssignment StepAP214 +AutoDesignGroupedItem StepAP214 +AutoDesignNominalDateAndTimeAssignment StepAP214 +AutoDesignNominalDateAssignment StepAP214 +AutoDesignOrganizationAssignment StepAP214 +AutoDesignOrganizationItem StepAP214 +AutoDesignPersonAndOrganizationAssignment StepAP214 +AutoDesignPresentedItem StepAP214 +AutoDesignPresentedItemSelect StepAP214 +AutoDesignReferencingItem StepAP214 +AutoDesignSecurityClassificationAssignment StepAP214 +Class StepAP214 +DateAndTimeItem StepAP214 +DateItem StepAP214 +DocumentReferenceItem StepAP214 +ExternalIdentificationItem StepAP214 +ExternallyDefinedClass StepAP214 +ExternallyDefinedGeneralProperty StepAP214 +GroupItem StepAP214 +OrganizationItem StepAP214 +PersonAndOrganizationItem StepAP214 +PresentedItemSelect StepAP214 +Protocol StepAP214 +RepItemGroup StepAP214 +SecurityClassificationItem StepAP214 + +#=============================================== +# package StepAP242 +#=============================================== +DraughtingModelItemAssociation StepAP242 +GeometricItemSpecificUsage StepAP242 +IdAttribute StepAP242 +IdAttributeSelect StepAP242 +ItemIdentifiedRepresentationUsage StepAP242 +ItemIdentifiedRepresentationUsageDefinition StepAP242 + +#=============================================== +# package StepBasic +#=============================================== +Action StepBasic +ActionAssignment StepBasic +ActionMethod StepBasic +ActionRequestAssignment StepBasic +ActionRequestSolution StepBasic +Address StepBasic +ApplicationContext StepBasic +ApplicationContextElement StepBasic +ApplicationProtocolDefinition StepBasic +Approval StepBasic +ApprovalAssignment StepBasic +ApprovalDateTime StepBasic +ApprovalPersonOrganization StepBasic +ApprovalRelationship StepBasic +ApprovalRole StepBasic +ApprovalStatus StepBasic +AreaUnit StepBasic +CalendarDate StepBasic +Certification StepBasic +CertificationAssignment StepBasic +CertificationType StepBasic +CharacterizedObject StepBasic +Contract StepBasic +ContractAssignment StepBasic +ContractType StepBasic +ConversionBasedUnit StepBasic +ConversionBasedUnitAndAreaUnit StepBasic +ConversionBasedUnitAndLengthUnit StepBasic +ConversionBasedUnitAndMassUnit StepBasic +ConversionBasedUnitAndPlaneAngleUnit StepBasic +ConversionBasedUnitAndRatioUnit StepBasic +ConversionBasedUnitAndSolidAngleUnit StepBasic +ConversionBasedUnitAndTimeUnit StepBasic +ConversionBasedUnitAndVolumeUnit StepBasic +CoordinatedUniversalTimeOffset StepBasic +Date StepBasic +DateAndTime StepBasic +DateAndTimeAssignment StepBasic +DateAssignment StepBasic +DateRole StepBasic +DateTimeRole StepBasic +DateTimeSelect StepBasic +DerivedUnit StepBasic +DerivedUnitElement StepBasic +DesignContext StepBasic +DigitalDocument StepBasic +DimensionalExponents StepBasic +Document StepBasic +DocumentFile StepBasic +DocumentProductAssociation StepBasic +DocumentProductEquivalence StepBasic +DocumentReference StepBasic +DocumentRelationship StepBasic +DocumentRepresentationType StepBasic +DocumentType StepBasic +DocumentUsageConstraint StepBasic +Effectivity StepBasic +EffectivityAssignment StepBasic +EulerAngles StepBasic +ExternalIdentificationAssignment StepBasic +ExternallyDefinedItem StepBasic +ExternalSource StepBasic +GeneralProperty StepBasic +Group StepBasic +GroupAssignment StepBasic +GroupRelationship StepBasic +IdentificationAssignment StepBasic +IdentificationRole StepBasic +LengthMeasureWithUnit StepBasic +LengthUnit StepBasic +LocalTime StepBasic +MassMeasureWithUnit StepBasic +MassUnit StepBasic +MeasureValueMember StepBasic +MeasureWithUnit StepBasic +MechanicalContext StepBasic +NameAssignment StepBasic +NamedUnit StepBasic +ObjectRole StepBasic +OrdinalDate StepBasic +Organization StepBasic +OrganizationalAddress StepBasic +OrganizationAssignment StepBasic +OrganizationRole StepBasic +Person StepBasic +PersonalAddress StepBasic +PersonAndOrganization StepBasic +PersonAndOrganizationAssignment StepBasic +PersonAndOrganizationRole StepBasic +PersonOrganizationSelect StepBasic +PhysicallyModeledProductDefinition StepBasic +PlaneAngleMeasureWithUnit StepBasic +PlaneAngleUnit StepBasic +Product StepBasic +ProductCategory StepBasic +ProductCategoryRelationship StepBasic +ProductConceptContext StepBasic +ProductContext StepBasic +ProductDefinition StepBasic +ProductDefinitionContext StepBasic +ProductDefinitionEffectivity StepBasic +ProductDefinitionFormation StepBasic +ProductDefinitionFormationRelationship StepBasic +ProductDefinitionFormationWithSpecifiedSource StepBasic +ProductDefinitionOrReference StepBasic +ProductDefinitionReference StepBasic +ProductDefinitionReferenceWithLocalRepresentation StepBasic +ProductDefinitionRelationship StepBasic +ProductDefinitionWithAssociatedDocuments StepBasic +ProductOrFormationOrDefinition StepBasic +ProductRelatedProductCategory StepBasic +ProductType StepBasic +RatioMeasureWithUnit StepBasic +RatioUnit StepBasic +RoleAssociation StepBasic +RoleSelect StepBasic +SecurityClassification StepBasic +SecurityClassificationAssignment StepBasic +SecurityClassificationLevel StepBasic +SiUnit StepBasic +SiUnitAndAreaUnit StepBasic +SiUnitAndLengthUnit StepBasic +SiUnitAndMassUnit StepBasic +SiUnitAndPlaneAngleUnit StepBasic +SiUnitAndRatioUnit StepBasic +SiUnitAndSolidAngleUnit StepBasic +SiUnitAndThermodynamicTemperatureUnit StepBasic +SiUnitAndTimeUnit StepBasic +SiUnitAndVolumeUnit StepBasic +SizeMember StepBasic +SizeSelect StepBasic +SolidAngleMeasureWithUnit StepBasic +SolidAngleUnit StepBasic +SourceItem StepBasic +ThermodynamicTemperatureUnit StepBasic +TimeMeasureWithUnit StepBasic +TimeUnit StepBasic +UncertaintyMeasureWithUnit StepBasic +Unit StepBasic +VersionedActionRequest StepBasic +VolumeUnit StepBasic +WeekOfYearAndDayDate StepBasic + +#=============================================== +# package StepDimTol +#=============================================== +AngularityTolerance StepDimTol +CircularRunoutTolerance StepDimTol +CoaxialityTolerance StepDimTol +CommonDatum StepDimTol +ConcentricityTolerance StepDimTol +CylindricityTolerance StepDimTol +Datum StepDimTol +DatumFeature StepDimTol +DatumOrCommonDatum StepDimTol +DatumReference StepDimTol +DatumReferenceCompartment StepDimTol +DatumReferenceElement StepDimTol +DatumReferenceModifier StepDimTol +DatumReferenceModifierWithValue StepDimTol +DatumSystem StepDimTol +DatumSystemOrReference StepDimTol +DatumTarget StepDimTol +FlatnessTolerance StepDimTol +GeneralDatumReference StepDimTol +GeometricTolerance StepDimTol +GeometricToleranceRelationship StepDimTol +GeometricToleranceTarget StepDimTol +GeometricToleranceWithDatumReference StepDimTol +GeometricToleranceWithDefinedAreaUnit StepDimTol +GeometricToleranceWithDefinedUnit StepDimTol +GeometricToleranceWithMaximumTolerance StepDimTol +GeometricToleranceWithModifiers StepDimTol +GeoTolAndGeoTolWthDatRef StepDimTol +GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol StepDimTol +GeoTolAndGeoTolWthDatRefAndGeoTolWthMod StepDimTol +GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol StepDimTol +GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol StepDimTol +GeoTolAndGeoTolWthMaxTol StepDimTol +GeoTolAndGeoTolWthMod StepDimTol +LineProfileTolerance StepDimTol +ModifiedGeometricTolerance StepDimTol +NonUniformZoneDefinition StepDimTol +ParallelismTolerance StepDimTol +PerpendicularityTolerance StepDimTol +PlacedDatumTargetFeature StepDimTol +PositionTolerance StepDimTol +ProjectedZoneDefinition StepDimTol +RoundnessTolerance StepDimTol +RunoutZoneDefinition StepDimTol +RunoutZoneOrientation StepDimTol +ShapeToleranceSelect StepDimTol +SimpleDatumReferenceModifierMember StepDimTol +StraightnessTolerance StepDimTol +SurfaceProfileTolerance StepDimTol +SymmetryTolerance StepDimTol +ToleranceZone StepDimTol +ToleranceZoneDefinition StepDimTol +ToleranceZoneForm StepDimTol +ToleranceZoneTarget StepDimTol +TotalRunoutTolerance StepDimTol +UnequallyDisposedGeometricTolerance StepDimTol + +#=============================================== +# package StepElement +#=============================================== +AnalysisItemWithinRepresentation StepElement +Curve3dElementDescriptor StepElement +CurveElementEndReleasePacket StepElement +CurveElementFreedom StepElement +CurveElementFreedomMember StepElement +CurveElementPurpose StepElement +CurveElementPurposeMember StepElement +CurveElementSectionDefinition StepElement +CurveElementSectionDerivedDefinitions StepElement +ElementAspect StepElement +ElementAspectMember StepElement +ElementDescriptor StepElement +ElementMaterial StepElement +MeasureOrUnspecifiedValue StepElement +MeasureOrUnspecifiedValueMember StepElement +Surface3dElementDescriptor StepElement +SurfaceElementProperty StepElement +SurfaceElementPurpose StepElement +SurfaceElementPurposeMember StepElement +SurfaceSection StepElement +SurfaceSectionField StepElement +SurfaceSectionFieldConstant StepElement +SurfaceSectionFieldVarying StepElement +UniformSurfaceSection StepElement +Volume3dElementDescriptor StepElement +VolumeElementPurpose StepElement +VolumeElementPurposeMember StepElement + +#=============================================== +# package StepFEA +#=============================================== +AlignedCurve3dElementCoordinateSystem StepFEA +AlignedSurface3dElementCoordinateSystem StepFEA +ArbitraryVolume3dElementCoordinateSystem StepFEA +ConstantSurface3dElementCoordinateSystem StepFEA +Curve3dElementProperty StepFEA +Curve3dElementRepresentation StepFEA +CurveElementEndCoordinateSystem StepFEA +CurveElementEndOffset StepFEA +CurveElementEndRelease StepFEA +CurveElementInterval StepFEA +CurveElementIntervalConstant StepFEA +CurveElementIntervalLinearlyVarying StepFEA +CurveElementLocation StepFEA +DegreeOfFreedom StepFEA +DegreeOfFreedomMember StepFEA +DummyNode StepFEA +ElementGeometricRelationship StepFEA +ElementGroup StepFEA +ElementOrElementGroup StepFEA +ElementRepresentation StepFEA +FeaAreaDensity StepFEA +FeaAxis2Placement3d StepFEA +FeaCurveSectionGeometricRelationship StepFEA +FeaGroup StepFEA +FeaLinearElasticity StepFEA +FeaMassDensity StepFEA +FeaMaterialPropertyRepresentation StepFEA +FeaMaterialPropertyRepresentationItem StepFEA +FeaModel StepFEA +FeaModel3d StepFEA +FeaModelDefinition StepFEA +FeaMoistureAbsorption StepFEA +FeaParametricPoint StepFEA +FeaRepresentationItem StepFEA +FeaSecantCoefficientOfLinearThermalExpansion StepFEA +FeaShellBendingStiffness StepFEA +FeaShellMembraneBendingCouplingStiffness StepFEA +FeaShellMembraneStiffness StepFEA +FeaShellShearStiffness StepFEA +FeaSurfaceSectionGeometricRelationship StepFEA +FeaTangentialCoefficientOfLinearThermalExpansion StepFEA +FreedomAndCoefficient StepFEA +FreedomsList StepFEA +GeometricNode StepFEA +Node StepFEA +NodeDefinition StepFEA +NodeGroup StepFEA +NodeRepresentation StepFEA +NodeSet StepFEA +NodeWithSolutionCoordinateSystem StepFEA +NodeWithVector StepFEA +ParametricCurve3dElementCoordinateDirection StepFEA +ParametricCurve3dElementCoordinateSystem StepFEA +ParametricSurface3dElementCoordinateSystem StepFEA +Surface3dElementRepresentation StepFEA +SymmetricTensor22d StepFEA +SymmetricTensor23d StepFEA +SymmetricTensor23dMember StepFEA +SymmetricTensor42d StepFEA +SymmetricTensor43d StepFEA +SymmetricTensor43dMember StepFEA +Volume3dElementRepresentation StepFEA + +#=============================================== +# package StepGeom +#=============================================== +Axis1Placement StepGeom +Axis2Placement StepGeom +Axis2Placement2d StepGeom +Axis2Placement3d StepGeom +BezierCurve StepGeom +BezierCurveAndRationalBSplineCurve StepGeom +BezierSurface StepGeom +BezierSurfaceAndRationalBSplineSurface StepGeom +BoundaryCurve StepGeom +BoundedCurve StepGeom +BoundedSurface StepGeom +BSplineCurve StepGeom +BSplineCurveWithKnots StepGeom +BSplineCurveWithKnotsAndRationalBSplineCurve StepGeom +BSplineSurface StepGeom +BSplineSurfaceWithKnots StepGeom +BSplineSurfaceWithKnotsAndRationalBSplineSurface StepGeom +CartesianPoint StepGeom +CartesianTransformationOperator StepGeom +CartesianTransformationOperator2d StepGeom +CartesianTransformationOperator3d StepGeom +Circle StepGeom +CompositeCurve StepGeom +CompositeCurveOnSurface StepGeom +CompositeCurveSegment StepGeom +Conic StepGeom +ConicalSurface StepGeom +Curve StepGeom +CurveBoundedSurface StepGeom +CurveOnSurface StepGeom +CurveReplica StepGeom +CylindricalSurface StepGeom +DegeneratePcurve StepGeom +DegenerateToroidalSurface StepGeom +Direction StepGeom +ElementarySurface StepGeom +Ellipse StepGeom +EvaluatedDegeneratePcurve StepGeom +GeometricRepresentationContext StepGeom +GeometricRepresentationContextAndGlobalUnitAssignedContext StepGeom +GeometricRepresentationContextAndParametricRepresentationContext StepGeom +GeometricRepresentationItem StepGeom +GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx StepGeom +Hyperbola StepGeom +IntersectionCurve StepGeom +Line StepGeom +OffsetCurve3d StepGeom +OffsetSurface StepGeom +OrientedSurface StepGeom +OuterBoundaryCurve StepGeom +Parabola StepGeom +Pcurve StepGeom +PcurveOrSurface StepGeom +Placement StepGeom +Plane StepGeom +Point StepGeom +PointOnCurve StepGeom +PointOnSurface StepGeom +PointReplica StepGeom +Polyline StepGeom +QuasiUniformCurve StepGeom +QuasiUniformCurveAndRationalBSplineCurve StepGeom +QuasiUniformSurface StepGeom +QuasiUniformSurfaceAndRationalBSplineSurface StepGeom +RationalBSplineCurve StepGeom +RationalBSplineSurface StepGeom +RectangularCompositeSurface StepGeom +RectangularTrimmedSurface StepGeom +ReparametrisedCompositeCurveSegment StepGeom +SeamCurve StepGeom +SphericalSurface StepGeom +Surface StepGeom +SurfaceBoundary StepGeom +SurfaceCurveAndBoundedCurve StepGeom +SurfaceOfLinearExtrusion StepGeom +SurfaceOfRevolution StepGeom +SurfacePatch StepGeom +SurfaceReplica StepGeom +SweptSurface StepGeom +ToroidalSurface StepGeom +TrimmedCurve StepGeom +TrimmingMember StepGeom +TrimmingSelect StepGeom +UniformCurve StepGeom +UniformCurveAndRationalBSplineCurve StepGeom +UniformSurface StepGeom +UniformSurfaceAndRationalBSplineSurface StepGeom +Vector StepGeom +VectorOrDirection StepGeom + +#=============================================== +# package StepRepr +#=============================================== +AllAroundShapeAspect StepRepr +Apex StepRepr +AssemblyComponentUsage StepRepr +AssemblyComponentUsageSubstitute StepRepr +BetweenShapeAspect StepRepr +CentreOfSymmetry StepRepr +CharacterizedDefinition StepRepr +CharacterizedRepresentation StepRepr +CompGroupShAspAndCompShAspAndDatumFeatAndShAsp StepRepr +CompositeGroupShapeAspect StepRepr +CompositeShapeAspect StepRepr +CompoundRepresentationItem StepRepr +CompShAspAndDatumFeatAndShAsp StepRepr +ConfigurationDesign StepRepr +ConfigurationDesignItem StepRepr +ConfigurationEffectivity StepRepr +ConfigurationItem StepRepr +ConstructiveGeometryRepresentation StepRepr +ConstructiveGeometryRepresentationRelationship StepRepr +ContinuosShapeAspect StepRepr +DataEnvironment StepRepr +DefinitionalRepresentation StepRepr +DerivedShapeAspect StepRepr +DescriptiveRepresentationItem StepRepr +Extension StepRepr +ExternallyDefinedRepresentation StepRepr +FeatureForDatumTargetRelationship StepRepr +FunctionallyDefinedTransformation StepRepr +GeometricAlignment StepRepr +GlobalUncertaintyAssignedContext StepRepr +GlobalUnitAssignedContext StepRepr +IntegerRepresentationItem StepRepr +ItemDefinedTransformation StepRepr +MakeFromUsageOption StepRepr +MappedItem StepRepr +MaterialDesignation StepRepr +MaterialProperty StepRepr +MaterialPropertyRepresentation StepRepr +MeasureRepresentationItem StepRepr +NextAssemblyUsageOccurrence StepRepr +ParallelOffset StepRepr +ParametricRepresentationContext StepRepr +PerpendicularTo StepRepr +ProductConcept StepRepr +ProductDefinitionShape StepRepr +ProductDefinitionUsage StepRepr +PromissoryUsageOccurrence StepRepr +PropertyDefinition StepRepr +PropertyDefinitionRelationship StepRepr +PropertyDefinitionRepresentation StepRepr +QuantifiedAssemblyComponentUsage StepRepr +Representation StepRepr +RepresentationContext StepRepr +RepresentationItem StepRepr +RepresentationMap StepRepr +RepresentationRelationship StepRepr +RepresentationRelationshipWithTransformation StepRepr +RepresentedDefinition StepRepr +ReprItemAndLengthMeasureWithUnit StepRepr +ReprItemAndLengthMeasureWithUnitAndQRI StepRepr +ReprItemAndMeasureWithUnit StepRepr +ReprItemAndMeasureWithUnitAndQRI StepRepr +ReprItemAndPlaneAngleMeasureWithUnit StepRepr +ReprItemAndPlaneAngleMeasureWithUnitAndQRI StepRepr +ShapeAspect StepRepr +ShapeAspectDerivingRelationship StepRepr +ShapeAspectRelationship StepRepr +ShapeAspectTransition StepRepr +ShapeDefinition StepRepr +ShapeRepresentationRelationship StepRepr +ShapeRepresentationRelationshipWithTransformation StepRepr +SpecifiedHigherUsageOccurrence StepRepr +StructuralResponseProperty StepRepr +StructuralResponsePropertyDefinitionRepresentation StepRepr +SuppliedPartRelationship StepRepr +Tangent StepRepr +Transformation StepRepr +ValueRange StepRepr +ValueRepresentationItem StepRepr + +#=============================================== +# package StepShape +#=============================================== +AdvancedBrepShapeRepresentation StepShape +AdvancedFace StepShape +AngularLocation StepShape +AngularSize StepShape +Block StepShape +BooleanOperand StepShape +BooleanResult StepShape +BoxDomain StepShape +BoxedHalfSpace StepShape +BrepWithVoids StepShape +ClosedShell StepShape +CompoundShapeRepresentation StepShape +ConnectedEdgeSet StepShape +ConnectedFaceSet StepShape +ConnectedFaceShapeRepresentation StepShape +ConnectedFaceSubSet StepShape +ContextDependentShapeRepresentation StepShape +CsgPrimitive StepShape +CsgSelect StepShape +CsgShapeRepresentation StepShape +CsgSolid StepShape +DefinitionalRepresentationAndShapeRepresentation StepShape +DimensionalCharacteristic StepShape +DimensionalCharacteristicRepresentation StepShape +DimensionalLocation StepShape +DimensionalLocationWithPath StepShape +DimensionalSize StepShape +DimensionalSizeWithPath StepShape +DirectedDimensionalLocation StepShape +Edge StepShape +EdgeBasedWireframeModel StepShape +EdgeBasedWireframeShapeRepresentation StepShape +EdgeCurve StepShape +EdgeLoop StepShape +ExtrudedAreaSolid StepShape +ExtrudedFaceSolid StepShape +Face StepShape +FaceBasedSurfaceModel StepShape +FaceBound StepShape +FaceOuterBound StepShape +FaceSurface StepShape +FacetedBrep StepShape +FacetedBrepAndBrepWithVoids StepShape +FacetedBrepShapeRepresentation StepShape +GeometricallyBoundedSurfaceShapeRepresentation StepShape +GeometricallyBoundedWireframeShapeRepresentation StepShape +GeometricCurveSet StepShape +GeometricSet StepShape +GeometricSetSelect StepShape +HalfSpaceSolid StepShape +LimitsAndFits StepShape +Loop StepShape +LoopAndPath StepShape +ManifoldSolidBrep StepShape +ManifoldSurfaceShapeRepresentation StepShape +MeasureQualification StepShape +MeasureRepresentationItemAndQualifiedRepresentationItem StepShape +NonManifoldSurfaceShapeRepresentation StepShape +OpenShell StepShape +OrientedClosedShell StepShape +OrientedEdge StepShape +OrientedFace StepShape +OrientedOpenShell StepShape +OrientedPath StepShape +Path StepShape +PlusMinusTolerance StepShape +PointRepresentation StepShape +PolyLoop StepShape +PrecisionQualifier StepShape +QualifiedRepresentationItem StepShape +ReversibleTopologyItem StepShape +RevolvedAreaSolid StepShape +RevolvedFaceSolid StepShape +RightAngularWedge StepShape +RightCircularCone StepShape +RightCircularCylinder StepShape +SeamEdge StepShape +ShapeDefinitionRepresentation StepShape +ShapeDimensionRepresentation StepShape +ShapeDimensionRepresentationItem StepShape +ShapeRepresentation StepShape +ShapeRepresentationWithParameters StepShape +Shell StepShape +ShellBasedSurfaceModel StepShape +SolidModel StepShape +SolidReplica StepShape +Sphere StepShape +Subedge StepShape +Subface StepShape +SurfaceModel StepShape +SweptAreaSolid StepShape +SweptFaceSolid StepShape +ToleranceMethodDefinition StepShape +ToleranceValue StepShape +TopologicalRepresentationItem StepShape +Torus StepShape +TransitionalShapeRepresentation StepShape +TypeQualifier StepShape +ValueFormatTypeQualifier StepShape +ValueQualifier StepShape +Vertex StepShape +VertexLoop StepShape +VertexPoint StepShape + +#=============================================== +# package StepVisual +#=============================================== +AnnotationCurveOccurrence StepVisual +AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem StepVisual +AnnotationFillArea StepVisual +AnnotationFillAreaOccurrence StepVisual +AnnotationOccurrence StepVisual +AnnotationPlane StepVisual +AnnotationPlaneElement StepVisual +AnnotationText StepVisual +AnnotationTextOccurrence StepVisual +AreaInSet StepVisual +AreaOrView StepVisual +BackgroundColour StepVisual +BoxCharacteristicSelect StepVisual +CameraImage StepVisual +CameraImage2dWithScale StepVisual +CameraImage3dWithScale StepVisual +CameraModel StepVisual +CameraModelD2 StepVisual +CameraModelD3 StepVisual +CameraModelD3MultiClipping StepVisual +CameraModelD3MultiClippingInterectionSelect StepVisual +CameraModelD3MultiClippingIntersection StepVisual +CameraModelD3MultiClippingUnion StepVisual +CameraModelD3MultiClippingUnionSelect StepVisual +CameraUsage StepVisual +CharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation StepVisual +Colour StepVisual +ColourRgb StepVisual +ColourSpecification StepVisual +CompositeText StepVisual +CompositeTextWithExtent StepVisual +ContextDependentInvisibility StepVisual +ContextDependentOverRidingStyledItem StepVisual +CurveStyle StepVisual +CurveStyleFont StepVisual +CurveStyleFontPattern StepVisual +CurveStyleFontSelect StepVisual +DirectionCountSelect StepVisual +DraughtingAnnotationOccurrence StepVisual +DraughtingCallout StepVisual +DraughtingCalloutElement StepVisual +DraughtingModel StepVisual +DraughtingPreDefinedColour StepVisual +DraughtingPreDefinedCurveFont StepVisual +ExternallyDefinedCurveFont StepVisual +ExternallyDefinedTextFont StepVisual +FillAreaStyle StepVisual +FillAreaStyleColour StepVisual +FillStyleSelect StepVisual +FontSelect StepVisual +Invisibility StepVisual +InvisibilityContext StepVisual +InvisibleItem StepVisual +LayeredItem StepVisual +MarkerMember StepVisual +MarkerSelect StepVisual +MechanicalDesignGeometricPresentationArea StepVisual +MechanicalDesignGeometricPresentationRepresentation StepVisual +NullStyleMember StepVisual +OverRidingStyledItem StepVisual +PlanarBox StepVisual +PlanarExtent StepVisual +PointStyle StepVisual +PreDefinedColour StepVisual +PreDefinedCurveFont StepVisual +PreDefinedItem StepVisual +PreDefinedTextFont StepVisual +PresentationArea StepVisual +PresentationLayerAssignment StepVisual +PresentationLayerUsage StepVisual +PresentationRepresentation StepVisual +PresentationRepresentationSelect StepVisual +PresentationSet StepVisual +PresentationSize StepVisual +PresentationSizeAssignmentSelect StepVisual +PresentationStyleAssignment StepVisual +PresentationStyleByContext StepVisual +PresentationStyleSelect StepVisual +PresentationView StepVisual +PresentedItem StepVisual +PresentedItemRepresentation StepVisual +StyleContextSelect StepVisual +StyledItem StepVisual +StyledItemTarget StepVisual +SurfaceSideStyle StepVisual +SurfaceStyleBoundary StepVisual +SurfaceStyleControlGrid StepVisual +SurfaceStyleElementSelect StepVisual +SurfaceStyleFillArea StepVisual +SurfaceStyleParameterLine StepVisual +SurfaceStyleSegmentationCurve StepVisual +SurfaceStyleSilhouette StepVisual +SurfaceStyleUsage StepVisual +Template StepVisual +TemplateInstance StepVisual +TextLiteral StepVisual +TextOrCharacter StepVisual +TextStyle StepVisual +TextStyleForDefinedFont StepVisual +TextStyleWithBoxCharacteristics StepVisual +ViewVolume StepVisual +TessellatedAnnotationOccurrence StepVisual +TessellatedItem StepVisual +TessellatedGeometricSet StepVisual +TessellatedCurveSet StepVisual +CoordinatesList StepVisual diff --git a/src/ExpToCasExe/readme.txt b/src/ExpToCasExe/readme.txt new file mode 100644 index 0000000000..10ed624048 --- /dev/null +++ b/src/ExpToCasExe/readme.txt @@ -0,0 +1,15 @@ +This is an auxiliary tool to generate code for implementation of new STEP entities into OCCT. + +Example how to run ExpToCas tool: +ExpToCasExe.exe schemaAP000.exp to_add.lst occt_step_entities.lst N + +where +* schemaAP000.exp - STEP schema, some lines in can be not parsed, just delete them. +ap242.exp - cleaned schema for AP242 edition 2. +* to_add.lst - list of necessary entities, each line should be like this "ShapeAspect StepRepr". +* occt_step_entities.lst - list of already implemented entities, please update the file after each generation. +* N - a first index for entity registration (files StepAP214_Protocol.cxx, RWStepAP214_GeneralModule.cxx,RWStepAP214_ReadWriteModule.cxx) + +The result of generation consists of several folders: +* two folders for each package for which new entities was generated. +* a folder Registration with *.txt files with code to copy into common files (see description of last parameter). \ No newline at end of file diff --git a/src/Express/Express.cxx b/src/Express/Express.cxx index eff38a2a85..6ac1793577 100644 --- a/src/Express/Express.cxx +++ b/src/Express/Express.cxx @@ -37,17 +37,12 @@ Handle(Express_Schema) &Express::Schema () //purpose : //======================================================================= -// Write header of CDL or CXX file -void Express::WriteFileStamp (Standard_OStream &os, - const Handle(TCollection_HAsciiString) &name, - const Standard_Boolean isCDL) +// Write header of HXX or CXX file +void Express::WriteFileStamp (Standard_OStream &os) { static const char *EC_VERSION = "2.0"; - Standard_CString comm = ( isCDL ? "--" : "//" ); - os << comm << " File: " << name->ToCString(); - os << (isCDL ? ".cdl" : ".cxx" ) << std::endl; - + Standard_CString comm = "//"; TCollection_AsciiString timestring; if ( getenv ( "EXPTOCAS_TIME" ) ) timestring = getenv ( "EXPTOCAS_TIME" ); else { @@ -56,15 +51,23 @@ void Express::WriteFileStamp (Standard_OStream &os, timestring = ctime ( &curtime ); timestring.ChangeAll ( '\n', ' ' ); } - os << comm << " Created: " << timestring << std::endl; - + os << comm << " Created on : " << timestring << std::endl; + OSD_Process aProcess; - os << comm << " Author: " << aProcess.UserName().ToCString() << std::endl; - + os << comm << " Created by: " << aProcess.UserName().ToCString() << std::endl; os << comm << " Generator: Express (EXPRESS -> CASCADE/XSTEP Translator) V" << EC_VERSION << std::endl; -// if ( ! Express::Schema().IsNull() ) -// os << comm << " Schema used: " << Express::Schema()->Name()->ToCString() << std::endl; - os << comm << " Copyright: Open CASCADE 2020" << std::endl; + os << comm << " Copyright (c) Open CASCADE 2020" << std::endl; + os << comm << std::endl; + os << comm << " This file is part of Open CASCADE Technology software library." << std::endl; + os << comm << std::endl; + os << comm << " This library is free software; you can redistribute it and/or modify it under" << std::endl; + os << comm << " the terms of the GNU Lesser General Public License version 2.1 as published" << std::endl; + os << comm << " by the Free Software Foundation, with special exception defined in the file" << std::endl; + os << comm << " OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT" << std::endl; + os << comm << " distribution for complete text of the license and disclaimer of any warranty." << std::endl; + os << comm << std::endl; + os << comm << " Alternatively, this file may be used under the terms of Open CASCADE" << std::endl; + os << comm << " commercial license or contractual agreement." << std::endl; os << std::endl; } diff --git a/src/Express/Express.hxx b/src/Express/Express.hxx index 8016b6f7f9..544b01d62f 100644 --- a/src/Express/Express.hxx +++ b/src/Express/Express.hxx @@ -24,7 +24,7 @@ class TCollection_HAsciiString; //! Provides data structures for representation of EXPRESS schema //! (items, types, entities etc.) -//! and tools for generating XSTEP classes (CDL and CXX) from +//! and tools for generating XSTEP classes (HXX and CXX) from //! items of the schema class Express { @@ -37,8 +37,7 @@ public: Standard_EXPORT static Handle(Express_Schema)& Schema() ; //! Writes standard copyright stamp (creation date/time, user, etc.) - //! in CDL (if isCDL) or CXX (if ! isCDL) style to the output stream. - Standard_EXPORT static void WriteFileStamp (Standard_OStream& os, const Handle(TCollection_HAsciiString)& name, const Standard_Boolean isCDL) ; + Standard_EXPORT static void WriteFileStamp (Standard_OStream& os) ; //! Writes standard comment for method in CXX file Standard_EXPORT static void WriteMethodStamp (Standard_OStream& os, const Handle(TCollection_HAsciiString)& name) ; diff --git a/src/Express/Express_Alias.cxx b/src/Express/Express_Alias.cxx index d5cb35f870..b270fe4706 100644 --- a/src/Express/Express_Alias.cxx +++ b/src/Express/Express_Alias.cxx @@ -49,16 +49,6 @@ Handle(TCollection_HAsciiString) Express_Alias::CPPName () const return myType->CPPName(); } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Alias::CDLName () const -{ - return myType->CDLName(); -} - //======================================================================= //function : GenerateClass //purpose : @@ -67,6 +57,6 @@ Handle(TCollection_HAsciiString) Express_Alias::CDLName () const Standard_Boolean Express_Alias::GenerateClass () const { // std::cout << "Warning: writing ALIAS is not yet implemented, cannot generate " << Name()->ToCString() << std::endl; - std::cout << "ALIAS " << Name()->ToCString() << " = " << Type()->CDLName()->ToCString() << " used; no generation is needed" << std::endl; + std::cout << "ALIAS " << Name()->ToCString() << " = " << Type()->CPPName()->ToCString() << " used; no generation is needed" << std::endl; return Standard_False; } diff --git a/src/Express/Express_Alias.hxx b/src/Express/Express_Alias.hxx index 7b2be42ff0..5ee19a76a7 100644 --- a/src/Express/Express_Alias.hxx +++ b/src/Express/Express_Alias.hxx @@ -38,10 +38,7 @@ public: //! Returns name of aliased type Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns name of aliased type - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - - //! Create CDL/CXX files from item + //! Create HXX/CXX files from item Standard_EXPORT virtual Standard_Boolean GenerateClass() const; diff --git a/src/Express/Express_Boolean.cxx b/src/Express/Express_Boolean.cxx index 27360fa60c..efa8f90680 100644 --- a/src/Express/Express_Boolean.cxx +++ b/src/Express/Express_Boolean.cxx @@ -36,13 +36,3 @@ Handle(TCollection_HAsciiString) Express_Boolean::CPPName () const { return new TCollection_HAsciiString ( "Standard_Boolean" ); } - -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Boolean::CDLName () const -{ - return new TCollection_HAsciiString ( "Boolean" ); -} diff --git a/src/Express/Express_Boolean.hxx b/src/Express/Express_Boolean.hxx index 8737feb8a8..b2961a7f16 100644 --- a/src/Express/Express_Boolean.hxx +++ b/src/Express/Express_Boolean.hxx @@ -33,9 +33,6 @@ public: //! Returns "Standard_Boolean" Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns "Boolean" - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - diff --git a/src/Express/Express_ComplexType.cxx b/src/Express/Express_ComplexType.cxx index 6763ec8473..b5fc6b0eab 100644 --- a/src/Express/Express_ComplexType.cxx +++ b/src/Express/Express_ComplexType.cxx @@ -77,41 +77,6 @@ Handle(TCollection_HAsciiString) Express_ComplexType::CPPName () const return name; } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_ComplexType::CDLName () const -{ - // check if array 2 - Handle(TCollection_HAsciiString) name; - Handle(Express_Type) type = myType; - if ( type->IsKind ( STANDARD_TYPE(Express_ComplexType) ) ) { - Handle(Express_ComplexType) c2 = Handle(Express_ComplexType)::DownCast ( type ); - type = c2->Type(); - name = new TCollection_HAsciiString ( "HArray2Of" ); - } - else - name = new TCollection_HAsciiString ( "HArray1Of" ); - - // generate name - name->AssignCat ( type->CDLName() ); - Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString("TCollection"); - Standard_Integer ind =name->Location(str,1,name->Length()); - if(ind) { - Handle(TCollection_HAsciiString) tmp = name->Split(ind-1); - name->AssignCat("Interface"); - } - if ( type->IsStandard() ) - name->AssignCat ( " from TColStd" ); - - - - return name; -} - - //======================================================================= //function : Use //purpose : diff --git a/src/Express/Express_ComplexType.hxx b/src/Express/Express_ComplexType.hxx index 40ac870524..9f2aeb046d 100644 --- a/src/Express/Express_ComplexType.hxx +++ b/src/Express/Express_ComplexType.hxx @@ -39,9 +39,6 @@ public: //! Returns CPP-style name of the type Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns CDL-style name of the type - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - //! Declares type as used by some item being generated. //! Calls Use() for type of elements Standard_EXPORT virtual Standard_Boolean Use (const Handle(TCollection_HAsciiString)& pack, const Standard_Boolean defer = Standard_False) const; diff --git a/src/Express/Express_Entity.cxx b/src/Express/Express_Entity.cxx index 59f2b3b5d3..39075cf847 100644 --- a/src/Express/Express_Entity.cxx +++ b/src/Express/Express_Entity.cxx @@ -117,7 +117,7 @@ static void WriteGetMethod (Standard_OStream &os, Express::WriteMethodStamp ( os, method ); os << ( isHandle ? "Handle(" : "" ) << type->ToCString() << ( isHandle ? ") " : " " ) << name->ToCString() << "::" << method->ToCString() << " () const" << std::endl; - os << "{" << std::endl << " return the" << field->ToCString() << ";\n}" << std::endl; + os << "{" << std::endl << " return my" << field->ToCString() << ";\n}" << std::endl; } //======================================================================= @@ -137,8 +137,8 @@ static void WriteSetMethod (Standard_OStream &os, Express::WriteMethodStamp ( os, method ); os << "void " << name->ToCString() << "::" << method->ToCString() << " (const " << ( isHandle ? "Handle(" : "" ) << type->ToCString() << ( isHandle ? ")" : "" ) << - " " << ( isSimple ? "" : "&" ) << "a" << field->ToCString() << ")" << std::endl; - os << "{" << std::endl << " the" << field->ToCString() << " = a" << field->ToCString() << ";\n}" << std::endl; + ( isSimple ? "" : "&" ) << " the" << field->ToCString() << ")" << std::endl; + os << "{" << std::endl << " my" << field->ToCString() << " = the" << field->ToCString() << ";\n}" << std::endl; } //======================================================================= @@ -159,11 +159,10 @@ static inline void WriteSpaces (Standard_OStream &os, Standard_Integer num) Standard_Boolean Express_Entity::GenerateClass () const { Handle(TCollection_HAsciiString) CPPname = CPPName(); - Handle(TCollection_HAsciiString) CDLname = CDLName(); std::cout << "Generating ENTITY " << CPPname->ToCString() << std::endl; // create a package directory (if not yet exist) - OSD_Protection prot ( OSD_RX, OSD_RWX, OSD_RX, OSD_RX ); + OSD_Protection prot(OSD_RWXD, OSD_RWXD, OSD_RWXD, OSD_RWXD); TCollection_AsciiString pack = GetPackageName()->String(); OSD_Path path ( pack ); OSD_Directory dir ( path ); @@ -172,47 +171,58 @@ Standard_Boolean Express_Entity::GenerateClass () const pack += CPPname->String(); //=============================== - // Step 1: generating CDL + // Step 1: generating HXX - // Open CDL file - std::ofstream os ( pack.Cat ( ".cdl" ).ToCString() ); + // Open HXX file + std::ofstream os ( pack.Cat ( ".hxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_True ); + Express::WriteFileStamp ( os ); - // write start of declaration (inheritance) - os << "class " << CDLname->ToCString() << std::endl << "inherits "; - if ( myInherit->Length() >0 ) { // first inherited class will be actually inherited + Handle(TCollection_HAsciiString) InheritName = new TCollection_HAsciiString("Standard_Transient"); + if (myInherit->Length() > 0) { // first inherited class will be actually inherited Handle(Express_Entity) it = myInherit->Value(1); - it->Use ( GetPackageName() ); - os << it->CDLName()->ToCString(); - if ( myInherit->Length() >1 ) { + it->Use(GetPackageName()); + InheritName = it->CPPName(); + if (myInherit->Length() > 1) { std::cout << "Warning: ENTITY " << Name()->ToCString() << " defined with multiple inheritance;" << std::endl; std::cout << "Warning: only first base class is actually inherited, others are made fields" << std::endl; } } - else os << "TShared from MMgt"; - os << std::endl << std::endl; - - os << " ---Purpose: Representation of STEP entity " << Name()->ToCString() << std::endl; + + os << "#ifndef _" << CPPname->ToCString() << "_HeaderFile_" << std::endl; + os << "#define _" << CPPname->ToCString() << "_HeaderFile_" << std::endl; + os << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include <" << InheritName->ToCString() << ".hxx>" << std::endl; os << std::endl; - // write "uses" section (also creates all used types) + // write includes section (also creates all used types) DataMapOfStringInteger dict; - if ( ! WriteUses ( os, Standard_True, dict ) ) os << std::endl << std::endl; - - // start 'is' section - os << "is" << std::endl; - os << " Create returns " << CDLname->ToCString() << ";" << std::endl; - os << " ---Purpose: Empty constructor" << std::endl; + WriteIncludes(os, dict); + os << std::endl; + + os << "DEFINE_STANDARD_HANDLE(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl; + os << std::endl; + + // write start of declaration (inheritance) + os << "//! Representation of STEP entity " << Name()->ToCString() << std::endl; + os << "class " << CPPname->ToCString() << " : public " << InheritName->ToCString(); + os << std::endl << "{" << std::endl; + os << "public :" << std::endl << std::endl; + + // write constructor + os << " //! default constructor" << std::endl; + os << " Standard_EXPORT " << CPPname->ToCString() << "();" << std::endl; os << std::endl; // write Init methods - if ( myInherit->Length() >1 || myFields->Length() >0 ) { - os << " Init (me: mutable; "; - MakeInit ( os, 23, Standard_True, 0 ); + if ( myInherit->Length() > 1 || myFields->Length() > 0 ) { + os << " //! Initialize all fields (own and inherited)" << std::endl; + os << " Standard_EXPORT void Init("; + MakeInit ( os, 27, Standard_True, 0 ); os << ");" << std::endl; - os << " ---Purpose: Initialize all fields (own and inherited)" << std::endl; os << std::endl; } @@ -220,58 +230,70 @@ Standard_Boolean Express_Entity::GenerateClass () const for ( Standard_Integer i=2; i <= myInherit->Length(); i++ ) { Handle(Express_Entity) it = myInherit->Value(i); Handle(TCollection_HAsciiString) name = it->Name(); - Handle(TCollection_HAsciiString) str = it->CDLName(); - os << " " << name->ToCString() << " (me) returns " << str->ToCString() << ";" << std::endl; - os << " ---Purpose: Returns data for supertype " << name->ToCString() << std::endl; - os << " Set" << name->ToCString() << " (me: mutable; " << name->ToCString() << ": " << str->ToCString() << ");" << std::endl; - os << " ---Purpose: Set data for supertype " << name->ToCString() << std::endl; + os << " //! Returns data for supertype " << name->ToCString() << std::endl; + os << " Standard_EXPORT Handle(" << it->CPPName()->ToCString() + << ") " << name->ToCString() << "() const;" << std::endl; + os << " //! Sets data for supertype " << name->ToCString() << std::endl; + os << " Standard_EXPORT void Set" << name->ToCString() + << " (const Handle(" << it->CPPName()->ToCString() << ")& the"<< name->ToCString() << ");" << std::endl; os << std::endl; } - for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { - Handle(Express_Field) field = myFields->Value ( i ); - Handle(TCollection_HAsciiString) str = field->Type()->CDLName(); - os << " " << field->Name()->ToCString() << " (me) returns " << str->ToCString() << ";" << std::endl; - os << " ---Purpose: Returns field " << field->Name()->ToCString() << std::endl; - os << " Set" << field->Name()->ToCString() << " (me: mutable; " << - field->Name()->ToCString() << ": " << str->ToCString() << ");" << std::endl; - os << " ---Purpose: Set field " << field->Name()->ToCString() << std::endl; - if ( field->IsOptional() ) { - os << " Has" << field->Name()->ToCString() << " (me) returns Boolean;" << std::endl; - os << " ---Purpose: Returns True if optional field " << field->Name()->ToCString() << " is defined" << std::endl; -// os << " ---C++: return &" << std::endl; + for (Standard_Integer i = 1; i <= myFields->Length(); i++) { + Handle(Express_Field) field = myFields->Value(i); + os << " //! Returns field " << field->Name()->ToCString() << std::endl; + if (field->Type()->IsHandle()) + os << " Standard_EXPORT Handle(" << field->Type()->CPPName()->ToCString() << ") " + << field->Name()->ToCString() << "() const;" << std::endl; + else + os << " Standard_EXPORT " << field->Type()->CPPName()->ToCString() << " " + << field->Name()->ToCString() << "() const;" << std::endl; + os << " //! Sets field " << field->Name()->ToCString() << std::endl; + if (field->Type()->IsHandle()) + os << " Standard_EXPORT void Set" << field->Name()->ToCString() << " (const Handle(" + << field->Type()->CPPName()->ToCString() << ")& the" << field->Name()->ToCString() << ");" << std::endl; + else + os << " Standard_EXPORT void Set" << field->Name()->ToCString() << " (const " + << field->Type()->CPPName()->ToCString() << " the" << field->Name()->ToCString() << ");" << std::endl; + if (field->IsOptional()) { + os << " //! Returns True if optional field " << field->Name()->ToCString() << " is defined" << std::endl; + os << " Standard_EXPORT Standard_Boolean Has" << field->Name()->ToCString() << "() const;" << std::endl; } os << std::endl; } - + + os << "DEFINE_STANDARD_RTTIEXT(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl; + os << std::endl; + // write fields section if ( myInherit->Length() >1 || myFields->Length() >0 ) { - os << "fields" << std::endl; - for (Standard_Integer i=2; i <= myInherit->Length(); i++ ) { + os << "private:" << std::endl; + for (Standard_Integer i = 2; i <= myInherit->Length(); i++) { Handle(Express_Entity) it = myInherit->Value(i); Handle(TCollection_HAsciiString) name = it->Name(); - Handle(TCollection_HAsciiString) str = it->CDLName(); - os << " the" << it->Name()->ToCString() << ": " << - it->CDLName()->ToCString() << "; -- supertype" << std::endl; + os << " Handle(" << it->CPPName()->ToCString() << ") my" << name->ToCString() << "; //!< supertype" << std::endl; } - for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { - Handle(Express_Field) field = myFields->Value ( i ); - os << " the" << field->Name()->ToCString() << ": " << - field->Type()->CDLName()->ToCString() << ";"; - if ( field->IsOptional() ) os << " -- optional"; + for (Standard_Integer i = 1; i <= myFields->Length(); i++) { + Handle(Express_Field) field = myFields->Value(i); + if (field->Type()->IsHandle()) + os << " Handle(" << field->Type()->CPPName()->ToCString() << ") my" << field->Name()->ToCString() << ";"; + else + os << " " << field->Type()->CPPName()->ToCString() << " my" << field->Name()->ToCString() << ";"; + if (field->IsOptional()) os << " //!< optional"; os << std::endl; } // optional fields: flag 'is field set' - for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { - Handle(Express_Field) field = myFields->Value ( i ); - if ( ! field->IsOptional() ) continue; - os << " def" << field->Name()->ToCString() << ": Boolean; -- flag \"is " << - field->Name()->ToCString() << " defined\"" << std::endl; + for (Standard_Integer i = 1; i <= myFields->Length(); i++) { + Handle(Express_Field) field = myFields->Value(i); + if (!field->IsOptional()) continue; + os << " Standard_Boolean def" << field->Name()->ToCString() << "; //!< flag \"is " << + field->Name()->ToCString() << " defined\"" << std::endl; } os << std::endl; } - + // write end - os << "end " << Name()->ToCString() << ";" << std::endl; + os << "};" << std::endl; + os << "#endif // _" << CPPname->ToCString() << "_HeaderFile_" << std::endl; os.close(); //=============================== @@ -281,10 +303,12 @@ Standard_Boolean Express_Entity::GenerateClass () const os.open ( pack.Cat ( ".cxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_False ); + Express::WriteFileStamp ( os ); // write include section - os << "#include <" << CPPname->ToCString() << ".ixx>" << std::endl; + os << "#include <" << CPPname->ToCString() << ".hxx>" << std::endl; + os << std::endl; + os << "IMPLEMENT_STANDARD_RTTIEXT(" << CPPname->ToCString() << ", " << InheritName->ToCString() << ")" << std::endl; // write constructor Express::WriteMethodStamp ( os, CPPname ); @@ -329,17 +353,13 @@ Standard_Boolean Express_Entity::GenerateClass () const os.close(); if(AbstractFlag()) return Standard_True; //=============================== - // Step 3: generating CDL for Reader/Writer class + // Step 3: generating HXX for Reader/Writer class - // Open CDL file + // Open HXX file Handle(TCollection_HAsciiString) RWCPPName = new TCollection_HAsciiString ( "RW" ); RWCPPName->AssignCat ( GetPackageName() ); RWCPPName->AssignCat ( "_RW" ); RWCPPName->AssignCat ( Name() ); - Handle(TCollection_HAsciiString) RWCDLName = new TCollection_HAsciiString ( "RW" ); - RWCDLName->AssignCat ( Name() ); - RWCDLName->AssignCat ( " from RW" ); - RWCDLName->AssignCat ( GetPackageName() ); pack = "RW"; pack += GetPackageName()->String(); @@ -349,61 +369,52 @@ Standard_Boolean Express_Entity::GenerateClass () const pack += "/"; pack += RWCPPName->String(); - os.open ( pack.Cat ( ".cdl" ).ToCString() ); + os.open ( pack.Cat ( ".hxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, RWCPPName, Standard_True ); + Express::WriteFileStamp ( os ); - // write start of declaration (inheritance) - os << "class " << RWCDLName->ToCString() << " inherits RWClass from StepData" << std::endl << std::endl; - - os << " ---Purpose: Read & Write tool for " << Name()->ToCString() << std::endl; - os << std::endl; - - // write "uses" section - os << "uses" << std::endl; - os << " Check from Interface," << std::endl; - os << " StepWriter from StepData," << std::endl; - os << " StepReaderData from StepData," << std::endl; - os << " EntityIterator from Interface," << std::endl; - os << " InterfaceModel from Interface," << std::endl; - os << " ShareTool from Interface," << std::endl; - os << " " << CDLname->ToCString() << std::endl; + os << "#ifndef _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl; + os << "#define _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl; os << std::endl; - // write "is" section - os << "is" << std::endl; - os << " New(me) returns Transient;"<< std::endl; // << RWCDLName->ToCString() << ";" << std::endl; - os << " ---Purpose: Returns new entity " << RWCDLName->ToCString()<< std::endl; + // write insludes + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; os << std::endl; - os << " ReadStep (me; data: StepReaderData from StepData; num: Integer;" << std::endl; - os << " ach : in out Check from Interface;" << std::endl; - os << " entt : Transient);" << std::endl; - os << " ---Purpose: Reads " << Name()->ToCString() << std::endl; - os << std::endl; - os << " WriteStep (me; SW: in out StepWriter from StepData;" << std::endl; - os << " entt: Transient);" << std::endl; - os << " ---Purpose: Writes " << Name()->ToCString() << std::endl; - os << std::endl; - os << " Share (me; entt : Transient;" << std::endl; - os << " iter: in out EntityIterator from Interface);" << std::endl; - os << " ---Purpose: Fills data for graph (shared items)" << std::endl; - if(CheckFlag()) { - os << " Check (me; entt : Transient;" << std::endl; - os << " shares : ShareTool from Interface;" << std::endl; - os << " ach : in out Check from Interface) is redefined;" << std::endl; - os << " ---Purpose: Check data for entity " << std::endl; - } - if(FillSharedFlag()) { - os << " Share (me; model : InterfaceModel from Interface;" << std::endl; - os << " entt : Transient;" << std::endl; - os << " iter: in out EntityIterator from Interface) is redefined;" << std::endl; - os << " ---Purpose: Shared data for entity " << std::endl; - } + os << "class StepData_StepReaderData;" << std::endl; + os << "class Interface_Check;" << std::endl; + os << "class StepData_StepWriter;" << std::endl; + os << "class Interface_EntityIterator;" << std::endl; + os << "class " << CPPName()->ToCString() << ";" << std::endl; os << std::endl; + // write start of declaration (inheritance) + os << "//! Read & Write tool for " << Name()->ToCString() << std::endl; + os << "class " << RWCPPName->ToCString() << std::endl; + os << "{" << std::endl; + os << "public:" << std::endl; + os << std::endl << " DEFINE_STANDARD_ALLOC" << std::endl << std::endl; + + // default constructor + os << " Standard_EXPORT " << RWCPPName->ToCString() << "();" << std::endl << std::endl; + + // read step + os << " Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(" << + CPPName()->ToCString() << ")& ent) const;" << std::endl << std::endl; + + // write step + os << " Standard_EXPORT void WriteStep(StepData_StepWriter& SW, const Handle(" << + CPPName()->ToCString() << ")& ent) const;" << std::endl << std::endl; + + // share + os << " Standard_EXPORT void Share(const Handle(" << + CPPName()->ToCString() << ")& ent, Interface_EntityIterator& iter) const;" << std::endl << std::endl; + // write end - os << "end RW" << Name()->ToCString() << ";" << std::endl; + os << "};" << std::endl; + os << "#endif // _" << RWCPPName->ToCString() << "_HeaderFile_" << std::endl; os.close(); //=============================== @@ -413,19 +424,20 @@ Standard_Boolean Express_Entity::GenerateClass () const os.open ( pack.Cat ( ".cxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, RWCPPName, Standard_False ); + Express::WriteFileStamp ( os ); // write include section - os << "#include <" << RWCPPName->ToCString() << ".ixx>" << std::endl; - WriteRWInclude ( os, dict ); + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include <" << RWCPPName->ToCString() << ".hxx>" << std::endl; + dict.Clear(); os << "#include <" << CPPname->ToCString() << ".hxx>" << std::endl; - // write method New + dict.Bind(CPPname->ToCString(), 1); + WriteRWInclude ( os, dict ); + // write constructor Express::WriteMethodStamp ( os, RWCPPName ); - os << "Handle(Standard_Transient) " << RWCPPName->ToCString() << "::" << "New () const" << std::endl; - os << "{" << std::endl; - os << " Handle("<ToCString()<<") newRW = new " <ToCString()<<";"<< std::endl; - os << " return newRW;"<< std::endl; - os << "}" << std::endl; + os << RWCPPName->ToCString() << "::" << RWCPPName->ToCString() << "() {}" << std::endl << std::endl; // write method ReadStep Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "ReadStep" ) ); @@ -433,13 +445,11 @@ Standard_Boolean Express_Entity::GenerateClass () const WriteSpaces ( os, 17 + RWCPPName->Length() ); os << "const Standard_Integer num," << std::endl; WriteSpaces ( os, 17 + RWCPPName->Length() ); - os << "Interface_Check& ach," << std::endl; + os << "Handle(Interface_Check)& ach," << std::endl; WriteSpaces ( os, 17 + RWCPPName->Length() ); - os << "const Handle(Standard_Transient) &entt) const" << std::endl; + os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl; os << "{" << std::endl; Standard_Integer nbFld = NbFields ( Standard_True ); - //DownCast entity to it's type - os<<" Handle("<ToCString() << ") ent = Handle("<ToCString() <<")::DownCast(entt);"<< std::endl; os << " // Check number of parameters" << std::endl; os << " if ( ! data->CheckNbParams(num," << nbFld << ",ach,\"" << @@ -448,33 +458,30 @@ Standard_Boolean Express_Entity::GenerateClass () const os << std::endl; os << " // Initialize entity" << std::endl; os << " ent->Init("; - MakeInit ( os, 12, Standard_True, 2 ); + MakeInit ( os, 12, Standard_True, 4 ); os << ");\n}" << std::endl; // write method WriteStep Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "WriteStep" ) ); os << "void " << RWCPPName->ToCString() << "::WriteStep (StepData_StepWriter& SW," << std::endl; WriteSpaces ( os, 18 + RWCPPName->Length() ); - os << "const Handle(Standard_Transient) &entt) const" << std::endl; + os << "const Handle(" << CPPname->ToCString() << ")& ent) const" << std::endl; os << "{" << std::endl; - //DownCast entity to it's type - os<<" Handle("<ToCString() << ") ent = Handle("<ToCString() <<")::DownCast(entt);"<< std::endl; WriteRWWriteCode ( os, 0, Standard_True ); // write code for writing inherited and own fields os << "}" << std::endl; // write method Share Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "Share" ) ); - os << "void " << RWCPPName->ToCString() << "::Share (const Handle(Standard_Transient) &entt," << std::endl; + os << "void " << RWCPPName->ToCString() << "::Share (const Handle(" << CPPname->ToCString() << ")& ent," << std::endl; WriteSpaces ( os, 14 + RWCPPName->Length() ); os << "Interface_EntityIterator& iter) const" << std::endl; os << "{" << std::endl; - os<<" Handle("<ToCString() << ") ent = Handle("<ToCString() <<")::DownCast(entt);"<< std::endl; WriteRWShareCode ( os, 1, Standard_True ); // write code for filling graph of references os << "}" << std::endl; if(CheckFlag()) { Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "Check" ) ); - os << "void " << RWCPPName->ToCString() << "::Check(const Handle(Standard_Transient) &entt," << std::endl; + os << "void " << RWCPPName->ToCString() << "::Check(const Handle(Standard_Transient)& entt," << std::endl; WriteSpaces ( os, 18 + RWCPPName->Length() ); os << "const Interface_ShareTool& shares,"<< std::endl; WriteSpaces ( os, 18 + RWCPPName->Length() ); @@ -488,7 +495,7 @@ Standard_Boolean Express_Entity::GenerateClass () const Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "FillShared" ) ); os << "void " << RWCPPName->ToCString() << "::Share(const Handle(Interface_InterfaceModel)& model," << std::endl; WriteSpaces ( os, 18 + RWCPPName->Length() ); - os << "const Handle(Standard_Transient) &entt,"<< std::endl; + os << "const Handle(Standard_Transient)& entt,"<< std::endl; WriteSpaces ( os, 18 + RWCPPName->Length() ); os << "Interface_EntityIterator& iter) const"<< std::endl; os << "{" << std::endl; @@ -499,77 +506,133 @@ Standard_Boolean Express_Entity::GenerateClass () const // close os.close(); - //adding method for registartion of entities and include in the two files + + //=============================== + // Step 5: adding method for registartion of entities and include - TCollection_AsciiString packname = GetPackageName()->String(); - OSD_Path path_reg ( packname ); - OSD_Directory dir_reg ( packname ); + Standard_Integer anIndex = Express_Item::Index(); + TCollection_AsciiString regDir = "Registration"; + OSD_Path path_reg(regDir); + OSD_Directory dir_reg(regDir); dir_reg.Build ( prot ); + regDir += "/"; - TCollection_AsciiString packname_inc = packname +".cxx_inc"; - TCollection_AsciiString packname_rec = packname + ".cxx_reg"; - packname += "/"; - //write file with includes for registration - os.open(packname.Cat(packname_inc).ToCString(),std::ios::app); - os <<"#include <" << RWCPPName->ToCString() << ".hxx>" << std::endl; + TCollection_AsciiString packname_inc = "inc.txt"; + TCollection_AsciiString packname_rwinc = "rwinc.txt"; + // write file with includes + os.open(regDir.Cat(packname_inc).ToCString(), std::ios::app); + os <<"#include <" << CPPName()->ToCString() << ".hxx>" << std::endl; + os.close(); + // write file with RW includes + os.open(regDir.Cat(packname_rwinc).ToCString(), std::ios::app); + os << "#include <" << RWCPPName->ToCString() << ".hxx>" << std::endl; + os.close(); + + // generate data for entity registration + if (anIndex > 0) { + // StepAP214_Protocol.cxx + TCollection_AsciiString packname_protocol = "protocol.txt"; + os.open(regDir.Cat(packname_protocol).ToCString(), std::ios::app); + os << "types.Bind(STANDARD_TYPE(" << CPPName()->ToCString() << "), " << anIndex << ");" << std::endl; os.close(); - - //write file with registration - os.open(packname.Cat(packname_rec).ToCString(),std::ios::app); - os<<" //Registration class "<ToCString()<< std::endl; - os<<" stepname = "<<"\""<ToCString()<<"\""<<";"<< std::endl; - if(!ShortName().IsNull() && ShortName()->Length() >0) { - os<<" shortname = "<<"\""<ToCString()<<"\""<<";"<< std::endl; + // RWStepAP214_GeneralModule.cxx + // FillSharedCase + TCollection_AsciiString packname_fillshared = "fillshared.txt"; + os.open(regDir.Cat(packname_fillshared).ToCString(), std::ios::app); + os << " case " << anIndex << ":" << std::endl; + os << " {" << std::endl; + os << " DeclareAndCast(" << CPPName()->ToCString() << ", anent, ent);" << std::endl; + os << " " << RWCPPName->ToCString() << " tool;" << std::endl; + os << " tool.Share(anent, iter);" << std::endl; + os << " }" << std::endl; + os << " break;" << std::endl; + os.close(); + // NewVoid + TCollection_AsciiString packname_newvoid = "newvoid.txt"; + os.open(regDir.Cat(packname_newvoid).ToCString(), std::ios::app); + os << " case " << anIndex << ":" << std::endl; + os << " ent = new " << CPPName()->ToCString() << ";" << std::endl; + os << " break;" << std::endl; + os.close(); + // CategoryNumber + TCollection_AsciiString packname_category = "category.txt"; + os.open(regDir.Cat(packname_category).ToCString(), std::ios::app); + os << " case " << anIndex << ": return " << Category()->ToCString() << ";" << std::endl; + os.close(); + // RWStepAP214_ReadWriteModule.cxx + // Reco + Handle(TCollection_HAsciiString) recoName = Express::ToStepName(Name()); + recoName->UpperCase(); + TCollection_AsciiString packname_reco = "reco.txt"; + os.open(regDir.Cat(packname_reco).ToCString(), std::ios::app); + os << " static TCollection_AsciiString Reco_" << Name()->ToCString() << "(\"" + << recoName->ToCString() << "\");" << std::endl; + os.close(); + //type bind + TCollection_AsciiString packname_typebind = "typebind.txt"; + os.open(regDir.Cat(packname_typebind).ToCString(), std::ios::app); + os << " typenums.Bind(Reco_" << Name()->ToCString() << ", " << anIndex << ");" << std::endl; + os.close(); + // StepType + TCollection_AsciiString packname_steptype = "steptype.txt"; + os.open(regDir.Cat(packname_steptype).ToCString(), std::ios::app); + os << " case " << anIndex << ": return Reco_" << Name()->ToCString() << ";" << std::endl; + os.close(); + // ReadStep + TCollection_AsciiString packname_readstep = "readstep.txt"; + os.open(regDir.Cat(packname_readstep).ToCString(), std::ios::app); + os << " case " << anIndex << ":" << std::endl; + os << " {" << std::endl; + os << " DeclareAndCast(" << CPPName()->ToCString() << ", anent, ent);" << std::endl; + os << " " << RWCPPName->ToCString() << " tool;" << std::endl; + os << " tool.ReadStep(data, num, ach, anent);" << std::endl; + os << " }" << std::endl; + os << " break;" << std::endl; + os.close(); + // WriteStep + TCollection_AsciiString packname_writestep = "writestep.txt"; + os.open(regDir.Cat(packname_writestep).ToCString(), std::ios::app); + os << " case " << anIndex << ":" << std::endl; + os << " {" << std::endl; + os << " DeclareAndCast(" << CPPName()->ToCString() << ", anent, ent);" << std::endl; + os << " " << RWCPPName->ToCString() << " tool;" << std::endl; + os << " tool.WriteStep(SW, anent);" << std::endl; + os << " }" << std::endl; + os << " break;" << std::endl; + os.close(); + Express_Item::SetIndex(anIndex + 1); } - if(!Category().IsNull() && Category()->Length() >0) - os<<" category = "<<"Interface_Category::Number(\""<ToCString()<<"\");"<< std::endl; - else - os<<" category = vcateg;"<< std::endl; -//PDN modification of $ on handles -// os<<" Handle(" << RWCPPName->ToCString()<<")& rwclass = new "<ToCString()<<";"<< std::endl; -// os<<" Protocol->RegisterEntity(stepname,shortname,category,rwclass);"<< std::endl<< std::endl; - os<<" Protocol->RegisterEntity(stepname,shortname,category,new "<ToCString()<<");"<< std::endl; - os<<" shortname.Clear();"<< std::endl<< std::endl; - os.close(); return Standard_True; } //======================================================================= -//function : WriteUses +//function : WriteIncludes //purpose : //======================================================================= -Standard_Boolean Express_Entity::WriteUses (Standard_OStream &os, - const Standard_Boolean start, - DataMapOfStringInteger &dict) const +Standard_Boolean Express_Entity::WriteIncludes (Standard_OStream &os, + DataMapOfStringInteger &dict) const { - Standard_Boolean st = start; for ( Standard_Integer i=1; i <= myInherit->Length(); i++ ) { Handle(Express_Entity) it = myInherit->Value(i); - st = it->WriteUses ( os, st, dict ); - if ( i <=1 ) continue; - - if ( dict.IsBound ( it->CDLName()->String() ) ) continue; // avoid duplicating - dict.Bind ( it->CDLName()->String(), 1 ); + it->WriteIncludes ( os, dict ); + if ( i <= 1 ) continue; + + if ( dict.IsBound ( it->CPPName()->String() ) ) continue; // avoid duplicating + dict.Bind ( it->CPPName()->String(), 1 ); it->Use ( GetPackageName() ); - os << ( st ? "uses" : "," ) << std::endl; - st = Standard_False; - os << " "; - os << it->CDLName()->ToCString(); + os << "#include <" << it->CPPName()->ToCString() << ".hxx>" << std::endl; } for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { Handle(Express_Type) type = myFields->Value(i)->Type(); - if ( dict.IsBound ( type->CDLName()->String() ) ) continue; // avoid duplicating - dict.Bind ( type->CDLName()->String(), 1 ); + if ( dict.IsBound ( type->CPPName()->String() ) ) continue; // avoid duplicating + dict.Bind ( type->CPPName()->String(), 1 ); type->Use ( GetPackageName() ); if ( type->IsStandard() ) continue; - os << ( st ? "uses" : "," ) << std::endl; - st = Standard_False; - os << " "; - os << type->CDLName()->ToCString(); + os << "#include <" << type->CPPName()->ToCString() << ".hxx>" << std::endl; } - return st; + return Standard_True; } //======================================================================= @@ -581,25 +644,21 @@ void Express_Entity::WriteRWInclude (Standard_OStream &os, DataMapOfStringIntege { for ( Standard_Integer i=1; i <= myInherit->Length(); i++ ) { Handle(Express_Entity) it = myInherit->Value(i); - if ( i >1 ) { // include hxx for base classes which are implemented as fields + if ( i >1 ) { // include HXX for base classes which are implemented as fields os << "#include <" << it->CPPName()->ToCString() << ".hxx>" << std::endl; } it->WriteRWInclude ( os, dict ); } for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { Handle(Express_Type) type = myFields->Value(i)->Type(); - for ( Standard_Integer deep=0; deep < 10; deep++ ) { if ( dict.IsBound ( type->CPPName()->String() ) ) break; // avoid duplicating - dict.Bind ( type->CDLName()->String(), 1 ); - - Standard_Boolean iscomplex = type->IsKind(STANDARD_TYPE(Express_ComplexType)); - if ( ! deep && ! iscomplex ) break; // only complex types and their elements need #include - + dict.Bind ( type->CPPName()->String(), 1 ); os << "#include <" << type->CPPName()->ToCString() << ".hxx>" << std::endl; - if ( ! iscomplex ) break; Handle(Express_ComplexType) complex = Handle(Express_ComplexType)::DownCast ( type ); + if (complex.IsNull()) + break; type = complex->Type(); } } @@ -619,12 +678,12 @@ static Handle(TCollection_HAsciiString) TypeToSTEPName (const Handle(Express_Typ } static void WriteRWReadField (Standard_OStream &os, - const Standard_CString index, - const Standard_CString STEPName, - const Standard_CString varname, - const Handle(Express_Type) &vartype, - const Standard_Integer lev, - const Standard_Boolean optional) + const Standard_CString index, + const Standard_CString STEPName, + const Standard_CString varname, + const Handle(Express_Type) &vartype, + const Standard_Integer lev, + const Standard_Boolean optional) { // indent TCollection_AsciiString shift ( " " ); @@ -686,10 +745,10 @@ static void WriteRWReadField (Standard_OStream &os, varname << " = " << enpack.ToCString() << "_" << prefix->ToCString()<< names->Value(i)->ToCString() << ";" << std::endl; } - os << shift << " else ach.AddFail(\"Parameter #" << index << " (" << + os << shift << " else ach->AddFail(\"Parameter #" << index << " (" << STEPName << ") has not allowed value\");" << std::endl; os << shift << "}" << std::endl; - os << shift << "else ach.AddFail(\"Parameter #" << index << " (" << + os << shift << "else ach->AddFail(\"Parameter #" << index << " (" << STEPName << ") is not enumeration\");" << std::endl; // os << "!!! READING/WRITING ENUM NOT IMPLEMENTED !!!" << std::endl; // std::cout << "Warning: Reading/Writing ENUMERATION not yet implemented (" << @@ -763,7 +822,14 @@ static void WriteRWReadField (Standard_OStream &os, os << shift << "}" << std::endl; os << shift << "else {" << std::endl; os << shift << " has" << varname << " = Standard_False;" << std::endl; - if ( ! type->IsHandle() ) os << shift << " a" << varname << " = 0;" << std::endl; + os << shift << " a" << varname; + if (type->IsHandle()) + os << ".Nullify();"; + else if (type->IsStandard()) + os << " = 0;"; + else + os << " = " << type->CPPName()->ToCString() << "();"; + os << std::endl; os << shift << "}" << std::endl; } } @@ -774,8 +840,8 @@ static void WriteRWReadField (Standard_OStream &os, //======================================================================= Standard_Integer Express_Entity::WriteRWReadCode (Standard_OStream &os, - const Standard_Integer start, - const Standard_Integer own) const + const Standard_Integer start, + const Standard_Integer own) const { Standard_Integer num = start; @@ -789,16 +855,16 @@ Standard_Integer Express_Entity::WriteRWReadCode (Standard_OStream &os, os << " // " << ( own ? "Own" : "Inherited" ) << " fields of " << Name()->ToCString() << std::endl; } - for (Standard_Integer i=1; i <= myFields->Length(); i++ ) { + for (Standard_Integer i = 1; i <= myFields->Length(); i++) { Handle(Express_Field) field = myFields->Value(i); - Handle(TCollection_HAsciiString) STEPName = Express::ToStepName ( field->Name() ); - if ( ! own ) STEPName->Prepend ( Express::ToStepName ( Name()->Cat ( "." ) ) ); - Handle(TCollection_HAsciiString) varName = new TCollection_HAsciiString ( field->Name() ); - if ( ! own ) varName->Prepend ( Name()->Cat ( "_" ) ); - + Handle(TCollection_HAsciiString) STEPName = Express::ToStepName(field->Name()); + if (!own) STEPName->Prepend(Express::ToStepName(Name()->Cat("."))); + Handle(TCollection_HAsciiString) varName = new TCollection_HAsciiString(field->Name()); + if (!own) varName->Prepend(Name()->Cat("_")); + os << std::endl; - WriteRWReadField ( os, TCollection_AsciiString(num).ToCString(), STEPName->ToCString(), - varName->ToCString(), field->Type(), 0, field->IsOptional() ); + WriteRWReadField(os, TCollection_AsciiString(num).ToCString(), STEPName->ToCString(), + varName->ToCString(), field->Type(), 0, field->IsOptional()); num++; } return num; @@ -985,7 +1051,7 @@ static Standard_Boolean WriteRWShareField (Standard_OStream &os, os << shift << ( type->IsHandle() ? " Handle(" : " " ) << type->CPPName()->ToCString() << ( type->IsHandle() ? ") " : " " ) << var.ToCString() << " = " << varname << "->Value(i" << index << ");" << std::endl; - oos << '\0'; + os << oos.str(); os << shift << "}" << std::endl; return Standard_True; @@ -1046,7 +1112,7 @@ Standard_Integer Express_Entity::WriteRWShareCode (Standard_OStream &os, else if ( own ==-1 ) os << Name()->ToCString() << "()->"; os << "Has" << field->Name()->ToCString() << "() ) {" << std::endl; } - oos << '\0'; + os << oos.str(); if ( field->IsOptional() ) { os << " }" << std::endl; @@ -1061,30 +1127,30 @@ Standard_Integer Express_Entity::WriteRWShareCode (Standard_OStream &os, //======================================================================= Standard_Integer Express_Entity::MakeInit (Standard_OStream &os, - const Standard_Integer shift, - const Standard_Integer own, - const Standard_Integer mode) const + const Standard_Integer shift, + const Standard_Integer own, + const Standard_Integer mode) const { Standard_Integer sh = shift; // write code for inherited fields - for ( Standard_Integer i=1; i <= myInherit->Length(); i++ ) { + for (Standard_Integer i = 1; i <= myInherit->Length(); i++) { Handle(Express_Entity) ent = myInherit->Value(i); - if ( mode ==3 ) { + if (mode == 3) { Standard_Integer s = 0; - if ( i >1 ) { - os << "\n the" << ent->Name()->ToCString() << " = new " << ent->CPPName()->ToCString() << ";"; - os << "\n the" << ent->Name()->ToCString() << "->Init("; - s = 12 + ent->Name()->Length(); + if (i > 1) { + os << "\n my" << ent->Name()->ToCString() << " = new " << ent->CPPName()->ToCString() << ";"; + os << "\n my" << ent->Name()->ToCString() << "->Init("; + s = 12 + ent->Name()->Length(); } else { - os << "\n " << ent->CPPName()->ToCString() << "::Init("; - s = 9 + ent->CPPName()->Length(); + os << "\n " << ent->CPPName()->ToCString() << "::Init("; + s = 9 + ent->CPPName()->Length(); } - ent->MakeInit ( os, s, Standard_False, 2 ); + ent->MakeInit(os, s, Standard_False, 2); os << ");"; } - else sh = ent->MakeInit ( os, sh, ( i >1 ? -1 : Standard_False ), mode ); + else sh = ent->MakeInit(os, sh, (i > 1 ? -1 : Standard_False), mode); } // write code for own fields @@ -1097,37 +1163,49 @@ Standard_Integer Express_Entity::MakeInit (Standard_OStream &os, // make CR and indent TCollection_AsciiString space = ""; for ( Standard_Integer sn=0; sn < abs(sh); sn++ ) space += " "; - Standard_Character delim = ( mode ==0 ? ';' : ( mode == 3 ? '\n' : ',' ) ); - if ( sh <0 ) os << delim << "\n" << space; + Standard_Character delim = ( mode == 0 ? ',' : ( mode == 3 ? '\n' : ',' ) ); + if ( sh < 0 ) os << delim << "\n" << space; else sh = -sh; if ( field->IsOptional() ) { - if ( mode ==0 ) os << "has" << varName->ToCString() << ": Boolean;\n" << space; - else if ( mode ==1 ) os << "const Standard_Boolean has" << varName->ToCString() << ",\n" << space; - else if ( mode ==2 ) os << "has" << varName->ToCString() << ",\n" << space; + if ( mode == 0 ) os << "const Standard_Boolean has" << varName->ToCString() << ",\n" << space; + else if ( mode == 1 ) os << "const Standard_Boolean has" << varName->ToCString() << ",\n" << space; + else if ( mode == 2 || mode == 4) os << "has" << varName->ToCString() << ",\n" << space; } // write field - if ( mode ==0 ) { - os << "a" << varName->ToCString() << ": " << field->Type()->CDLName()->ToCString(); + if ( mode == 0 ) { + if (field->Type()->IsHandle()) + os << "const Handle(" << field->Type()->CPPName()->ToCString() << ")& the" << varName->ToCString(); + else + os << "const " << field->Type()->CPPName()->ToCString() << " the" << varName->ToCString(); } - else if ( mode ==1 ) { - os << "const " << ( field->Type()->IsHandle() ? "Handle(" : "" ) << - field->Type()->CPPName()->ToCString() << ( field->Type()->IsHandle() ? ")" : "" ) << - ( field->Type()->IsSimple() ? " a" : " &a" ) << varName->ToCString(); + else if (mode == 1) { + os << "const " << (field->Type()->IsHandle() ? "Handle(" : "") << + field->Type()->CPPName()->ToCString() << (field->Type()->IsHandle() ? ")" : "") << + (field->Type()->IsSimple() ? " the" : "& the") << varName->ToCString(); } - else if ( mode ==2 ) { + else if ( mode == 2 ) { + os << "the" << varName->ToCString(); + } + else if (mode == 4) { os << "a" << varName->ToCString(); } else { - if ( field->IsOptional() ) { - os << "def" << field->Name()->ToCString() << " = has" << varName->ToCString() << ";" << std::endl; - os << " if (def" << field->Name()->ToCString() << ") {\n "; + if (field->IsOptional()) { + os << "def" << field->Name()->ToCString() << " = has" << varName->ToCString() << ";" << std::endl; + os << " if (def" << field->Name()->ToCString() << ") {\n "; + } + os << "my" << field->Name()->ToCString() << " = the" << varName->ToCString() << ";"; + if (field->IsOptional()) { + os << "\n }\n else my" << field->Name()->ToCString(); + if (field->Type()->IsHandle()) + os << ".Nullify();"; + else if (field->Type()->IsStandard()) + os << " = 0;"; + else + os << " = " << field->Type()->CPPName()->ToCString() << "();"; } - os << "the" << field->Name()->ToCString() << " = a" << varName->ToCString() << ";"; - if ( field->IsOptional() ) - if ( field->Type()->IsHandle() ) os << "\n }\n else the" << field->Name()->ToCString() << ".Nullify();"; - else os << "\n }\n else the" << field->Name()->ToCString() << " = 0;"; } if ( sh >0 ) sh = -sh; } diff --git a/src/Express/Express_Entity.hxx b/src/Express/Express_Entity.hxx index 58ccd94f21..34d1be8db6 100644 --- a/src/Express/Express_Entity.hxx +++ b/src/Express/Express_Entity.hxx @@ -72,11 +72,11 @@ private: typedef NCollection_DataMap DataMapOfStringInteger; - //! Create CDL/CXX files from item + //! Create HXX/CXX files from item Standard_EXPORT virtual Standard_Boolean GenerateClass() const; - //! Writes uses section of CDL - Standard_EXPORT Standard_Boolean WriteUses (Standard_OStream& os, const Standard_Boolean start, DataMapOfStringInteger& dict) const; + //! Writes includes section of HXX + Standard_EXPORT Standard_Boolean WriteIncludes (Standard_OStream& os, DataMapOfStringInteger& dict) const; //! Writes #include declarations for RW class Standard_EXPORT void WriteRWInclude (Standard_OStream& os, DataMapOfStringInteger& dict) const; @@ -92,10 +92,11 @@ private: //! Writes arguments and code for method Init() //! Mode identifyes what code is being written: - //! 0 - CDL declaration + //! 0 - HXX declaration //! 1 - CXX declaration //! 2 - call (argument list) //! 3 - implementation + //! 4 - call (argument list for RW) Standard_EXPORT Standard_Integer MakeInit (Standard_OStream& os, const Standard_Integer shift, const Standard_Integer own, const Standard_Integer mode) const; Handle(TColStd_HSequenceOfHAsciiString) mySupers; diff --git a/src/Express/Express_Enum.cxx b/src/Express/Express_Enum.cxx index f82d4e7942..76d64c21a8 100644 --- a/src/Express/Express_Enum.cxx +++ b/src/Express/Express_Enum.cxx @@ -59,18 +59,29 @@ Standard_Boolean Express_Enum::GenerateClass () const OSD_Directory dir ( path ); dir.Build ( prot ); pack += "/"; - pack += GetPackageName()->String(); + pack += CPPName()->String(); - // Open CDL file - std::ofstream os ( pack.Cat ( ".cdl" ).ToCString(), std::ios::out | std::ios::ate ); + // Open HXX file + std::ofstream os ( pack.Cat ( ".hxx" ).ToCString(), std::ios::out | std::ios::ate ); - os << std::endl << " enumeration " << Name()->ToCString() << " is " << std::endl; + // write header + Express::WriteFileStamp(os); + + // write defines + os << "#ifndef _" << CPPName()->ToCString() << "_HeaderFile" << std::endl; + os << "#define _" << CPPName()->ToCString() << "_HeaderFile" << std::endl; + + os << std::endl << "enum " << CPPName()->ToCString() << std::endl; + os << "{" << std::endl; Handle(TCollection_HAsciiString) prefix = Express::EnumPrefix(Name()); - for ( Standard_Integer i=1; i <= myNames->Length(); i++ ) { - if ( i >1 ) os << "," << std::endl; - os << " " << prefix->ToCString()<Value(i)->ToCString(); + for ( Standard_Integer i = 1; i <= myNames->Length(); i++ ) { + if ( i > 1 ) os << "," << std::endl; + os << " " << GetPackageName()->ToCString() << "_" << prefix->ToCString() + << myNames->Value(i)->ToCString(); } - os << std::endl << " end;" << std::endl; + + os << std::endl << "};" << std::endl; + os << "#endif // _" << CPPName()->ToCString() << "_HeaderFile" << std::endl; os.close(); return Standard_False; diff --git a/src/Express/Express_Enum.hxx b/src/Express/Express_Enum.hxx index 68fd0763e4..8663e3c23f 100644 --- a/src/Express/Express_Enum.hxx +++ b/src/Express/Express_Enum.hxx @@ -34,7 +34,7 @@ public: //! Returns names of enumeration variants Standard_EXPORT const Handle(TColStd_HSequenceOfHAsciiString)& Names() const; - //! Create CDL/CXX files from item + //! Create HXX/CXX files from item Standard_EXPORT virtual Standard_Boolean GenerateClass() const; diff --git a/src/Express/Express_Integer.cxx b/src/Express/Express_Integer.cxx index 682706999e..4595d170d2 100644 --- a/src/Express/Express_Integer.cxx +++ b/src/Express/Express_Integer.cxx @@ -36,13 +36,3 @@ Handle(TCollection_HAsciiString) Express_Integer::CPPName () const { return new TCollection_HAsciiString ( "Standard_Integer" ); } - -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Integer::CDLName () const -{ - return new TCollection_HAsciiString ( "Integer" ); -} diff --git a/src/Express/Express_Integer.hxx b/src/Express/Express_Integer.hxx index 1637a4a95d..1d03027f79 100644 --- a/src/Express/Express_Integer.hxx +++ b/src/Express/Express_Integer.hxx @@ -33,9 +33,6 @@ public: //! Returns "Standard_Integer" Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns "Integer" - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - diff --git a/src/Express/Express_Item.cxx b/src/Express/Express_Item.cxx index 55dd571d81..b2e9aed53f 100644 --- a/src/Express/Express_Item.cxx +++ b/src/Express/Express_Item.cxx @@ -16,7 +16,9 @@ #include #include -IMPLEMENT_STANDARD_RTTIEXT(Express_Item,Standard_Transient) +IMPLEMENT_STANDARD_RTTIEXT(Express_Item, Standard_Transient) + +Standard_Integer Express_Item::myIndex = -1; //======================================================================= //function : Express_Item @@ -70,18 +72,6 @@ Handle(TCollection_HAsciiString) Express_Item::CPPName () const return name; } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Item::CDLName () const -{ - Handle(TCollection_HAsciiString) name = myName->Cat ( " from " ); - name->AssignCat ( GetPackageName ( Standard_True ) ); - return name; -} - //======================================================================= //function : SetPackageName //purpose : @@ -251,3 +241,23 @@ Standard_Boolean Express_Item::Use (const Handle(TCollection_HAsciiString) &pack return myhasFillShared; } + //======================================================================= + //function : SetIndex + //purpose : + //======================================================================= + + void Express_Item::SetIndex(const Standard_Integer theIndex) + { + myIndex = theIndex; + } + + //======================================================================= + //function : Index + //purpose : + //======================================================================= + + Standard_Integer Express_Item::Index() + { + return myIndex; + } + diff --git a/src/Express/Express_Item.hxx b/src/Express/Express_Item.hxx index 4c6c480727..1248a9ccf5 100644 --- a/src/Express/Express_Item.hxx +++ b/src/Express/Express_Item.hxx @@ -25,23 +25,20 @@ class TCollection_HAsciiString; //! Base class for items of the schema. Stores a name of the class, //! package name and flag used to mark items for generation. -//! Provides interface for writing generated class definitions to CDL +//! Provides interface for writing generated class definitions to HXX //! and CXX files. class Express_Item : public Standard_Transient { - public: - + static Standard_Integer myIndex; + //! Returns item name Standard_EXPORT const Handle(TCollection_HAsciiString)& Name() const; //! Returns (generated) name for the item in CXX-style (Package_Class) Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns (generated) name for the item in CDL-style (Class from Package) - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - //! Returns package name //! If not defined, returns NULL if auto is False (default) //! or "StepStep" if auto is True @@ -56,7 +53,7 @@ public: //! Change generation mark flag Standard_EXPORT void SetMark (const Standard_Boolean mark) ; - //! General interface for creating CDL/CXX files from item + //! General interface for creating HXX/CXX files from item Standard_EXPORT virtual Standard_Boolean GenerateClass() const = 0; //! Checks that item is marked for generation and if yes, @@ -95,6 +92,12 @@ public: //! Get flag resposible for presence of method FillShared in the class Standard_EXPORT Standard_Boolean FillSharedFlag() const; + //! Set start entity index + Standard_EXPORT static void SetIndex(const Standard_Integer theIndex); + + //! Get current entity index + Standard_EXPORT static Standard_Integer Index(); + @@ -132,5 +135,4 @@ private: - #endif // _Express_Item_HeaderFile diff --git a/src/Express/Express_Logical.cxx b/src/Express/Express_Logical.cxx index e80cdbfad5..4b1e0a286d 100644 --- a/src/Express/Express_Logical.cxx +++ b/src/Express/Express_Logical.cxx @@ -37,16 +37,6 @@ Handle(TCollection_HAsciiString) Express_Logical::CPPName () const return new TCollection_HAsciiString ( "StepData_Logical" ); } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Logical::CDLName () const -{ - return new TCollection_HAsciiString ( "Logical from StepData" ); -} - //======================================================================= //function : IsStandard //purpose : diff --git a/src/Express/Express_Logical.hxx b/src/Express/Express_Logical.hxx index 983dbbe752..8cc9d6f4aa 100644 --- a/src/Express/Express_Logical.hxx +++ b/src/Express/Express_Logical.hxx @@ -34,9 +34,6 @@ public: //! Returns "StepData_Logical" Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns "Logical from StepData" - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - //! Return False Standard_EXPORT virtual Standard_Boolean IsStandard() const; diff --git a/src/Express/Express_NamedType.cxx b/src/Express/Express_NamedType.cxx index 6b37f44a2b..7c6c345033 100644 --- a/src/Express/Express_NamedType.cxx +++ b/src/Express/Express_NamedType.cxx @@ -81,16 +81,6 @@ Handle(TCollection_HAsciiString) Express_NamedType::CPPName () const return myItem->CPPName(); } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_NamedType::CDLName () const -{ - return myItem->CDLName(); -} - //======================================================================= //function : IsStandard //purpose : diff --git a/src/Express/Express_NamedType.hxx b/src/Express/Express_NamedType.hxx index 87c9f71855..8ec8cb6bec 100644 --- a/src/Express/Express_NamedType.hxx +++ b/src/Express/Express_NamedType.hxx @@ -49,9 +49,6 @@ public: //! Returns CPP-style name of the type Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns CDL-style name of the type - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - //! Return True if type is defined in package Standard Standard_EXPORT virtual Standard_Boolean IsStandard() const; diff --git a/src/Express/Express_Real.cxx b/src/Express/Express_Real.cxx index 255e40f12c..7ee5c21d70 100644 --- a/src/Express/Express_Real.cxx +++ b/src/Express/Express_Real.cxx @@ -36,13 +36,3 @@ Handle(TCollection_HAsciiString) Express_Real::CPPName () const { return new TCollection_HAsciiString ( "Standard_Real" ); } - -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_Real::CDLName () const -{ - return new TCollection_HAsciiString ( "Real" ); -} diff --git a/src/Express/Express_Real.hxx b/src/Express/Express_Real.hxx index 21d1195e28..ec2654d11c 100644 --- a/src/Express/Express_Real.hxx +++ b/src/Express/Express_Real.hxx @@ -33,9 +33,6 @@ public: //! Returns "Standard_Real" Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns "Real" - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - diff --git a/src/Express/Express_Schema.hxx b/src/Express/Express_Schema.hxx index d5c8c13e94..94551f2624 100644 --- a/src/Express/Express_Schema.hxx +++ b/src/Express/Express_Schema.hxx @@ -26,7 +26,7 @@ class Express_Type; //! Represents a schema as a list of items and provides general -//! tools for generating CDL/CXX files (including dictionary of +//! tools for generating HXX/CXX files (including dictionary of //! item names) class Express_Schema : public Standard_Transient { diff --git a/src/Express/Express_Select.cxx b/src/Express/Express_Select.cxx index 66f63e0475..2d8cdd4d31 100644 --- a/src/Express/Express_Select.cxx +++ b/src/Express/Express_Select.cxx @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -71,19 +72,18 @@ const Handle(Express_HSequenceOfItem) &Express_Select::Items () const Standard_Boolean Express_Select::GenerateClass () const { Handle(TCollection_HAsciiString) CPPname = CPPName(); - Handle(TCollection_HAsciiString) CDLname = CDLName(); Handle(TColStd_HSequenceOfInteger) seqMember = new TColStd_HSequenceOfInteger; Handle(TColStd_HSequenceOfInteger) seqEntities = new TColStd_HSequenceOfInteger; for ( Standard_Integer i=1; i <= myItems->Length(); i++ ) { Handle(Express_Item) item = myItems->Value(i); - if (item->IsKind(STANDARD_TYPE(Express_Entity)) || item->IsKind(STANDARD_TYPE(Express_Select))) + if (item->IsKind(STANDARD_TYPE(Express_Entity)) || item->IsKind(STANDARD_TYPE(Express_Select)) + || item->IsKind(STANDARD_TYPE(Express_Alias)) || item->IsKind(STANDARD_TYPE(Express_ComplexType))) seqEntities->Append(i); else seqMember->Append(i); } - //if(!seqEntities->IsEmpty()) - std::cout << "Generating SELECT " << CPPname->ToCString() << std::endl; + std::cout << "Generating SELECT " << CPPname->ToCString() << std::endl; if(!seqMember->IsEmpty()) { std::cout << "Generating SELECTMember " << CPPname->ToCString() << "Member"<< std::endl; GenerateSelectMember(seqMember); @@ -98,96 +98,112 @@ Standard_Boolean Express_Select::GenerateClass () const pack += CPPname->String(); //=============================== - // Step 1: generating CDL + // Step 1: generating HXX - // Open CDL file - std::ofstream os ( pack.Cat ( ".cdl" ).ToCString() ); + // Open HXX file + std::ofstream os ( pack.Cat ( ".hxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_True ); - - // write start of declaration (inheritance) - os << "class " << CDLname->ToCString() << std::endl << "inherits SelectType from StepData"; - os << std::endl << std::endl; + Express::WriteFileStamp ( os ); - os << " ---Purpose: Representation of STEP SELECT type " << Name()->ToCString() << std::endl; + // write start define + os << "#ifndef _" << CPPname->ToCString() << "_HeaderFile" << std::endl; + os << "#define _" << CPPname->ToCString() << "_HeaderFile" << std::endl; os << std::endl; - - // write "uses" section (also creates all used types) - os << "uses" << std::endl; - os << " SelectMember from StepData"; - Standard_Integer jj =1; - for (Standard_Integer i=1; i <= myItems->Length(); i++ ) { + + // write common includes + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << std::endl; + + os << "class Standard_Transient;" << std::endl; + if (!seqMember->IsEmpty()) + os << "class StepData_SelectMember;" << std::endl; + + Standard_Integer jj = 1; + for (Standard_Integer i = 1; i <= myItems->Length(); i++) { Handle(Express_Item) item = myItems->Value(i); - item->Use ( GetPackageName() ); - if(item->IsKind(STANDARD_TYPE(Express_Alias))) { - Handle(Express_Type) type = Handle(Express_Alias)::DownCast(item )->Type(); + item->Use(GetPackageName()); + if (item->IsKind(STANDARD_TYPE(Express_Alias))) { + Handle(Express_Type) type = Handle(Express_Alias)::DownCast(item)->Type(); TCollection_AsciiString ats = type->CPPName()->String(); - if(type->IsStandard()) //(STANDARD_TYPE(Express_PredefinedType))) - continue; - } - os << "," << std::endl; - os << " "; - os << item->CDLName()->ToCString(); + if (type->IsStandard()) //(STANDARD_TYPE(Express_PredefinedType))) + continue; + } + os << "class " << item->CPPName()->ToCString() << ";" << std::endl; jj++; } - os << std::endl << std::endl; - - // write "is" section - os << "is" << std::endl; - os << " Create returns " << CDLname->ToCString() << ";" << std::endl; - os << " ---Purpose: Empty constructor" << std::endl; os << std::endl; - os << " CaseNum (me; ent: Transient) returns Integer;" << std::endl; - os << " ---Purpose: Recognizes a kind of " << Name()->ToCString() << " select type" << std::endl; - Standard_Integer j =1; - if(seqEntities->Length()) { - for( j =1; j <= seqEntities->Length(); j++) { - Standard_Integer ind = seqEntities->Value(j); - os << " -- " << j << " -> " << myNames->Value(ind)->ToCString() << std::endl; - } - - os << " -- 0 else" << std::endl << std::endl; - } - else os << " -- return 0 " << std::endl << std::endl; + + // class declaration + os << "//! Representation of STEP SELECT type " << Name()->ToCString() << std::endl; + os << "class " << CPPname->ToCString() << " : public StepData_SelectType" << std::endl; + os << "{" << std::endl; + os << std::endl; + os << "public:" << std::endl; + os << std::endl; + os << " DEFINE_STANDARD_ALLOC" << std::endl; + os << std::endl; + + // default constructor + os << " //! Empty constructor" << std::endl; + os << " Standard_EXPORT " << CPPname->ToCString() << "();" << std::endl; + os << std::endl; + // write common methods section + os << " //! Recognizes a kind of " << Name()->ToCString() << " select type" << std::endl; + for (Standard_Integer i = 1; i <= seqEntities->Length(); i++) { + Standard_Integer ind = seqEntities->Value(i); + os << " //! -- " << i << " -> " << myNames->Value(ind)->ToCString() << std::endl; + } + os << " Standard_EXPORT Standard_Integer CaseNum (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;" << std::endl; + os << std::endl; + if(!seqMember->IsEmpty()) { - os << " CaseMem (me; ent: SelectMember from StepData) returns Integer is redefined;" << std::endl; - os << " ---Purpose: Recognizes a items of select member " << Name()->ToCString()<<"Member" << std::endl; - for (Standard_Integer i=1; i <= seqMember->Length(); i++ ) { + os << " //! Recognizes items of select member " << Name()->ToCString() << "Member" << std::endl; + for (Standard_Integer i = 1; i <= seqMember->Length(); i++) { Standard_Integer ind = seqMember->Value(i); - os << " -- " << i << " -> " << myNames->Value(ind)->ToCString() << std::endl; + os << " //! -- " << i << " -> " << myNames->Value(ind)->ToCString() << std::endl; } - os << " -- 0 else" << std::endl << std::endl; + os << " //! -- 0 else" << std::endl; + os << " Standard_EXPORT virtual Standard_Integer CaseMem (const Handle(StepData_SelectMember)& ent) const Standard_OVERRIDE;" << std::endl; os << std::endl; - os << " NewMember(me) returns SelectMember from StepData is redefined;" << std::endl; - os << " ---Purpose: Returns a new select member the type " <ToCString()<<"Member" << std::endl; + + os << " //! Returns a new select member the type " << Name()->ToCString() << "Member" << std::endl; + os << " Standard_EXPORT virtual Handle(StepData_SelectMember) NewMember() const Standard_OVERRIDE;" << std::endl; os << std::endl; } - //write method get for entities - for (Standard_Integer i=1; i <= seqEntities->Length(); i++ ) { + + // write methods get for entities + for (Standard_Integer i = 1; i <= seqEntities->Length(); i++) { Standard_Integer ind = seqEntities->Value(i); Handle(Express_Item) item = myItems->Value(ind); Handle(TCollection_HAsciiString) name = item->Name(); - os << " " << name->ToCString() << " (me) returns " << item->CDLName()->ToCString() << ";" << std::endl; - os << " ---Purpose: Returns Value as " << name->ToCString() << " (or Null if another type)" << std::endl; + os << " //! Returns Value as " << name->ToCString() << " (or Null if another type)" << std::endl; + os << " Standard_EXPORT Handle(" << item->CPPName()->ToCString() << ") " << name->ToCString() << "() const;" << std::endl; os << std::endl; } - //writes method set and get for enum , integer, real and string. + + // writes method set and get for enum , integer, real and string. for (Standard_Integer i = 1; i <= seqMember->Length(); i++) { Standard_Integer ind = seqMember->Value(i); Handle(Express_Item) item = myItems->Value(ind); Handle(TCollection_HAsciiString) name = item->Name(); - os << " Set" << name->ToCString() << "(me: in out; aVal :" << item->CDLName()->ToCString()<<");"<< std::endl; - os << " ---Purpose: Set Value for " << name->ToCString() << std::endl; + os << " //! Set Value for " << name->ToCString() << std::endl; + os << " Standard_EXPORT void Set" << name->ToCString() + << " (const " << item->CPPName()->ToCString() << " theVal);"<< std::endl; os << std::endl; - os << " " << name->ToCString() << " (me) returns " << item->CDLName()->ToCString() << ";" << std::endl; - os << " ---Purpose: Returns Value as " << name->ToCString() << " (or Null if another type)" << std::endl; + os << " //! Returns Value as " << name->ToCString() << " (or Null if another type)" << std::endl; + os << " " << item->CPPName()->ToCString() << " " << name->ToCString() << "() const;" << std::endl; os << std::endl; } // write end - os << "end " << Name()->ToCString() << ";" << std::endl; + os << "};" << std::endl; + os << "#endif // _" << CPPname->ToCString() << "_HeaderFile" << std::endl; os.close(); //=============================== @@ -197,15 +213,20 @@ Standard_Boolean Express_Select::GenerateClass () const os.open ( pack.Cat ( ".cxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_False ); + Express::WriteFileStamp ( os ); // write include section - os << "#include <" << CPPname->ToCString() << ".ixx>" << std::endl; + os << "#include <" << CPPname->ToCString() << ".hxx>" << std::endl; if(!seqMember->IsEmpty()) { - os << "#include <"<ToCString()<<"Member.hxx>"<< std::endl; + os << "#include <" << CPPName()->ToCString() << "Member.hxx>"<< std::endl; os << "#include "<< std::endl; - } + for (Standard_Integer i = 1; i <= seqEntities->Length(); i++) { + Standard_Integer ind = seqEntities->Value(i); + os << "#include <" << + myItems->Value(ind)->CPPName()->ToCString() << ".hxx>" << std::endl; + } + // write constructor Express::WriteMethodStamp ( os, CPPname ); os << CPPname->ToCString() << "::" << CPPname->ToCString() << " ()" << std::endl; @@ -226,8 +247,8 @@ Standard_Boolean Express_Select::GenerateClass () const os << " return 0;\n}" << std::endl; } else os << " return 0;\n}" << std::endl; + if(!seqMember->IsEmpty()) { //gka for AP209 - //write CaseMem method Express::WriteMethodStamp ( os, new TCollection_HAsciiString ( "CaseMem" ) ); os<<"Standard_Integer "<ToCString()<<"::CaseMem (const Handle(StepData_SelectMember)& ent) const"<< std::endl; @@ -236,7 +257,7 @@ Standard_Boolean Express_Select::GenerateClass () const //os<<" Handle("<< CPPName()->ToCString()<<"Member sm = Handle("<ToCString()<<"Member)::DownCast(ent);"<< std::endl; //os<<" if(sm.IsNull()) return 0;"<< std::endl; //os<<" Handle(TCollection_HAsciiString) name;"<< std::endl; - for( j = 1; j<= seqMember->Length(); j++) { + for( int j = 1; j<= seqMember->Length(); j++) { Standard_Integer ind = seqMember->Value(j); //os<<" name = new TCollection_HAsciiString(\""<Value(ind)->ToCString()<<"\");"<< std::endl; if(j ==1) @@ -375,10 +396,6 @@ Standard_Boolean Express_Select::GenerateClass () const Handle(TCollection_HAsciiString) MemberName = new TCollection_HAsciiString; MemberName->AssignCat(Name()); MemberName->AssignCat("Member"); - Handle(TCollection_HAsciiString) CDLname = new TCollection_HAsciiString; - CDLname->AssignCat(MemberName); - CDLname->AssignCat(" from "); - CDLname-> AssignCat(GetPackageName()); // create a package directory (if not yet exist) OSD_Protection prot ( OSD_RX, OSD_RWX, OSD_RX, OSD_RX ); TCollection_AsciiString pack = GetPackageName()->String(); @@ -387,44 +404,59 @@ Standard_Boolean Express_Select::GenerateClass () const dir.Build ( prot ); pack += "/"; pack += CPPname->String(); - ///pack += "Member"; - // Step 1: generating CDL + // Step 1: generating HXX - // Open CDL file - std::ofstream os ( pack.Cat ( ".cdl" ).ToCString() ); + // Open HXX file + std::ofstream os ( pack.Cat ( ".hxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_True ); - - // write start of declaration (inheritance) - os << "class " << CDLname->ToCString() << std::endl << "inherits SelectNamed from StepData"; - os << std::endl << std::endl; - - os << " ---Purpose: Representation of member for STEP SELECT type " << Name()->ToCString() << std::endl; + Express::WriteFileStamp ( os ); + + // write start define + os << "#ifndef _" << CPPname->ToCString() << "_HeaderFile" << std::endl; + os << "#define _" << CPPname->ToCString() << "_HeaderFile" << std::endl; + os << std::endl; + + // includes + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; + os << "#include " << std::endl; os << std::endl; + os << "DEFINE_STANDARD_HANDLE(" << CPPname->ToCString() << ", StepData_SelectNamed)" << std::endl; + os << std::endl; + + // write start of declaration (inheritance) + os << " //! Representation of member for STEP SELECT type " << Name()->ToCString() << std::endl; + os << "class " << CPPname->ToCString() << " : public StepData_SelectNamed" << std::endl; + os << "{" << std::endl; + os << "public:" << std::endl; - // write "is" section - os << "is" << std::endl; - os << " Create returns " << CDLname->ToCString() << ";" << std::endl; - os << " ---Purpose: Empty constructor" << std::endl; + // write methods + os << " //! Empty constructor" << std::endl; + os << " Standard_EXPORT " << CPPname->ToCString() << "();" << std::endl; os << std::endl; - os << " HasName (me) returns Boolean is redefined;"<< std::endl; - os << " ---Purpose: Returns True if has name"<< std::endl; + os << " //! Returns True if has name" << std::endl; + os << " Standard_EXPORT virtual Standard_Boolean HasName() const Standard_OVERRIDE;" << std::endl; os << std::endl; - os << " Name (me) returns CString is redefined;"<< std::endl; - os << " ---Purpose: Returns set name "<< std::endl; + os << " //! Returns set name" << std::endl; + os << " Standard_EXPORT virtual Standard_CString Name() const Standard_OVERRIDE;" << std::endl; os << std::endl; - os << " SetName (me : mutable; name : CString) returns Boolean is redefined;"<< std::endl; - os << " ---Purpose: Set name "<< std::endl; + os << " //! Set name" << std::endl; + os << " Standard_EXPORT virtual Standard_Boolean SetName(const Standard_CString name) Standard_OVERRIDE;" << std::endl; os << std::endl; - os << " Matches (me; name : CString) returns Boolean is redefined;"<< std::endl; - os << " ---Purpose : Tells if the name of a SelectMember matches a given one;"<< std::endl; + os << " //! Tells if the name of a SelectMember matches a given one;" << std::endl; + os << " Standard_EXPORT virtual Standard_Boolean Matches(const Standard_CString name) const Standard_OVERRIDE;" << std::endl; os << std::endl; + //write fields - os<<"fields"<< std::endl<< std::endl; - os << " mycase : Integer;"<< std::endl<< std::endl; + os <<"private:"<< std::endl; + os << " Standard_Integer myCase;"<< std::endl<< std::endl; // write end - os << "end " << MemberName->ToCString()<< ";" << std::endl; + os << "};" << std::endl; + os << "#endif // _" << CPPname->ToCString() << "_HeaderFile" << std::endl; os.close(); //=============================== @@ -433,21 +465,21 @@ Standard_Boolean Express_Select::GenerateClass () const os.open ( pack.Cat ( ".cxx" ).ToCString() ); // write header - Express::WriteFileStamp ( os, CPPname, Standard_False ); + Express::WriteFileStamp ( os ); // write include section - os << "#include <" << CPPname->ToCString() << ".ixx>" << std::endl; - os << "#include "<< std::endl; + os << "#include <" << CPPname->ToCString() << ".hxx>" << std::endl; + os << "#include "<< std::endl; // write constructor Express::WriteMethodStamp ( os, CPPname ); - os << CPPname->ToCString() << "::" << CPPname->ToCString() << " () : mycase(0) " << std::endl; + os << CPPname->ToCString() << "::" << CPPname->ToCString() << " () : myCase(0) " << std::endl; os << "{" << std::endl << "}" << std::endl; //write method HasName Express::WriteMethodStamp ( os, new TCollection_HAsciiString ("HasName") ); os<<"Standard_Boolean "<ToCString()<<"::HasName() const"<< std::endl; os << "{" << std::endl; - os<< " return mycase >0;"<< std::endl; + os<< " return myCase > 0;"<< std::endl; os<< "}" << std::endl; Standard_Boolean hasEnum = Standard_False; @@ -455,19 +487,19 @@ Standard_Boolean Express_Select::GenerateClass () const Express::WriteMethodStamp ( os, new TCollection_HAsciiString ("Name") ); os<<"Standard_CString "<ToCString()<<"::Name() const"<< std::endl; os << "{" << std::endl; - os << " Handle(TCollection_HAsciiString) aname = new TCollection_HAsciiString;"<< std::endl; - os << " switch(mycase) {"<< std::endl; + os << " Handle(TCollection_HAsciiString) aName = new TCollection_HAsciiString;"<< std::endl; + os << " switch(myCase) {"<< std::endl; Standard_Integer i = 1; for( i = 1; i <= seqMember->Length(); i++) { Standard_Integer ind = seqMember->Value(i); Handle(Express_Item) item = myItems->Value(ind); if(item->IsKind(STANDARD_TYPE(Express_Enum))) hasEnum = Standard_True; - os << " case "<AssignCat(\""<Value(ind)->ToCString()<<"\"); break;"<< std::endl; + os << " case "<AssignCat(\""<Value(ind)->ToCString()<<"\"); break;"<< std::endl; } os << " default : break;"<< std::endl; os<<" }"<< std::endl; - os<<" return aname->ToCString();"<< std::endl; + os<<" return aName->ToCString();"<< std::endl; os<< "}" << std::endl; //write static method for compare name @@ -478,7 +510,7 @@ Standard_Boolean Express_Select::GenerateClass () const else os<<")"<< std::endl; os << "{" << std::endl; - os << " Standard_Integer thecase =0;"<< std::endl; + os << " Standard_Integer thecase = 0;"<< std::endl; os << " if (!name || name[0] == \'/0\') thecase = 0;"<< std::endl; for( i = 1; i <= seqMember->Length(); i++) { Standard_Integer ind = seqMember->Value(i); @@ -504,14 +536,14 @@ Standard_Boolean Express_Select::GenerateClass () const os<<"Standard_Boolean "<ToCString()<<"::SetName(const Standard_CString name) "<< std::endl; os << "{" << std::endl; if(hasEnum) { - os << " Standard_Integer numit =0;"<< std::endl; - os << " mycase = CompareNames(name,numit);"<< std::endl; + os << " Standard_Integer numit = 0;"<< std::endl; + os << " myCase = CompareNames(name,numit);"<< std::endl; - os << " if(numit) SetInteger(numit);"<< std::endl; + os << " if (numit) SetInteger(numit);"<< std::endl; } else - os << " mycase = CompareNames(name);"<< std::endl; - os << " return (mycase >0);"<< std::endl; + os << " myCase = CompareNames(name);"<< std::endl; + os << " return (myCase >0);"<< std::endl; os<< "}" << std::endl; //write method Matches @@ -519,12 +551,12 @@ Standard_Boolean Express_Select::GenerateClass () const os<<"Standard_Boolean "<ToCString()<<"::Matches(const Standard_CString name) const"<< std::endl; os << "{" << std::endl; if(hasEnum) { - os << " Standard_Integer numit =0;"<< std::endl; - os<< " Standard_Integer thecase =CompareNames(name,numit);"<< std::endl; + os << " Standard_Integer numit = 0;"<< std::endl; + os<< " Standard_Integer thecase = CompareNames(name,numit);"<< std::endl; } else - os<< " Standard_Integer thecase =CompareNames(name);"<< std::endl; - os << " return (thecase >0);"<< std::endl; + os<< " Standard_Integer thecase = CompareNames(name);"<< std::endl; + os << " return (thecase > 0);"<< std::endl; os << "}" << std::endl; return Standard_True; } diff --git a/src/Express/Express_Select.hxx b/src/Express/Express_Select.hxx index f224359a89..708261c4b5 100644 --- a/src/Express/Express_Select.hxx +++ b/src/Express/Express_Select.hxx @@ -41,7 +41,7 @@ public: //! Returns sequence of items corresponding to typenames Standard_EXPORT const Handle(Express_HSequenceOfItem)& Items() const; - //! Create CDL/CXX files from item + //! Create HXX/CXX files from item Standard_EXPORT virtual Standard_Boolean GenerateClass() const; diff --git a/src/Express/Express_String.cxx b/src/Express/Express_String.cxx index e7c6447b0b..0cf4d8c7f4 100644 --- a/src/Express/Express_String.cxx +++ b/src/Express/Express_String.cxx @@ -37,16 +37,6 @@ Handle(TCollection_HAsciiString) Express_String::CPPName () const return new TCollection_HAsciiString ( "TCollection_HAsciiString" ); } -//======================================================================= -//function : CDLName -//purpose : -//======================================================================= - -Handle(TCollection_HAsciiString) Express_String::CDLName () const -{ - return new TCollection_HAsciiString ( "HAsciiString from TCollection" ); -} - //======================================================================= //function : IsStandard //purpose : diff --git a/src/Express/Express_String.hxx b/src/Express/Express_String.hxx index f3b4ccd3cc..6351ef45e5 100644 --- a/src/Express/Express_String.hxx +++ b/src/Express/Express_String.hxx @@ -34,9 +34,6 @@ public: //! Returns "Handle(TCollection_HAsciiString)" Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const; - //! Returns "HAsciiString from TCollection" - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const; - //! Returns False Standard_EXPORT virtual Standard_Boolean IsStandard() const; diff --git a/src/Express/Express_Type.hxx b/src/Express/Express_Type.hxx index 88c7b015be..2268d0e386 100644 --- a/src/Express/Express_Type.hxx +++ b/src/Express/Express_Type.hxx @@ -29,9 +29,6 @@ public: //! Returns CPP-style name of the type Standard_EXPORT virtual Handle(TCollection_HAsciiString) CPPName() const = 0; - //! Returns CDL-style name of the type - Standard_EXPORT virtual Handle(TCollection_HAsciiString) CDLName() const = 0; - //! Return True if type is defined in package Standard (False by default) Standard_EXPORT virtual Standard_Boolean IsStandard() const; -- 2.39.5