Schema: Ap242_managed_model_based_3d_engineering_mim_lf
SCHEMA Ap242_managed_model_based_3d_engineering_mim_lf;
CONSTANT
ap242_shape_representation_reference_types : SET OF STRING :=
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_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.EDGE_BASED_WIREFRAME_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.FACETED_BREP_SHAPE_REPRESENTATION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_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.LOCATION_SHAPE_REPRESENTATION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_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_PLACEMENT_SHAPE_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.SCAN_DATA_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.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION'];
deprecated_constructed_data_types : SET OF STRING :=
['angle_direction_reference_select',
'approved_item',
'certified_item',
'change_request_item',
'contracted_item',
'cc_classified_item',
'date_time_item',
'cc_person_organization_item',
'cc_specified_item',
'start_request_item',
'work_item'];
deprecated_entity_data_types : SET OF STRING :=
['angle_direction_reference',
'cc_design_approval',
'cc_design_certification',
'cc_design_contract',
'cc_design_date_and_time_assignment',
'cc_design_person_and_organization_assignment',
'cc_design_security_classification',
'cc_design_specification_reference',
'change',
'change_request',
'design_context',
'design_make_from_relationship',
'mechanical_context',
'min_and_major_ply_orientation_basis',
'product_category_relationship',
'start_request',
'start_work',
'supplied_part_relationship'];
deprecated_interfaced_data_types : SET OF STRING :=
['document_with_class',
'ordinal_date',
'product_definition_formation_with_specified_source',
'week_of_year_and_day_date'];
dt_deprecated_entity_data_types : SET OF STRING := ['externally_defined_dimension_definition'];
dummy_gri : geometric_representation_item := representation_item('') || geometric_representation_item();
dummy_tri : topological_representation_item := representation_item('') || topological_representation_item();
gt_deprecated_entity_data_types : SET OF STRING := ['dimension_related_tolerance_zone_element'];
pre_defined_picture_representation_types : SET[0:?] OF STRING :=
['JPEG',
'PNG',
'TIFF',
'BMP',
'GIF'];
schema_prefix : STRING := 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.';
the_binarys : elementary_space := make_elementary_space(es_binarys);
the_booleans : elementary_space := make_elementary_space(es_booleans);
the_complex_numbers : elementary_space := make_elementary_space(es_complex_numbers);
the_complex_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_complex_numbers);
the_empty_atom_based_tuple : atom_based_tuple := [];
the_empty_atom_based_value : atom_based_value := the_empty_atom_based_tuple;
the_empty_maths_tuple : maths_tuple := [];
the_empty_maths_value : maths_value := the_empty_maths_tuple;
the_empty_space : finite_space := make_finite_space([]);
the_generics : elementary_space := make_elementary_space(es_generics);
the_integer_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_integers);
the_integers : elementary_space := make_elementary_space(es_integers);
the_logicals : elementary_space := make_elementary_space(es_logicals);
the_maths_spaces : elementary_space := make_elementary_space(es_maths_spaces);
the_neg1_one_interval : finite_real_interval := make_finite_real_interval(-1.0, closed, 1.0, closed);
the_neghalfpi_halfpi_interval : finite_real_interval := make_finite_real_interval(-0.5 * PI, closed, 0.5 * PI, closed);
the_negpi_pi_interval : finite_real_interval := make_finite_real_interval(-PI, open, PI, closed);
the_nonnegative_reals : real_interval_from_min := make_real_interval_from_min(0.0, closed);
the_numbers : elementary_space := make_elementary_space(es_numbers);
the_real_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_reals);
the_reals : elementary_space := make_elementary_space(es_reals);
the_strings : elementary_space := make_elementary_space(es_strings);
the_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_generics);
the_zero_one_interval : finite_real_interval := make_finite_real_interval(0.0, closed, 1.0, closed);
the_zero_pi_interval : finite_real_interval := make_finite_real_interval(0.0, closed, PI, closed);
the_zero_tuple_space : listed_product_space := make_listed_product_space([]);
END_CONSTANT;
TYPE a3m_accuracy_associated_target_select =
SELECT
(a3m_data_quality_criteria_representation,
a3m_data_quality_criterion,
a3m_data_quality_inspection_result,
a3m_data_quality_inspection_result_representation);
END_TYPE;
TYPE a3m_accuracy_type_name =
ENUMERATION
OF
(atns_area_measure,
atns_length_measure,
atns_others,
atns_plane_angle_measure,
atns_volume_measure,
atna_others);
END_TYPE;
TYPE a3m_data_quality_accuracy_type_name =
ENUMERATION
OF
(a3mdqa_inapt);
END_TYPE;
TYPE a3m_data_quality_inspected_element_type_name =
ENUMERATION
OF
(pmidqi_datum,
pmidqi_datum_pair,
pmidqi_datum_system,
pmidqi_datum_target,
pmidqi_dimensional_location,
pmidqi_dimensional_size,
pmidqi_geometric_tolerance,
pmidqi_others,
pmidqi_shape_aspect,
tsdqi_adjacent_triangle_pair,
tsdqi_adjacent_triangulated_face_pair,
tsdqi_representative_triangle,
tsdqi_others,
tsdqi_tessellated_connecting_edge,
tsdqi_tessellated_shell,
tsdqi_tessellated_solid,
tsdqi_triangle_edge,
tsdqi_triangulated_face,
tsdqi_triangle_vertex);
END_TYPE;
TYPE a3m_data_quality_inspected_model_select =
SELECT
(draughting_model,
shape_representation);
END_TYPE;
TYPE a3m_data_quality_measured_data_type_name =
ENUMERATION
OF
(pmidqm_boolean_value,
pmidqm_positive_length_measure,
pmidqm_positive_plane_angle_measure,
pmidqm_others,
tsdqm_area_measure,
tsdqm_boolean_value,
tsdqm_count_measure,
tsdqm_others,
tsdqm_positive_length_measure,
tsdqm_positive_plane_angle_measure,
tsdqm_ratio_measure);
END_TYPE;
TYPE a3m_data_quality_measured_value_select =
SELECT
(area_measure,
boolean_value,
count_measure,
positive_length_measure,
positive_plane_angle_measure,
ratio_measure);
END_TYPE;
TYPE a3m_data_quality_type_name_for_location_of_extreme_value =
ENUMERATION
OF
(tsdqe_others,
tsdqe_set_of_representative_triangle,
tsdqe_set_of_tessellated_shell,
tsdqe_set_of_triangle_edge,
tsdqe_set_of_triangulated_face,
tsdqe_triangle_vertex);
END_TYPE;
TYPE a3m_detected_difference_type_name =
ENUMERATION
OF
(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,
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);
END_TYPE;
TYPE a3m_element_type_name =
ENUMERATION
OF
(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,
etna_product_definition_or_reference,
etna_shape_representation,
etna_others);
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_location_of_extreme_value_select =
SELECT
(tsdq_location_of_extreme_value);
END_TYPE;
TYPE a3m_measured_data_type_name =
ENUMERATION
OF
(mdns_area_measure,
mdns_boolean_value,
mdns_length_measure,
mdns_others,
mdns_plane_angle_measure,
mdns_volume_measure,
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);
END_TYPE;
TYPE a3ma_accuracy_type_name =
a3m_accuracy_type_name;
WHERE
WR1: SELF <> a3m_accuracy_type_name.atns_area_measure;
WR2: SELF <> a3m_accuracy_type_name.atns_length_measure;
WR3: SELF <> a3m_accuracy_type_name.atns_others;
WR4: SELF <> a3m_accuracy_type_name.atns_plane_angle_measure;
WR5: SELF <> a3m_accuracy_type_name.atns_volume_measure;
END_TYPE;
TYPE a3ma_detected_difference_type_name =
a3m_detected_difference_type_name;
WHERE
WR1: SELF <> a3m_detected_difference_type_name.ddns_area_measure;
WR2: SELF <> a3m_detected_difference_type_name.ddns_cartesian_point;
WR3: SELF <> a3m_detected_difference_type_name.ddns_connected_face_set;
WR4: SELF <> a3m_detected_difference_type_name.ddns_count_measure;
WR5: SELF <> a3m_detected_difference_type_name.ddns_edge;
WR6: SELF <> a3m_detected_difference_type_name.ddns_face;
WR7: SELF <> a3m_detected_difference_type_name.ddns_five_count_measure;
WR8: SELF <> a3m_detected_difference_type_name.ddns_four_count_measure;
WR9: SELF <> a3m_detected_difference_type_name.ddns_length_measure;
WR10: SELF <> a3m_detected_difference_type_name.ddns_no_element;
WR11: SELF <> a3m_detected_difference_type_name.ddns_others;
WR12: SELF <> a3m_detected_difference_type_name.ddns_point_on_curve;
WR13: SELF <> a3m_detected_difference_type_name.ddns_point_on_surface;
WR14: SELF <> a3m_detected_difference_type_name.ddns_several_edges;
WR15: SELF <> a3m_detected_difference_type_name.ddns_several_faces;
WR16: SELF <> a3m_detected_difference_type_name.ddns_three_count_measure;
WR17: SELF <> a3m_detected_difference_type_name.ddns_two_cartesian_points;
WR18: SELF <> a3m_detected_difference_type_name.ddns_two_count_measure;
WR19: SELF <> a3m_detected_difference_type_name.ddns_volume_measure;
END_TYPE;
TYPE a3ma_element_type_name =
a3m_element_type_name;
WHERE
WR1: SELF <> a3m_element_type_name.etns_connected_edge_set;
WR2: SELF <> a3m_element_type_name.etns_connected_face_set;
WR3: SELF <> a3m_element_type_name.etns_external_representation_item;
WR4: SELF <> a3m_element_type_name.etns_manifold_solid_brep;
WR5: SELF <> a3m_element_type_name.etns_others;
WR6: SELF <> a3m_element_type_name.etns_point_cloud_dataset;
WR7: SELF <> a3m_element_type_name.etns_shell_based_surface_model;
WR8: SELF <> a3m_element_type_name.etns_shell_based_wireframe_model;
WR9: SELF <> a3m_element_type_name.etns_vertex_point;
END_TYPE;
TYPE a3ma_measured_data_type_name =
a3m_measured_data_type_name;
WHERE
WR1: SELF <> a3m_measured_data_type_name.mdns_area_measure;
WR2: SELF <> a3m_measured_data_type_name.mdns_boolean_value;
WR3: SELF <> a3m_measured_data_type_name.mdns_length_measure;
WR4: SELF <> a3m_measured_data_type_name.mdns_others;
WR5: SELF <> a3m_measured_data_type_name.mdns_plane_angle_measure;
WR6: SELF <> a3m_measured_data_type_name.mdns_volume_measure;
END_TYPE;
TYPE a3ms_accuracy_type_name =
a3m_accuracy_type_name;
WHERE
WR1: SELF <> a3m_accuracy_type_name.atna_others;
END_TYPE;
TYPE a3ms_detected_difference_type_name =
a3m_detected_difference_type_name;
WHERE
WR1: SELF <> a3m_detected_difference_type_name.ddna_a3ms_inspected_equivalence_element_select;
WR2: SELF <> a3m_detected_difference_type_name.ddna_assembly_component_usage;
WR3: SELF <> a3m_detected_difference_type_name.ddna_binary_assembly_constraint;
WR4: SELF <> a3m_detected_difference_type_name.ddna_cartesian_point;
WR5: SELF <> a3m_detected_difference_type_name.ddna_context_dependent_shape_representation;
WR6: SELF <> a3m_detected_difference_type_name.ddna_count_measure;
WR7: SELF <> a3m_detected_difference_type_name.ddna_multi_level_reference_designator;
WR8: SELF <> a3m_detected_difference_type_name.ddna_no_element;
WR9: SELF <> a3m_detected_difference_type_name.ddna_others;
WR10: SELF <> a3m_detected_difference_type_name.ddna_volume_measure;
END_TYPE;
TYPE a3ms_element_type_name =
a3m_element_type_name;
WHERE
WR1: SELF <> a3m_element_type_name.etna_others;
WR2: SELF <> a3m_element_type_name.etna_product_definition_or_reference;
WR3: SELF <> a3m_element_type_name.etna_shape_representation;
END_TYPE;
TYPE a3ms_inspected_equivalence_element_select =
inspected_equivalence_element_select;
WHERE
WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OR_REFERENCE' IN TYPEOF(SELF));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF));
END_TYPE;
TYPE a3ms_measured_data_type_name =
a3m_measured_data_type_name;
WHERE
WR1: SELF <> a3m_measured_data_type_name.mdna_boolean_value;
WR2: SELF <> a3m_measured_data_type_name.mdna_context_dependent_measure;
WR3: SELF <> a3m_measured_data_type_name.mdna_length_measure;
WR4: SELF <> a3m_measured_data_type_name.mdna_length_measure_and_context_dependent_measure;
WR5: SELF <> a3m_measured_data_type_name.mdna_others;
WR6: SELF <> a3m_measured_data_type_name.mdna_plane_angle_measure;
WR7: SELF <> a3m_measured_data_type_name.mdna_volume_measure;
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_directive_relationship,
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_organization_assignment,
applied_organizational_project_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,
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,
characterized_object_relationship,
class,
class_system,
classification_item,
condition,
conditional_effectivity,
configuration_design,
configuration_effectivity,
configuration_item,
configuration_item_relationship,
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,
effectivity_relationship,
evaluated_characteristic,
evaluated_characteristic_of_product_as_individual_test_result,
event_occurrence,
evidence,
exclusive_product_concept_feature_category,
executed_action,
externally_defined_class,
frozen_assignment,
general_property,
general_property_relationship,
group,
group_relationship,
hierarchical_interface_connection,
identification_assignment_relationship,
identification_item,
inclusion_product_concept_feature,
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,
observation_consequence,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_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_concept_relationship,
product_definition,
product_definition_element_relationship,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_occurrence,
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,
requirement_view_definition_relationship,
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,
verification_relationship,
versioned_action_request,
versioned_action_request_relationship);
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_organization_assignment,
applied_organizational_project_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,
assembly_component_usage,
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,
risk_perception,
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 advanced_brep_shape_representation_items_select =
SELECT
(axis2_placement_3d,
manifold_solid_brep,
mapped_item);
END_TYPE;
TYPE advanced_face_geometry_select =
SELECT
(b_spline_surface,
elementary_surface,
swept_surface);
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,
organization_relationship,
organizational_project_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_organization_assignment,
applied_organizational_project_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,
datum,
datum_system,
dimensional_location,
dimensional_size,
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_class,
externally_defined_general_property,
frozen_assignment,
general_property,
general_property_relationship,
geometric_tolerance,
group,
group_relationship,
identification_assignment_relationship,
in_zone,
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,
material_designation,
material_designation_characterization,
measure_representation_item,
mechanical_design_geometric_presentation_representation,
observation,
organization,
organization_relationship,
organizational_address,
organizational_project,
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 approval_scope_item =
SELECT
(executed_action);
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,
square,
rectangular,
cylindrical,
spherical);
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_organization_assignment,
applied_organizational_project_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_tuple =
LIST OF atom_based_value;
END_TYPE;
TYPE atom_based_value =
SELECT
(atom_based_tuple,
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_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
certification,
context_dependent_unit,
contract,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
document_file,
document_relationship,
effectivity,
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,
organization_relationship,
organizational_address,
organizational_project_relationship,
person_and_organization,
person_and_organization_address,
product,
product_category,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
property_definition_relationship,
property_definition_representation,
representation,
representation_context,
representation_item,
security_classification,
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,
curve_style_font,
data_environment,
date_role,
date_time_role,
descriptive_representation_item,
dimensional_location,
document_relationship,
document_usage_role,
draughting_callout_relationship,
draughting_model_item_association,
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,
organization_relationship,
organization_role,
organizational_project,
organizational_project_relationship,
organizational_project_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
(boolean_result,
csg_primitive,
solid_model);
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 bottom_condition_target =
SELECT
(basic_round_hole,
counterbore_hole_definition,
counterdrill_hole_definition,
countersink_hole_definition);
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;
WHERE
IP1: ;
END_TYPE;
TYPE box_width =
positive_ratio_measure;
END_TYPE;
TYPE brep_shape_representation_items_select =
SELECT
(axis2_placement_3d,
manifold_solid_brep,
mapped_item);
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,
action_relationship,
alternate_product_relationship,
analysis_assignment,
applied_action_method_assignment,
applied_qualification_type_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_organization_assignment,
applied_organizational_project_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,
identification_item,
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_method_relationship,
action_relationship,
alternate_product_relationship,
alternative_solution_relationship,
applied_external_identification_assignment_relationship,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
assembly_component_usage,
contract,
definitional_product_definition_usage,
definitional_representation_relationship,
draped_orientation_angle,
event_occurrence_relationship,
generic_property_relationship,
geometry_to_topology_model_association,
group_relationship,
laid_orientation_angle,
make_from_usage_option,
next_assembly_usage_occurrence,
organization_relationship,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
product_definition_usage,
product_planned_to_realized,
product_relationship,
promissory_usage_occurrence,
representation_relationship,
representation_relationship_with_transformation,
requirement_view_definition_relationship,
shape_aspect_relationship,
shape_representation_relationship,
topology_to_geometry_model_association);
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,
action_resource_requirement_relationship);
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,
action_resource_requirement,
action_resource_requirement_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_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_person_type_assignment,
applied_person_type_definition_assignment,
applied_position_in_organization_assignment,
applied_position_in_organization_type_assignment,
applied_security_classification_assignment,
applied_state_observed_assignment,
applied_state_type_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,
dimensional_size,
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,
experience_type,
feature_definition,
general_feature,
general_property,
general_property_relationship,
generic_property_relationship,
geometric_tolerance,
group,
group_relationship,
identification_assignment,
identification_assignment_relationship,
in_zone,
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,
language,
link_motion_relationship,
local_time,
location,
location_relationship,
location_representation_relationship,
material_designation,
material_designation_characterization,
measure_qualification,
measure_representation_item,
measure_with_unit,
message_relationship,
multi_language_attribute_assignment,
named_unit,
observation,
observation_relationship,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_relationship,
person,
person_and_organization,
person_and_organization_address,
person_type,
person_type_definition,
person_type_definition_relationship,
plus_minus_tolerance,
position_in_organization,
position_in_organization_relationship,
position_in_organization_type,
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,
qualification_type,
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 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 csg_shape_representation_select =
SELECT
(axis2_placement_3d,
csg_solid,
extruded_face_solid,
mapped_item,
revolved_face_solid,
solid_replica);
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 data_equivalence_inspected_element_pair_select =
SELECT
(data_equivalence_inspected_element_pair);
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_experience_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_qualification_type_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,
experience,
externally_defined_class,
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,
observation,
organization_relationship,
organizational_address,
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_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_experience_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_qualification_type_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,
experience,
externally_defined_class,
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,
organization_relationship,
organizational_address,
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_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,
spherical,
distance,
projected);
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 des_apll_point_select =
SELECT
(apll_point,
apll_point_with_surface);
END_TYPE;
TYPE des_apll_point_symbol =
ENUMERATION
OF
(circle,
dot,
internal_pair_forward_arrowhead,
internal_pair_reverse_arrowhead,
none,
positive_arrowhead,
triangle);
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,
organization_role,
organizational_project,
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_organization_assignment,
applied_organizational_project_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,
colour_specification,
configuration_design,
configuration_effectivity,
configuration_item,
configuration_item_relationship,
contract,
contract_relationship,
curve_style_font,
data_environment,
date_and_time_assignment,
date_assignment,
dimensional_location,
directed_action_assignment,
document_file,
document_relationship,
draughting_callout_relationship,
draughting_model_item_association,
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,
geometric_tolerance,
global_uncertainty_assigned_context,
global_unit_assigned_context,
group,
group_relationship,
location,
location_relationship,
material_designation_characterization,
measure_qualification,
measure_with_unit,
message_relationship,
observation_consequence,
organization,
organization_relationship,
organization_type,
organizational_address,
organizational_project,
organizational_project_relationship,
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 dimensional_location_with_normal_constraint_type =
ENUMERATION
OF
(uniform_thickness_cone_cone,
uniform_thickness_cylinder_cylinder,
uniform_thickness_face_surface_face_surface,
uniform_thickness_plane_plane,
uniform_thickness_revolute_revolute,
uniform_thickness_sphere_sphere,
uniform_thickness_surface_surface,
uniform_thickness_torus_torus);
END_TYPE;
TYPE directed_tolerance_zone_type =
ENUMERATION
OF
(angular,
perpendicular,
parallel,
including,
symmetrical_to);
END_TYPE;
TYPE direction_count_select =
SELECT
(u_direction_count,
v_direction_count);
END_TYPE;
TYPE direction_feature_application_type =
ENUMERATION
OF
(perpendicular,
parallel,
inclined,
runout);
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_organization_assignment,
applied_organizational_project_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,
in_zone,
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,
material_designation,
material_designation_characterization,
measure_representation_item,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_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 dotted_express_identifier =
STRING;
WHERE
SYNTAX: dotted_identifiers_syntax(SELF);
END_TYPE;
TYPE draughting_callout_element =
SELECT
(annotation_curve_occurrence,
annotation_fill_area_occurrence,
annotation_placeholder_occurrence,
annotation_symbol_occurrence,
annotation_text_occurrence,
external_image_placement_in_callout,
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_organization_assignment,
applied_organizational_project_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,
datum_system_for_composite_group_element,
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,
group_geometric_tolerance_with_datum_system_reference,
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_based_topological_representation_with_length_constraint_items =
SELECT
(connected_edge_set,
path,
vertex_point);
END_TYPE;
TYPE edge_or_curve =
SELECT
(curve,
edge_curve);
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_organization_assignment,
applied_organizational_project_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_class,
externally_defined_general_property,
frozen_assignment,
general_property,
general_property_relationship,
generic_property_relationship,
geometric_tolerance,
group,
identification_assignment_relationship,
in_zone,
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,
link_motion_relationship,
material_designation,
material_designation_characterization,
measure_representation_item,
mechanical_design_geometric_presentation_representation,
multi_language_attribute_assignment,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_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,
externally_defined_class,
general_organizational_data_select,
general_property,
material_designation,
mechanical_design_geometric_presentation_representation,
organization_relationship,
organizational_project,
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_organization_assignment,
applied_organizational_project_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 exchange_identification_context_select =
SELECT
(identification_assignment,
organization);
END_TYPE;
TYPE experience_item =
SELECT
(action_actual,
action_resource,
experience_type,
experience_type_classification_item);
END_TYPE;
TYPE experience_type_classification_item =
classification_item;
WHERE
WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION' IN TYPEOF(SELF));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE' IN TYPEOF(SELF));
WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE_RELATIONSHIP' IN TYPEOF(SELF));
WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD' IN TYPEOF(SELF));
WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP' IN TYPEOF(SELF));
WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_PROPERTY' IN TYPEOF(SELF));
WR7: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_PROPERTY_REPRESENTATION' IN TYPEOF(SELF));
WR8: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP' IN TYPEOF(SELF));
WR9: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_REQUEST_SOLUTION' IN TYPEOF(SELF));
WR10: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_REQUEST_STATUS' IN TYPEOF(SELF));
WR11: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RESOURCE' IN TYPEOF(SELF));
WR12: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RESOURCE_RELATIONSHIP' IN TYPEOF(SELF));
WR13: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RESOURCE_REQUIREMENT' IN TYPEOF(SELF));
WR14: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RESOURCE_REQUIREMENT_RELATIONSHIP' IN TYPEOF(SELF));
WR15: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADDRESS' IN TYPEOF(SELF));
WR16: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATE_PRODUCT_RELATIONSHIP' IN TYPEOF(SELF));
WR17: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATIVE_SOLUTION_RELATIONSHIP' IN TYPEOF(SELF));
WR18: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANALYSIS_ASSIGNMENT' IN TYPEOF(SELF));
WR19: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(SELF));
WR20: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_METHOD_ASSIGNMENT' IN TYPEOF(SELF));
WR21: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_REQUEST_ASSIGNMENT' IN TYPEOF(SELF));
WR22: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_APPROVAL_ASSIGNMENT' IN TYPEOF(SELF));
WR23: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_CERTIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
WR24: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_CLASSIFICATION_ASSIGNMENT_RELATIONSHIP' IN TYPEOF(SELF));
WR25: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_CONTRACT_ASSIGNMENT' IN TYPEOF(SELF));
WR26: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DATE_AND_TIME_ASSIGNMENT' IN TYPEOF(SELF));
WR27: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DATE_ASSIGNMENT' IN TYPEOF(SELF));
WR28: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DESCRIPTION_TEXT_ASSIGNMENT' IN TYPEOF(SELF));
WR29: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DESCRIPTION_TEXT_ASSIGNMENT_RELATIONSHIP' IN TYPEOF(SELF));
WR30: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE' IN TYPEOF(SELF));
WR31: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT' IN TYPEOF(SELF));
WR32: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF));
WR33: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EVENT_OCCURRENCE_ASSIGNMENT' IN TYPEOF(SELF));
WR34: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
WR35: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP' IN
TYPEOF(SELF));
WR36: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_IDENTIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
WR37: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_INEFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF));
WR38: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ORGANIZATIONAL_PROJECT_ASSIGNMENT' IN TYPEOF(SELF));
WR39: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ORGANIZATION_ASSIGNMENT' IN TYPEOF(SELF));
WR40: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT' IN TYPEOF(SELF));
WR41: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_PERSON_TYPE_ASSIGNMENT' IN TYPEOF(SELF));
WR42: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_PERSON_TYPE_DEFINITION_ASSIGNMENT' IN TYPEOF(SELF));
WR43: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_POSITION_IN_ORGANIZATION_ASSIGNMENT' IN TYPEOF(SELF));
WR44: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_POSITION_IN_ORGANIZATION_TYPE_ASSIGNMENT' IN TYPEOF(SELF));
WR45: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
WR46: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_STATE_OBSERVED_ASSIGNMENT' IN TYPEOF(SELF));
WR47: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_STATE_TYPE_ASSIGNMENT' IN TYPEOF(SELF));
WR48: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT' IN TYPEOF(SELF));
WR49: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_USAGE_RIGHT' IN TYPEOF(SELF));
WR50: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPROVAL' IN TYPEOF(SELF));
WR51: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPROVAL_PERSON_ORGANIZATION' IN TYPEOF(SELF));
WR52: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPROVAL_RELATIONSHIP' IN TYPEOF(SELF));
WR53: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPROVAL_STATUS' IN TYPEOF(SELF));
WR54: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE' IN TYPEOF(SELF));
WR55: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSIGNMENT_OBJECT_RELATIONSHIP' IN TYPEOF(SELF));
WR56: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT' IN TYPEOF(SELF));
WR57: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREAKDOWN_CONTEXT' IN TYPEOF(SELF));
WR58: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREAKDOWN_ELEMENT_REALIZATION' IN TYPEOF(SELF));
WR59: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREAKDOWN_OF' IN TYPEOF(SELF));
WR60: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CALENDAR_DATE' IN TYPEOF(SELF));
WR61: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CERTIFICATION' IN TYPEOF(SELF));
WR62: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_ELEMENT_SEQUENCE' IN TYPEOF(SELF));
WR63: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_GROUP' IN TYPEOF(SELF));
WR64: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS' IN TYPEOF(SELF));
WR65: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT' IN TYPEOF(SELF));
WR66: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN TYPEOF(SELF));
WR67: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFIED_ITEM' IN TYPEOF(SELF));
WR68: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN' IN TYPEOF(SELF));
WR69: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF));
WR70: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_ITEM' IN TYPEOF(SELF));
WR71: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_ITEM_RELATIONSHIP' IN TYPEOF(SELF));
WR72: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_UNIT' IN TYPEOF(SELF));
WR73: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT' IN TYPEOF(SELF));
WR74: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT_RELATIONSHIP' IN TYPEOF(SELF));
WR75: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(SELF));
WR76: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATE_AND_TIME' IN TYPEOF(SELF));
WR77: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATE_AND_TIME_ASSIGNMENT' IN TYPEOF(SELF));
WR78: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATE_ASSIGNMENT' IN TYPEOF(SELF));
WR79: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINITIONAL_REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
WR80: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT' IN TYPEOF(SELF));
WR81: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(SELF));
WR82: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN TYPEOF(SELF));
WR83: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTED_ACTION' IN TYPEOF(SELF));
WR84: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTED_ACTION_ASSIGNMENT' IN TYPEOF(SELF));
WR85: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_FILE' IN TYPEOF(SELF));
WR86: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_RELATIONSHIP' IN TYPEOF(SELF));
WR87: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_TYPE' IN TYPEOF(SELF));
WR88: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY' IN TYPEOF(SELF));
WR89: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY_RELATIONSHIP' IN TYPEOF(SELF));
WR90: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENVELOPE' IN TYPEOF(SELF));
WR91: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENVELOPE_RELATIONSHIP' IN TYPEOF(SELF));
WR92: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EVALUATED_CHARACTERISTIC' IN TYPEOF(SELF));
WR93: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EVENT_OCCURRENCE' IN TYPEOF(SELF));
WR94: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EVENT_OCCURRENCE_RELATIONSHIP' IN TYPEOF(SELF));
WR95: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EVIDENCE' IN TYPEOF(SELF));
WR96: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXECUTED_ACTION' IN TYPEOF(SELF));
WR97: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_DEFINITION' IN TYPEOF(SELF));
WR98: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_FEATURE' IN TYPEOF(SELF));
WR99: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN TYPEOF(SELF));
WR100: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_RELATIONSHIP' IN TYPEOF(SELF));
WR101: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_PROPERTY_RELATIONSHIP' IN TYPEOF(SELF));
WR102: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
WR103: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
WR104: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP_RELATIONSHIP' IN TYPEOF(SELF));
WR105: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IDENTIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
WR106: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP' IN TYPEOF(SELF));
WR107: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INFORMATION_RIGHT' IN TYPEOF(SELF));
WR108: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INFORMATION_USAGE_RIGHT' IN TYPEOF(SELF));
WR109: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTION' IN TYPEOF(SELF));
WR110: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_AS_PLANNED' IN TYPEOF(SELF));
WR111: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_AS_REALIZED' IN TYPEOF(SELF));
WR112: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_DESIGN' IN TYPEOF(SELF));
WR113: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_DESIGN_TO_PLANNED' IN TYPEOF(SELF));
WR114: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_DESIGN_TO_REALIZED' IN TYPEOF(SELF));
WR115: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_OCCURRENCE' IN TYPEOF(SELF));
WR116: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_CONNECTOR_PLANNED_TO_REALIZED' IN TYPEOF(SELF));
WR117: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_DEFINITION_CONNECTION' IN TYPEOF(SELF));
WR118: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERFACE_DEFINITION_FOR' IN TYPEOF(SELF));
WR119: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IN_ZONE' IN TYPEOF(SELF));
WR120: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LANGUAGE' IN TYPEOF(SELF));
WR121: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINK_MOTION_RELATIONSHIP' IN TYPEOF(SELF));
WR122: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCAL_TIME' IN TYPEOF(SELF));
WR123: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION' IN TYPEOF(SELF));
WR124: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_RELATIONSHIP' IN TYPEOF(SELF));
WR125: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
WR126: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_DESIGNATION' IN TYPEOF(SELF));
WR127: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_DESIGNATION_CHARACTERIZATION' IN TYPEOF(SELF));
WR128: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_QUALIFICATION' IN TYPEOF(SELF));
WR129: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(SELF));
WR130: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_WITH_UNIT' IN TYPEOF(SELF));
WR131: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MESSAGE_RELATIONSHIP' IN TYPEOF(SELF));
WR132: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT' IN TYPEOF(SELF));
WR133: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAMED_UNIT' IN TYPEOF(SELF));
WR134: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OBSERVATION' IN TYPEOF(SELF));
WR135: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OBSERVATION_RELATIONSHIP' IN TYPEOF(SELF));
WR136: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATION' IN TYPEOF(SELF));
WR137: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATIONAL_ADDRESS' IN TYPEOF(SELF));
WR138: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATIONAL_PROJECT' IN TYPEOF(SELF));
WR139: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATIONAL_PROJECT_RELATIONSHIP' IN TYPEOF(SELF));
WR140: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATION_RELATIONSHIP' IN TYPEOF(SELF));
WR141: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON' IN TYPEOF(SELF));
WR142: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_AND_ORGANIZATION' IN TYPEOF(SELF));
WR143: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_AND_ORGANIZATION_ADDRESS' IN TYPEOF(SELF));
WR144: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_TYPE' IN TYPEOF(SELF));
WR145: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_TYPE_DEFINITION' IN TYPEOF(SELF));
WR146: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_TYPE_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
WR147: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_MINUS_TOLERANCE' IN TYPEOF(SELF));
WR148: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_IN_ORGANIZATION' IN TYPEOF(SELF));
WR149: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_IN_ORGANIZATION_RELATIONSHIP' IN TYPEOF(SELF));
WR150: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_IN_ORGANIZATION_TYPE' IN TYPEOF(SELF));
WR151: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN TYPEOF(SELF));
WR152: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN' IN TYPEOF(SELF));
WR153: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PRODUCT_ASSOCIATION' IN TYPEOF(SELF));
WR154: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(SELF));
WR155: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT' IN TYPEOF(SELF));
WR156: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_CONTEXT' IN TYPEOF(SELF));
WR157: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
WR158: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_ASSOCIATION' IN TYPEOF(SELF));
WR159: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(SELF));
WR160: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(SELF));
WR161: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_RELATIONSHIP' IN TYPEOF(SELF));
WR162: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF));
WR163: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT' IN TYPEOF(SELF));
WR164: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF));
WR165: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION_RELATIONSHIP' IN TYPEOF(SELF));
WR166: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
WR167: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF));
WR168: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE_RELATIONSHIP' IN TYPEOF(SELF));
WR169: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DESIGN_TO_INDIVIDUAL' IN TYPEOF(SELF));
WR170: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DESIGN_VERSION_TO_INDIVIDUAL' IN TYPEOF(SELF));
WR171: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_GROUP' IN TYPEOF(SELF));
WR172: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_GROUP_MEMBERSHIP' IN TYPEOF(SELF));
WR173: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_GROUP_RELATIONSHIP' IN TYPEOF(SELF));
WR174: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN' IN TYPEOF(SELF));
WR175: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATIONSHIP' IN TYPEOF(SELF));
WR176: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN TYPEOF(SELF));
WR177: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION' IN TYPEOF(SELF));
WR178: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUALIFICATION_TYPE' IN TYPEOF(SELF));
WR179: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' IN TYPEOF(SELF));
WR180: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_CONTEXT' IN TYPEOF(SELF));
WR181: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(SELF));
WR182: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
WR183: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_ASSIGNMENT' IN TYPEOF(SELF));
WR184: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE' IN TYPEOF(SELF));
WR185: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_SOURCE' IN TYPEOF(SELF));
WR186: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESOURCE_PROPERTY' IN TYPEOF(SELF));
WR187: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RETENTION' IN TYPEOF(SELF));
WR188: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SATISFIES_REQUIREMENT' IN TYPEOF(SELF));
WR189: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION' IN TYPEOF(SELF));
WR190: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION_LEVEL' IN TYPEOF(SELF));
WR191: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF(SELF));
WR192: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP' IN TYPEOF(SELF));
WR193: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_FEATURE_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
WR194: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP' IN
TYPEOF(SELF));
WR195: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_OBSERVED' IN TYPEOF(SELF));
WR196: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_OBSERVED_ASSIGNMENT' IN TYPEOF(SELF));
WR197: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_OBSERVED_RELATIONSHIP' IN TYPEOF(SELF));
WR198: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_OBSERVED_ROLE' IN TYPEOF(SELF));
WR199: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_TYPE' IN TYPEOF(SELF));
WR200: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_TYPE_ASSIGNMENT' IN TYPEOF(SELF));
WR201: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_TYPE_RELATIONSHIP' IN TYPEOF(SELF));
WR202: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_MESSAGE' IN TYPEOF(SELF));
WR203: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_INTERVAL_RELATIONSHIP' IN TYPEOF(SELF));
WR204: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TYPE_QUALIFIER' IN TYPEOF(SELF));
WR205: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNCERTAINTY_MEASURE_WITH_UNIT' IN TYPEOF(SELF));
WR206: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.USAGE_ASSOCIATION' IN TYPEOF(SELF));
WR207: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALIDATION' IN TYPEOF(SELF));
WR208: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERIFICATION' IN TYPEOF(SELF));
WR209: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERSIONED_ACTION_REQUEST' IN TYPEOF(SELF));
WR210: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERSIONED_ACTION_REQUEST_RELATIONSHIP' IN TYPEOF(SELF));
END_TYPE;
TYPE experience_type_item =
SELECT
(action_method,
action_resource_requirement,
executed_action,
organization,
person,
person_and_organization);
END_TYPE;
TYPE express_identifier =
dotted_express_identifier;
WHERE
SYNTAX: dot_count(SELF) = 0;
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 extent_enumeration =
ENUMERATION
OF
(invalid,
zero,
finite_non_zero,
infinite);
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_component_usage,
assembly_joint,
attribute_language_assignment,
breakdown_context,
calendar_date,
certification,
class,
composite_curve,
condition,
configuration_effectivity,
contract,
coordinated_universal_time_offset,
curve,
date_and_time,
date_and_time_assignment,
date_assignment,
derived_unit,
derived_unit_element,
document_file,
effectivity,
evaluated_characteristic_of_product_as_individual_test_result,
event_occurrence,
evidence,
exclusive_product_concept_feature_category,
executed_action,
external_source,
externally_defined_class,
externally_defined_context_dependent_unit,
externally_defined_conversion_based_unit,
externally_defined_general_property,
externally_defined_picture_representation_item,
externally_defined_representation_item,
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,
language,
local_time,
loop,
material_designation,
measure_with_unit,
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_context,
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,
usage_association,
validation,
verification,
versioned_action_request,
vertex_point);
END_TYPE;
TYPE face_or_surface =
SELECT
(face_surface,
surface);
END_TYPE;
TYPE faceted_brep_shape_representation_items_select =
SELECT
(axis2_placement_3d,
faceted_brep,
mapped_item);
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_organization_assignment,
applied_organizational_project_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,
organization_relationship,
organizational_address,
organizational_project,
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_attribute_list_select =
SELECT
(address,
person);
END_TYPE;
TYPE generic_attribute_select =
SELECT
(address);
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,
continuous_features,
derived_feature,
each_element,
each_radial_element,
free_state,
individually,
least_material_requirement,
line_element,
major_diameter,
maximum_material_requirement,
minor_diameter,
not_convex,
offset_zone,
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,
separate_zones,
standard_deviation,
statistical_tolerance,
stock,
tangent_plane,
total_range_deviations,
united_feature,
unspecified_angular_tolerance_zone_offset,
unspecified_linear_tolerance_zone_offset,
valley_depth,
variable_angle);
END_TYPE;
TYPE geometric_tolerance_target =
SELECT
(dimensional_location,
dimensional_size,
product_definition_shape,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE geometry_association_item_select =
SELECT
(cartesian_point,
curve,
edge_curve,
placement,
vertex_point);
END_TYPE;
TYPE gps_filtration_enumeration =
ENUMERATION
OF
(alternating_ball,
alternating_disc,
alternating_horizontal_segment,
ball_radius,
closing_ball,
closing_disc,
closing_horizontal_segment,
complex_wavelet,
cutoff_length,
cutoff_upr,
disc_radius,
fourier,
gaussian,
hull,
long_wave_pass_filter,
opening_ball,
opening_disc,
opening_horizontal_segment,
robust_gaussian,
robust_spline,
segment_length,
short_wave_pass_filter,
spline,
spline_wavelet,
urp_number,
wavelength);
END_TYPE;
TYPE gps_filtration_specification_target =
SELECT
(geometric_tolerance,
property_definition,
shape_aspect);
END_TYPE;
TYPE gps_filtration_type =
SELECT
(geometric_tolerance_modifier,
gps_filtration_enumeration);
END_TYPE;
TYPE groupable_item =
SELECT
(action_method,
action_method_relationship,
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,
applied_usage_right,
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,
class,
collection_assignment,
collection_membership,
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,
identification_assignment_relationship,
information_right,
information_usage_right,
instanced_feature,
interface_connection,
interface_connector_definition,
interface_connector_occurrence,
interface_definition_connection,
interface_definition_for,
item_defined_transformation,
language,
local_time,
location_representation_item,
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,
requirement_assignment,
requirement_source,
same_as_external_item_assignment,
satisfies_requirement,
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,
usage_association,
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 hybrid_brep_curve_select =
SELECT
(curve,
tessellated_edge);
END_TYPE;
TYPE hybrid_brep_edge_select =
SELECT
(edge_curve,
tessellated_edge_curve);
END_TYPE;
TYPE hybrid_brep_face_select =
SELECT
(advanced_face,
face_surface,
tessellated_face_surface);
END_TYPE;
TYPE hybrid_brep_point_select =
SELECT
(point,
tessellated_vertex);
END_TYPE;
TYPE hybrid_brep_reference_shape_representation =
SELECT
(advanced_brep_shape_representation,
faceted_brep_shape_representation,
hybrid_brep_shape_representation,
tessellated_brep_shape_representation);
END_TYPE;
TYPE hybrid_brep_shape_assignment_select =
SELECT
(hybrid_brep_edge_assignment,
hybrid_brep_face_assignment,
hybrid_brep_vertex_assignment,
mapped_item);
END_TYPE;
TYPE hybrid_brep_surface_select =
SELECT
(surface,
tessellated_face);
END_TYPE;
TYPE hybrid_brep_vertex_select =
SELECT
(tessellated_vertex_point,
vertex_point);
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,
round_hole_bottom_condition,
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_organization_assignment,
applied_organizational_project_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,
characterized_object,
characterized_object_relationship,
class,
class_system,
configuration_effectivity,
configuration_item,
configuration_item_relationship,
context_dependent_shape_representation,
contract,
contract_relationship,
date_and_time_assignment,
date_assignment,
degenerate_pcurve,
derived_unit,
dimension_related_tolerance_zone_element,
dimensional_characteristic_representation,
dimensional_location,
dimensional_size,
dimensional_size_with_path,
directed_action_assignment,
document_file,
document_relationship,
document_type,
draughting_callout_relationship,
draughting_model,
effectivity,
effectivity_relationship,
envelope,
envelope_relationship,
evaluated_characteristic,
event_occurrence,
event_occurrence_relationship,
evidence,
exclusive_product_concept_feature_category,
executed_action,
founded_item,
general_property,
general_property_relationship,
generic_property_relationship,
geometric_tolerance,
geometric_tolerance_auxiliary_classification,
geometric_tolerance_relationship,
gps_filter,
gps_filtration_specification,
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,
invisibility,
item_identified_representation_usage,
limits_and_fits,
link_motion_relationship,
material_designation,
material_designation_characterization,
measure_qualification,
measure_representation_item,
measure_with_unit,
mechanical_design_geometric_presentation_representation,
message_relationship,
named_unit,
observation,
observation_consequence,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_relationship,
package_product_concept_feature,
person,
person_and_organization,
person_and_organization_address,
plus_minus_tolerance,
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_item,
representation_item_relationship,
representation_relationship,
requirement_assignment,
requirement_for_action_resource,
requirement_source,
retention,
rule_set,
runout_zone_orientation,
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,
tolerance_value,
tolerance_zone_definition,
tolerance_zone_form,
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.DATUM' IN TYPEOF(SELF));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN TYPEOF(SELF));
WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' IN TYPEOF(SELF));
WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN TYPEOF(SELF));
WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN TYPEOF(SELF));
WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
WR7: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF(SELF));
WR8: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TSDQ_INSPECTION_ELEMENT' 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,
datum,
datum_system,
datum_target,
dimensional_location,
dimensional_size,
direction,
edge_curve,
edge_loop,
face_surface,
geometric_tolerance,
global_uncertainty_assigned_context,
global_unit_assigned_context,
group,
manifold_solid_brep,
placement,
point,
presentation_layer_assignment,
representation_item,
shape_aspect,
styled_item,
surface,
tsdq_inspection_element,
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.DATUM' IN TYPEOF(SELF));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN TYPEOF(SELF));
WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' IN TYPEOF(SELF));
WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN TYPEOF(SELF));
WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN TYPEOF(SELF));
WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
WR7: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF(SELF));
WR8: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TSDQ_INSPECTION_ELEMENT' 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_organization_assignment,
applied_organizational_project_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_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
(action_resource,
assembly_component_usage,
document_file,
interface_connection,
interface_connector_occurrence,
interface_definition_connection,
organization,
organization_type,
organizational_project,
person,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_relationship,
product_group);
END_TYPE;
TYPE location_of_extreme_value_select =
SELECT
(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,
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,
slot,
spherical_cap,
step,
thread,
turned_knurl);
END_TYPE;
TYPE magnetic_flux_density_measure =
REAL;
END_TYPE;
TYPE magnetic_flux_measure =
REAL;
END_TYPE;
TYPE manifold_subsurface_shape_representation_select =
SELECT
(axis2_placement_3d,
connected_face_sub_set,
mapped_item);
END_TYPE;
TYPE manifold_surface_shape_representation_select =
SELECT
(axis2_placement_3d,
mapped_item,
shell_based_surface_model);
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_binary =
BINARY;
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_binary,
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,
generic_expression,
maths_tuple);
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_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_time_interval_assignment,
applied_usage_right,
approval,
approval_relationship,
approval_status,
ascribable_state,
ascribable_state_relationship,
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,
curve_style_font,
data_environment,
date_role,
date_time_role,
descriptive_representation_item,
dimensional_location,
directed_action_assignment,
document_file,
document_relationship,
document_usage_role,
draughting_callout_relationship,
draughting_model_item_association,
draughting_title,
effectivity,
effectivity_relationship,
envelope,
envelope_relationship,
evaluated_characteristic,
event_occurrence,
event_occurrence_relationship,
evidence,
exclusive_product_concept_feature_category,
executed_action,
external_source,
externally_defined_class,
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,
in_zone,
information_right,
information_usage_right,
interface_connection,
interface_connector_occurrence,
interface_definition_connection,
interface_definition_for,
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,
organization_relationship,
organization_role,
organizational_address,
organizational_project,
organizational_project_relationship,
organizational_project_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,
observation_consequence,
product,
product_definition);
END_TYPE;
TYPE non_manifold_surface_shape_representation_select =
SELECT
(axis2_placement_3d,
face_based_surface_model,
mapped_item);
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 observation_date =
SELECT
(observation);
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_organization_assignment,
applied_organizational_project_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,
datum,
datum_system,
dimensional_location,
dimensional_size,
document_file,
document_type,
draughting_model,
drawing_revision,
effectivity,
envelope,
event_occurrence,
evidence,
executed_action,
externally_defined_class,
general_property,
general_property_relationship,
geometric_tolerance,
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,
observation,
organization,
organization_relationship,
organizational_address,
organizational_project,
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_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_qualification_type_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,
datum,
datum_system,
dimensional_location,
dimensional_size,
document_file,
document_type,
draughting_model,
drawing_revision,
effectivity,
envelope,
event_occurrence,
evidence,
executed_action,
externally_defined_class,
general_property,
general_property_relationship,
geometric_tolerance,
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,
observation,
organization,
organization_relationship,
organizational_address,
organizational_project,
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,
qualification_type,
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_definition_item =
SELECT
(experience_type,
qualification_type);
END_TYPE;
TYPE person_organization_item =
SELECT
(person);
END_TYPE;
TYPE person_organization_select =
SELECT
(organization,
person,
person_and_organization);
END_TYPE;
TYPE person_type_item =
SELECT
(analysis_assignment);
END_TYPE;
TYPE picture_representation_item_select =
SELECT
(axis2_placement_2d,
planar_box,
styled_item);
END_TYPE;
TYPE planar_curve_select =
SELECT
(conic,
line,
pcurve,
surface_curve,
trimmed_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 pmidq_inspected_element_type_name =
a3m_data_quality_inspected_element_type_name;
WHERE
WR1: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_adjacent_triangle_pair;
WR2: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_adjacent_triangulated_face_pair;
WR3: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_others;
WR4: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_representative_triangle;
WR5: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_tessellated_connecting_edge;
WR6: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_tessellated_shell;
WR7: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_tessellated_solid;
WR8: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_triangle_edge;
WR9: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_triangle_vertex;
WR10: SELF <> a3m_data_quality_inspected_element_type_name.tsdqi_triangulated_face;
END_TYPE;
TYPE pmidq_measured_data_type_name =
a3m_data_quality_measured_data_type_name;
WHERE
WR1: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_area_measure;
WR2: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_boolean_value;
WR3: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_count_measure;
WR4: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_others;
WR5: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_positive_length_measure;
WR6: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_positive_plane_angle_measure;
WR7: SELF <> a3m_data_quality_measured_data_type_name.tsdqm_ratio_measure;
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 position_in_organization_group_assignment_item =
SELECT
(position_in_organization_assignment);
END_TYPE;
TYPE position_in_organization_group_item =
SELECT
(product_definition_formation);
END_TYPE;
TYPE position_in_organization_item =
SELECT
(address,
organization,
organizational_project,
person);
END_TYPE;
TYPE position_in_organization_type_item =
SELECT
(person_type,
position_in_organization);
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,
text_style,
texture_style_tessellation_specification);
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 process_or_process_relationship =
SELECT
(product_definition_process,
property_process,
relationship_with_condition);
END_TYPE;
TYPE product_definition_occurrence_or_reference =
SELECT
(product_definition_occurrence,
product_definition_occurrence_reference);
END_TYPE;
TYPE product_definition_or_assembly_component_usage =
SELECT
(assembly_component_usage,
product_definition);
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
(listed_product_space,
uniform_product_space);
END_TYPE;
TYPE project_group_name_item =
SELECT
(applied_position_in_organization_group_assignment);
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
(elementary_space,
finite_real_interval,
real_interval_from_min,
real_interval_to_max);
WHERE
WR1: NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR (SELF\elementary_space.space_id = es_reals);
END_TYPE;
TYPE relationship_with_condition =
SELECT
(action_method_relationship,
action_relationship,
context_dependent_action_method_relationship,
context_dependent_action_relationship);
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
(action_method,
product_definition_formation,
state_type,
state_type_relationship);
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 representing_relationship =
SELECT
(binary_assembly_constraint,
constrained_kinematic_motion_representation,
free_kinematic_motion_representation);
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 risk_action =
SELECT
(risk_acceptance,
risk_analysis,
risk_assessment,
risk_communication,
risk_control,
risk_estimation,
risk_evaluation,
risk_identification,
risk_treatment);
END_TYPE;
TYPE risk_impact_item =
SELECT
(product,
product_definition_formation);
END_TYPE;
TYPE risk_perception_source_item =
SELECT
(action,
action_method,
product);
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 round_hole_bottom_condition_enum =
ENUMERATION
OF
(spherical,
flat_with_radius,
flat_with_taper,
flat,
conical);
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_class,
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[1:?] 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
(free_state,
basic,
translation,
least_material_requirement,
maximum_material_requirement,
point,
line,
plane,
orientation,
any_cross_section,
any_longitudinal_section,
contacting_feature,
distance_variable,
degree_of_freedom_constraint_x,
degree_of_freedom_constraint_y,
degree_of_freedom_constraint_z,
degree_of_freedom_constraint_u,
degree_of_freedom_constraint_v,
degree_of_freedom_constraint_w,
minor_diameter,
major_diameter,
pitch_diameter);
END_TYPE;
TYPE 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,
set_representation_item,
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 summary_stats_value_type =
ENUMERATION
OF
(average_value,
max_value,
min_value);
END_TYPE;
TYPE supported_item =
SELECT
(action,
action_directive,
action_method);
END_TYPE;
TYPE surface_boundary =
SELECT
(boundary_curve,
degenerate_pcurve);
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_face_surface_shape_aspect =
SELECT
(face_surface_shape_aspect,
surface_shape_aspect);
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 terminator =
SELECT
(externally_defined_terminator_symbol,
pre_defined_terminator_symbol,
user_defined_terminator_symbol);
END_TYPE;
TYPE tessellated_constructive_element_select =
SELECT
(placement,
tessellated_curve_set,
tessellated_edge,
tessellated_face,
tessellated_surface_set,
tessellated_vertex);
END_TYPE;
TYPE tessellated_constructive_geometry_representation_or_shape_representation =
SELECT
(shape_representation,
tessellated_constructive_geometry_representation);
END_TYPE;
TYPE tessellated_edge_or_vertex =
SELECT
(tessellated_edge,
tessellated_vertex);
END_TYPE;
TYPE tessellated_face_or_tessellated_surface_set =
SELECT
(tessellated_face,
tessellated_surface_set);
END_TYPE;
TYPE tessellated_facet_long_short_edge_ratio =
ratio_measure;
END_TYPE;
TYPE tessellated_manifold_subsurface_shape_representation_select =
SELECT
(axis2_placement_3d,
connected_face_sub_set,
mapped_item);
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_directive_relationship,
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,
configuration_item_relationship,
configured_effectivity_assignment,
contract,
document_file,
document_relationship,
draughting_model,
drawing_revision,
effectivity_relationship,
evidence,
executed_action,
externally_defined_class,
general_property,
material_designation,
mechanical_design_geometric_presentation_representation,
observation_consequence,
organization_relationship,
organizational_project,
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_concept_relationship,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
product_planned_to_realized,
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,
versioned_action_request_relationship);
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 topology_association_item_select =
SELECT
(edge,
path,
vertex);
END_TYPE;
TYPE transformation =
SELECT
(functionally_defined_transformation,
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 tsdq_inspected_element_type_name =
a3m_data_quality_inspected_element_type_name;
WHERE
WR1: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_datum;
WR2: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_datum_pair;
WR3: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_datum_system;
WR4: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_datum_target;
WR5: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_dimensional_location;
WR6: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_dimensional_size;
WR7: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_geometric_tolerance;
WR8: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_others;
WR9: SELF <> a3m_data_quality_inspected_element_type_name.pmidqi_shape_aspect;
END_TYPE;
TYPE tsdq_measured_data_type_name =
a3m_data_quality_measured_data_type_name;
WHERE
WR1: SELF <> a3m_data_quality_measured_data_type_name.pmidqm_boolean_value;
WR2: SELF <> a3m_data_quality_measured_data_type_name.pmidqm_others;
WR3: SELF <> a3m_data_quality_measured_data_type_name.pmidqm_positive_length_measure;
WR4: SELF <> a3m_data_quality_measured_data_type_name.pmidqm_positive_plane_angle_measure;
END_TYPE;
TYPE tsdq_type_name_for_location_of_extreme_value =
a3m_data_quality_type_name_for_location_of_extreme_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 uuid =
STRING (36) FIXED;
END_TYPE;
TYPE uuid_attribute_select =
SELECT
(id_attribute_select,
identification_item);
END_TYPE;
TYPE uuid_list_item =
LIST[1:?] OF
UNIQUE
LIST[1:?] OF
UNIQUE
uuid_attribute_select;
END_TYPE;
TYPE uuid_relationship_role =
ENUMERATION
OF
(supersedes,
merge,
split,
derive_from,
same_as,
similar_to);
END_TYPE;
TYPE uuid_set_item =
SET[1:?] OF uuid_attribute_select;
END_TYPE;
TYPE uuid_set_or_list_attribute_select =
SELECT
(uuid_list_item,
uuid_set_item);
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;
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_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.A3M_DATA_QUALITY_CRITERION'
IN TYPEOF(q))) > 0;
END_ENTITY;
ENTITY a3m_data_quality_criterion
ABSTRACT SUPERTYPE
SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
assessment_specification : shape_data_quality_assessment_specification_select;
measured_data_type : a3m_data_quality_measured_data_type_name;
inspected_elements_types : LIST[1:?] OF a3m_data_quality_inspected_element_type_name;
accuracy_types : LIST[0:?] OF a3m_data_quality_accuracy_type_name;
location_of_extreme_value_types : LIST[0:?] OF a3m_data_quality_type_name_for_location_of_extreme_value;
END_ENTITY;
ENTITY a3m_data_quality_criterion_specific_applied_value
ABSTRACT SUPERTYPE
SUBTYPE OF (representation_item);
criterion_to_assign_the_value : a3m_data_quality_criterion;
applied_value : measure_value;
END_ENTITY;
ENTITY a3m_data_quality_inspected_model_and_the_result;
inspected_model : a3m_data_quality_inspected_model_select;
inspection_result : a3m_data_quality_inspection_result_representation;
END_ENTITY;
ENTITY a3m_data_quality_inspection_criterion_report_item
SUBTYPE OF (data_quality_inspection_criterion_report_item);
representative_measured_value : a3m_data_quality_measured_value_select;
value_type_to_report : summary_stats_value_type;
END_ENTITY;
ENTITY a3m_data_quality_inspection_instance_report_item
SUBTYPE OF (data_quality_inspection_instance_report_item);
representative_measured_value : a3m_data_quality_measured_value_select;
value_type_to_report : summary_stats_value_type;
END_ENTITY;
ENTITY a3m_data_quality_inspection_result
ABSTRACT SUPERTYPE
SUBTYPE OF (data_quality_inspection_result_with_judgement);
SELF\data_quality_inspection_result.criterion_inspected : a3m_data_quality_criterion;
END_ENTITY;
ENTITY a3m_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.A3M_DATA_QUALITY_INSPECTION_RESULT'
IN TYPEOF(q))) > 0;
WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTED_MODEL_AND_THE_RESULT.INSPECTION_RESULT'))
> 0;
END_ENTITY;
ENTITY a3m_data_quality_target_accuracy_association;
id : identifier;
name : label;
description :
OPTIONAL
text;
accuracy_specification : shape_measurement_accuracy;
target_to_associate : a3m_accuracy_associated_target_select;
END_ENTITY;
ENTITY a3m_detailed_report_request
SUBTYPE OF (detailed_report_request_with_number_of_data);
value_type_requested : summary_stats_value_type;
END_ENTITY;
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;
UNIQUE
UR1:
SELF\data_equivalence_inspection_criterion_report_item.criterion_report, 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_erroneous_pmi_data
ABSTRACT SUPERTYPE
OF (ONEOF (erroneous_pmi_representation,
erroneous_relation_of_pmi_and_feature))
SUBTYPE OF (a3m_pmi_data_quality_criterion);
END_ENTITY;
ENTITY a3m_erroneous_triangulated_shape_data
ABSTRACT SUPERTYPE
OF (ONEOF (inconsistent_normals_of_adjacent_faces,
inconsistent_normals_of_adjacent_triangles,
non_manifold_at_triangle_edge,
non_manifold_at_triangle_vertex,
triangle_edge_in_free_edge_loop))
SUBTYPE OF (a3m_triangulated_shape_data_quality_criterion);
END_ENTITY;
ENTITY a3m_extreme_instance
SUBTYPE OF (representation_item);
locations_of_extreme_value : SET[1:?] OF a3m_location_of_extreme_value_select;
measured_value : a3m_data_quality_measured_value_select;
END_ENTITY;
ENTITY a3m_inapt_pmi_data
ABSTRACT SUPERTYPE
OF (ONEOF (inapt_pmi_representation,
inapt_relation_of_pmi_and_feature))
SUBTYPE OF (a3m_pmi_data_quality_criterion);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY a3m_inapt_triangulated_shape_data
ABSTRACT SUPERTYPE
OF (ONEOF (abrupt_normal_change_of_adjacent_triangles,
abrupt_normal_change_of_adjacent_faces,
gap_in_triangulated_face,
gap_in_triangulated_shell_or_solid,
inconsistent_triangle_normal_and_normal_at_vertex,
inner_void_in_triangulated_solid,
large_aspect_ratio_triangle,
large_number_of_triangles,
nearly_overlapping_triangles,
non_homogeneous_triangle_size,
self_intersecting_triangulated_face,
self_intersecting_triangulated_shell_or_solid,
sharp_triangle_vertex,
short_height_triangle,
short_triangle_edge,
small_triangulated_shell,
thin_slit_in_triangulated_shell_or_solid,
thin_thickness_of_triangulated_shell_or_solid))
SUBTYPE OF (a3m_triangulated_shape_data_quality_criterion);
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 a3m_instance_report_item_with_extreme_instances
SUBTYPE OF (a3m_data_quality_inspection_instance_report_item);
extreme_instances : LIST[1:?] OF a3m_extreme_instance;
END_ENTITY;
ENTITY a3m_pmi_data_quality_criterion
ABSTRACT SUPERTYPE
OF (ONEOF (a3m_erroneous_pmi_data,
a3m_inapt_pmi_data))
SUBTYPE OF (a3m_data_quality_criterion);
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:?] OF pmidq_inspected_element_type_name;
DERIVE
SELF\a3m_data_quality_criterion.accuracy_types : LIST[0:0] OF a3m_data_quality_accuracy_type_name := [];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF a3m_data_quality_type_name_for_location_of_extreme_value := [];
WHERE
WR1: SIZEOF(bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_TARGET_ACCURACY_ASSOCIATION.TARGET_TO_ASSOCIATE')))
= 0;
END_ENTITY;
ENTITY a3m_pmi_data_quality_inspection_result
SUBTYPE OF (a3m_data_quality_inspection_result);
SELF\a3m_data_quality_inspection_result.criterion_inspected : a3m_pmi_data_quality_criterion;
WHERE
WR1: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
| NOT (pmidq_validate_element_types(re, SELF\a3m_data_quality_inspection_result.criterion_inspected)))) = 0;
WR2: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
| NOT (pmidq_validate_measured_type(re, SELF\a3m_data_quality_inspection_result.criterion_inspected)))) = 0;
WR3: SIZEOF(bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_TARGET_ACCURACY_ASSOCIATION.TARGET_TO_ASSOCIATE')))
= 0;
WR4: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, '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(re))
AND (SIZEOF(QUERY(ii <* re.inspected_instances
| 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
TYPEOF(ii))) <> 0))) = 0;
END_ENTITY;
ENTITY a3m_summary_report_request_with_representative_value
SUBTYPE OF (summary_report_request);
value_type_requested : summary_stats_value_type;
END_ENTITY;
ENTITY a3m_triangulated_shape_data_quality_criterion
ABSTRACT SUPERTYPE
OF (ONEOF (a3m_erroneous_triangulated_shape_data,
a3m_inapt_triangulated_shape_data))
SUBTYPE OF (a3m_data_quality_criterion);
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:?] OF tsdq_inspected_element_type_name;
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:?] OF tsdq_type_name_for_location_of_extreme_value;
DERIVE
SELF\a3m_data_quality_criterion.accuracy_types : LIST[0:0] OF a3m_data_quality_accuracy_type_name := [];
WHERE
WR1: SIZEOF(bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_TARGET_ACCURACY_ASSOCIATION.TARGET_TO_ASSOCIATE')))
= 0;
END_ENTITY;
ENTITY a3m_triangulated_shape_data_quality_inspection_result
SUBTYPE OF (a3m_data_quality_inspection_result);
SELF\a3m_data_quality_inspection_result.criterion_inspected : a3m_triangulated_shape_data_quality_criterion;
WHERE
WR1: SIZEOF(bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_TARGET_ACCURACY_ASSOCIATION.TARGET_TO_ASSOCIATE')))
= 0;
WR2: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
| NOT (tsdq_validate_element_types(re, SELF.criterion_inspected)))) = 0;
WR3: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
| NOT (tsdq_validate_location_of_extreme_value_types(re, SELF.criterion_inspected)))) = 0;
WR4: SIZEOF(QUERY(re <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
| NOT (tsdq_validate_measured_type(re, SELF.criterion_inspected)))) = 0;
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]))
AND (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);
WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF(SELF\compound_representation_item.item_element[2]))
AND (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 abrupt_normal_change_of_adjacent_faces
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_plane_angle_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_adjacent_triangulated_face_pair];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_triangle_edge];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_abrupt_normal_change_of_adjacent_faces FOR criterion_to_assign_the_value;
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
WR2: (SELF.approximation_tolerance.name = 'approximation_tolerance');
END_ENTITY;
ENTITY abrupt_normal_change_of_adjacent_triangles
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_plane_angle_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_adjacent_triangle_pair];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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
SUPERTYPE OF
(ONEOF (task_element,
task_method,
task_method_version,
task_objective));
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
SUPERTYPE OF
(ONEOF (task_element_relationship,
task_method_relationship,
task_method_version_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_method_to_select_from
SUBTYPE OF (action_method);
number_of_elements : count_measure;
WHERE
WR1: number_of_elements >= 1;
WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD')) >=
number_of_elements;
END_ENTITY;
ENTITY action_method_with_associated_documents
SUBTYPE OF (action_method);
documents : SET[1:?] OF document;
END_ENTITY;
ENTITY action_method_with_associated_documents_constrained
SUBTYPE OF (action_method_with_associated_documents);
usage_constraints : SET[1:?] OF document_usage_constraint;
WHERE
WR1: SIZEOF(QUERY(item <* usage_constraints | NOT (item.source IN SELF\action_method_with_associated_documents.documents)))
= 0;
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_requirement_relationship;
name : label;
description : text;
relating_action_resource_requirement : action_resource_requirement;
related_action_resource_requirement : action_resource_requirement;
WHERE
WR1: relating_action_resource_requirement :<>: related_action_resource_requirement;
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 adjacent_triangle_pair
SUBTYPE OF (triangulated_face_element);
triangle_id2 : INTEGER;
WHERE
WR1: (triangle_id2 > 0) AND (triangle_id2 <= SIZEOF(SELF\triangulated_face_element.base_face.triangles));
WR2: triangle_id2 <> SELF\triangulated_face_element.triangle_id;
END_ENTITY;
ENTITY adjacent_triangulated_face_pair
SUBTYPE OF (geometric_representation_item);
face1 : triangulated_face;
face2 : triangulated_face;
WHERE
WR1: face1 <> face2;
END_ENTITY;
ENTITY advanced_brep_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF advanced_brep_shape_representation_items_select;
WHERE
WR1: 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;
WR2: 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;
WR3: 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;
WR4: 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;
WR5: 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);
SELF\face_surface.face_geometry : advanced_face_geometry_select;
WHERE
WR1: 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;
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 (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;
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 ((('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;
WR4: 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;
WR5: 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);
WR6: 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;
WR7: 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;
WR8: 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;
WR9: (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 advisory_task_step
SUBTYPE OF (task_step);
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 (dimension_curve,
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_placeholder_occurrence,
annotation_plane,
annotation_text_occurrence,
annotation_symbol_occurrence,
tessellated_annotation_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_leader_line
ABSTRACT SUPERTYPE
OF (ONEOF (annotation_to_annotation_leader_line,
annotation_to_model_leader_line,
auxiliary_leader_line))
SUBTYPE OF (geometric_representation_item);
geometric_elements : LIST[2:?] OF
UNIQUE
des_apll_point_select;
DERIVE
model_end : des_apll_point_select := geometric_elements[HIINDEX(geometric_elements)];
INVERSE
container : annotation_placeholder_occurrence_with_leader_line FOR leader_line;
UNIQUE
UR1: geometric_elements;
END_ENTITY;
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_placeholder_occurrence_with_leader_line
SUBTYPE OF (annotation_placeholder_occurrence);
leader_line : SET[1:?] OF annotation_placeholder_leader_line;
UNIQUE
UR1: leader_line;
END_ENTITY;
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 annotation_to_annotation_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
DERIVE
start_end : des_apll_point_select := SELF\annotation_placeholder_leader_line.geometric_elements[1];
WHERE
WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end))
= 0) AND (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(start_end)) = 0);
END_ENTITY;
ENTITY annotation_to_model_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
DERIVE
start_end : des_apll_point_select := SELF\annotation_placeholder_leader_line.geometric_elements[1];
WHERE
WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end))
= 1;
WR2: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(start_end)) = 0;
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 apll_point
SUBTYPE OF (cartesian_point);
symbol_applied : des_apll_point_symbol;
INVERSE
container : annotation_placeholder_leader_line FOR geometric_elements;
WHERE
WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(SELF)) = 0;
WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET.ELEMENTS')) = 0;
END_ENTITY;
ENTITY apll_point_with_surface
SUBTYPE OF (cartesian_point);
symbol_applied : des_apll_point_symbol;
associated_surface : face_surface;
INVERSE
container : annotation_placeholder_leader_line FOR geometric_elements;
WHERE
WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT'] * TYPEOF(SELF)) = 0;
WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET.ELEMENTS')) = 0;
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_defined_function
SUBTYPE OF (maths_function);
explicit_domain : tuple_space;
explicit_range : tuple_space;
parameters : LIST OF maths_value;
WHERE
WR1: expression_is_constant(explicit_domain);
WR2: expression_is_constant(explicit_range);
END_ENTITY;
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_approval_scope
SUBTYPE OF (approval_assignment);
items : SET[1:?] OF approval_scope_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_experience_assignment
SUBTYPE OF (experience_assignment);
items : SET[1:?] OF experience_item;
END_ENTITY;
ENTITY applied_experience_type_assignment
SUBTYPE OF (experience_type_assignment);
items : SET[1:?] OF experience_type_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_person_type_assignment
SUBTYPE OF (person_type_assignment);
items : SET[1:?] OF person_type_item;
END_ENTITY;
ENTITY applied_person_type_definition_assignment
SUBTYPE OF (person_type_definition_assignment);
items : SET[1:?] OF person_definition_item;
END_ENTITY;
ENTITY applied_position_in_organization_assignment
SUBTYPE OF (position_in_organization_assignment);
items : SET[1:?] OF position_in_organization_item;
END_ENTITY;
ENTITY applied_position_in_organization_assignment_group_assignment
SUBTYPE OF (group_assignment);
items : SET[1:?] OF position_in_organization_group_assignment_item;
END_ENTITY;
ENTITY applied_position_in_organization_group_assignment
SUBTYPE OF (group_assignment);
items : SET[1:?] OF position_in_organization_group_item;
END_ENTITY;
ENTITY applied_position_in_organization_type_assignment
SUBTYPE OF (position_in_organization_type_assignment);
items : SET[1:?] OF position_in_organization_type_item;
END_ENTITY;
ENTITY applied_presented_item
SUBTYPE OF (presented_item);
items : SET[1:?] OF presented_item_select;
END_ENTITY;
ENTITY applied_project_group_name_assignment
SUBTYPE OF (name_assignment);
items : SET[1:?] OF project_group_name_item;
END_ENTITY;
ENTITY applied_qualification_type_assignment
SUBTYPE OF (qualification_type_assignment);
items : SET[1:?] OF person_organization_item;
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_based_llai
SUPERTYPE OF
(ONEOF (butt_splice_area,
darting_area,
fiber_orientation_angle_tolerance_deviation_area,
manufacturing_edge_of_part,
manufacturing_edge_of_ply,
no_splice_area,
overlap_splice_area,
ply_drop_off_stay_out_area,
ply_wrinkle_allowance_area,
potting_area,
stitching_area,
surface_porosity_allowance_area,
surface_preparation_area))
SUBTYPE OF (limited_length_area_indicator);
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_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_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 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 auxiliary_leader_line
SUBTYPE OF (annotation_placeholder_leader_line);
controlling_leader_line : annotation_to_model_leader_line;
DERIVE
free_space_end : des_apll_point_select := SELF\annotation_placeholder_leader_line.geometric_elements[1];
WHERE
WR1: SELF\annotation_placeholder_leader_line.container :=: controlling_leader_line\annotation_placeholder_leader_line.container;
WR2: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(free_space_end)) = 0;
WR3: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APLL_POINT_WITH_SURFACE'] * TYPEOF(SELF\annotation_placeholder_leader_line.model_end))
= 1;
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(SELF.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_round_hole
SUBTYPE OF (round_hole);
depth :
OPTIONAL
positive_length_measure_with_unit;
depth_tolerance :
OPTIONAL
tolerance_value;
diameter : positive_length_measure_with_unit;
diameter_tolerance :
OPTIONAL
tolerance_value_or_limits_and_fits;
placement : shape_representation;
through_hole : BOOLEAN;
INVERSE
bottom_condition : SET[0:1] OF round_hole_bottom_condition FOR target;
WHERE
WR1: SIZEOF(placement\representation.items) = 1;
WR2: SIZEOF(QUERY(ri <* placement\representation.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'
IN TYPEOF(ri)))) = 1;
WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(depth_tolerance\tolerance_value.lower_bound);
WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(depth_tolerance\tolerance_value.upper_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.lower_bound));
WR6: 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));
WR7: through_hole XOR EXISTS(depth);
WR8: NOT (through_hole AND (SIZEOF(bottom_condition) = 1));
END_ENTITY;
ENTITY basic_round_hole_occurrence
SUBTYPE OF (shape_aspect_occurrence);
SELF\shape_aspect_occurrence.definition : basic_round_hole;
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 basic_round_hole_occurrence_in_assembly
SUBTYPE OF (basic_round_hole_occurrence);
modified_components : LIST[1:?] OF
UNIQUE
multi_level_reference_designator;
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
OF (ONEOF (atan_function))
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_literal
SUBTYPE OF (generic_literal);
lit_value : BINARY;
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 binary_representation_item
SUBTYPE OF (representation_item);
binary_value : BINARY;
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_curve_with_length
SUBTYPE OF (bounded_curve, clgc_with_dimension);
DERIVE
SELF\curve_length_geometric_constraint.constrained_elements : SET[1:1] OF bounded_curve_with_length := [SELF];
WHERE
WR1: 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.TRIMMED_CURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE_CURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCALLY_REFINED_SPLINE_CURVE'] * TYPEOF(SELF)) = 0;
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 butt_splice_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY butt_splice_area_llai_specification
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY bytes_representation_item
SUBTYPE OF (binary_representation_item);
DERIVE
no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8;
WHERE
WR1: BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0;
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 causal_consequence
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : risk_consequence;
SELF\product_definition_relationship.related_product_definition : risk_consequence;
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];
SELF\item_identified_representation_usage.used_representation : representation := nodes[HIINDEX(nodes)];
leaf : representation := used_representation;
directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
WHERE
WR1: EXISTS(directed_link);
END_ENTITY;
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
element : change_element := SELF\group_relationship.related_group;
composition : change_group := SELF\group_relationship.relating_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];
SELF\characterized_item_within_representation.rep : representation := nodes[HIINDEX(nodes)];
leaf : representation := rep;
directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
WHERE
WR1: EXISTS(directed_link);
END_ENTITY;
ENTITY characterized_class
SUBTYPE OF (characterized_object, class);
END_ENTITY;
ENTITY characterized_experience
SUBTYPE OF (characterized_object, experience);
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_person_type_definition
SUBTYPE OF (characterized_object, person_type_definition);
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
successor : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
predecessor : collection_version := SELF\product_definition_formation_relationship.relating_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 <> SELF\tessellated_face.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 <> SELF\tessellated_surface_set.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_mating_constraint_condition
SUBTYPE OF (shape_aspect);
UNIQUE
UR1:
SELF\shape_aspect.name,
SELF\shape_aspect.of_shape;
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_assembly_table
SUBTYPE OF (part_laminate_table);
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);
WHERE
WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_GROUP_SHAPE_ASPECT' IN TYPEOF(SELF));
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\representation.context_of_items))
AND (SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 3);
WR2: SIZEOF(QUERY(cbsr_i <* SELF\representation.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\representation.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\representation.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 concurrent_action_method
SUBTYPE OF (action_method_relationship);
END_ENTITY;
ENTITY concurrent_task_element
SUBTYPE OF (task_element);
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_configuration
SUBTYPE OF (conditional_effectivity);
configuration_type : STRING;
inheritance_type : STRING;
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_sub_set
SUBTYPE OF (connected_edge_set);
parent_edge_set : connected_edge_set;
WHERE
WR1: SELF :<>: parent_edge_set;
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;
WHERE
WR1: SELF :<>: parent_face_set;
END_ENTITY;
ENTITY connection_definition_to_connection
SUBTYPE OF (group);
END_ENTITY;
ENTITY connection_zone_based_assembly_joint
SUBTYPE OF (assembly_joint);
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_product_definition_shape(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.AXIS2_PLACEMENT_2D',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONICAL_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICAL_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARABOLA',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_LINEAR_EXTRUSION', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET']
* 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\representation_relationship.rep_1\representation.context_of_items :=: SELF\representation_relationship.rep_2\representation.context_of_items)
AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation_relationship.rep_1\representation.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 contained_acceptance
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_control;
SELF\action_relationship.related_action : risk_acceptance;
END_ENTITY;
ENTITY contained_analysis
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_assessment;
SELF\action_relationship.related_action : risk_analysis;
END_ENTITY;
ENTITY contained_communication
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_control;
SELF\action_relationship.related_action : risk_communication;
END_ENTITY;
ENTITY contained_estimation
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_analysis;
SELF\action_relationship.related_action : risk_estimation;
END_ENTITY;
ENTITY contained_evaluation
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_assessment;
SELF\action_relationship.related_action : risk_evaluation;
END_ENTITY;
ENTITY contained_identification
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_analysis;
SELF\action_relationship.related_action : risk_identification;
END_ENTITY;
ENTITY contained_treatments
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_control;
SELF\action_relationship.related_action : risk_treatment;
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_action_method_relationship;
name : label;
relating_relationship : action_method_relationship;
related_relationship : action_method_relationship;
UNIQUE
UR1: relating_relationship, related_relationship;
WHERE
WR1: relating_relationship.relating_method :=: related_relationship.relating_method;
END_ENTITY;
ENTITY context_dependent_action_relationship;
name : label;
relating_relationship : action_relationship;
related_relationship : action_relationship;
UNIQUE
UR1: relating_relationship, related_relationship;
WHERE
WR1: relating_relationship.relating_action :=: related_relationship.relating_action;
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(represented_product_relation\property_definition.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 core_sample
SUBTYPE OF (point_based_llai);
END_ENTITY;
ENTITY core_sample_llai_specification
SUBTYPE OF (product_definition);
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;
INVERSE
bottom_condition : SET[0:1] OF round_hole_bottom_condition FOR target;
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));
WR6: NOT (through_hole AND (SIZEOF(bottom_condition) = 1));
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 :
OPTIONAL
tolerance_value;
drilled_hole_depth :
OPTIONAL
positive_length_measure_with_unit;
drilled_hole_depth_tolerance :
OPTIONAL
tolerance_value;
drilled_hole_diameter : positive_length_measure_with_unit;
drilled_hole_diameter_tolerance :
OPTIONAL
tolerance_value_or_limits_and_fits;
through_hole : BOOLEAN;
INVERSE
bottom_condition : SET[0:1] OF round_hole_bottom_condition FOR target;
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));
WR8: NOT (through_hole AND (SIZEOF(bottom_condition) = 1));
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 :
OPTIONAL
tolerance_value;
countersink_diameter : positive_length_measure_with_unit;
countersink_diameter_tolerance :
OPTIONAL
tolerance_value_or_limits_and_fits;
drilled_hole_depth :
OPTIONAL
positive_length_measure_with_unit;
drilled_hole_depth_tolerance :
OPTIONAL
tolerance_value;
drilled_hole_diameter : positive_length_measure_with_unit;
drilled_hole_diameter_tolerance :
OPTIONAL
tolerance_value_or_limits_and_fits;
through_hole : BOOLEAN;
INVERSE
bottom_condition : SET[0:1] OF round_hole_bottom_condition FOR target;
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));
WR10: NOT (through_hole AND (SIZEOF(bottom_condition) = 1));
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;
UNIQUE
UR1:
SELF\data_equivalence_inspection_criterion_report_item.criterion_report, value_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;
UNIQUE
UR1:
SELF\data_equivalence_inspection_criterion_report_item.criterion_report, value_type;
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);
SELF\representation.items : SET[1:?] OF csg_shape_representation_select;
WHERE
WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
WR2: 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;
WR3: 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;
WR4: 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] <> 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 darting_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY darting_area_llai_specification
SUBTYPE OF (product_definition);
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_criterion_assessment_association;
criterion : data_equivalence_criterion;
assessment_specification : data_equivalence_assessment_specification;
END_ENTITY;
ENTITY data_equivalence_criterion_inspection_association
SUBTYPE OF (representation_item_relationship);
SELF\representation_item_relationship.relating_representation_item : data_equivalence_criterion;
SELF\representation_item_relationship.related_representation_item : data_equivalence_inspection_requirement;
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_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_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_system_for_composite_group_element
SUBTYPE OF (datum_system);
element : shape_aspect_relationship;
DERIVE
associated_coordinate_system : axis2_placement_3d := coordinate_system_relation\geometric_item_specific_usage.identified_item;
INVERSE
coordinate_system_relation : geometric_item_specific_usage FOR definition;
WHERE
WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_GROUP_SHAPE_ASPECT' IN TYPEOF(element\shape_aspect_relationship.relating_shape_aspect);
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_GROUP_SHAPE_ASPECT' IN TYPEOF(element\shape_aspect_relationship.related_shape_aspect));
END_ENTITY;
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
DERIVE
the_datum : SET[1:?] OF datum := 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)));
combined_datum_target_string : STRING := the_datum[1]\datum.identification + target_id;
INVERSE
target_basis_relationship : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
UNIQUE
UR1: combined_datum_target_string,
SELF\shape_aspect.of_shape;
WHERE
WR1: SIZEOF(the_datum) = 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
WR3: 0 < VALUE(target_id);
WR4: SELF\shape_aspect.name = '';
WR5: NOT EXISTS(SELF\shape_aspect.description);
END_ENTITY;
ENTITY datum_target_callout
SUBTYPE OF (draughting_callout);
END_ENTITY;
ENTITY decision_point
SUBTYPE OF (action_method_to_select_from, task_element);
DERIVE
SELF\action_method_to_select_from.number_of_elements : count_measure := 1;
SELF\action_method.purpose : text := 'decision';
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_product_definition_exchange_context
ABSTRACT SUPERTYPE
SUBTYPE OF (product_definition_context);
WHERE
WR1: SIZEOF(TYPEOF(SELF) * ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IDENTIFICATION_DEPENDENT_PRODUCT_DEFINITION_EXCHANGE_CONTEXT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LANGUAGE_DEPENDENT_PRODUCT_DEFINITION_EXCHANGE_CONTEXT']) > 0;
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;
WR3: (SELF\shape_aspect_relationship.relating_shape_aspect\shape_aspect.product_definitional <> UNKNOWN) AND (SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.product_definitional
<> UNKNOWN);
END_ENTITY;
ENTITY dimensional_location_with_datum_feature
SUBTYPE OF (datum_feature, dimensional_location);
END_ENTITY;
ENTITY dimensional_location_with_normal_constraint
SUBTYPE OF (directed_dimensional_location);
classification : dimensional_location_with_normal_constraint_type;
SELF\shape_aspect_relationship.relating_shape_aspect : surface_or_face_surface_shape_aspect;
SELF\shape_aspect_relationship.related_shape_aspect : surface_or_face_surface_shape_aspect;
DERIVE
surface2 : surface_or_face_surface_shape_aspect := SELF\shape_aspect_relationship.related_shape_aspect;
surface1 : surface_or_face_surface_shape_aspect := SELF\shape_aspect_relationship.relating_shape_aspect;
INVERSE
associated_geometric_tolerance : SET[0:0] OF geometric_tolerance FOR toleranced_shape_aspect;
WHERE
WR1: TYPEOF(surface1) = TYPEOF(surface2);
WR2: surface1 :<>: surface2;
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\shape_aspect.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_feature_tolerance_zone
SUBTYPE OF (tolerance_zone_with_datum);
width_direction : direction_feature_application_type;
angle :
OPTIONAL
plane_angle_measure_with_unit;
DERIVE
indicated_datum : datum := SELF\tolerance_zone_with_datum.datum_reference\datum_system.constituents[1]\general_datum_reference.base;
WHERE
WR1: SIZEOF(SELF\tolerance_zone_with_datum.datum_reference\datum_system.constituents) = 1;
WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN TYPEOF(indicated_datum);
WR3: (width_direction <> direction_feature_application_type.inclined) XOR EXISTS(angle);
WR4: SELF\tolerance_zone.form\tolerance_zone_form.name IN ['between two coaxial cylinders', 'between two equidistant
complex surfaces or two parallel planes', 'between two non-equidistant complex surfaces or two non-parallel planes',
'between two equidistant surfaces'];
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
ABSTRACT SUPERTYPE
;
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)));
WR2: SIZEOF(QUERY(apo <* contents | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_PLACEHOLDER_OCCURRENCE'
IN TYPEOF(apo)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNAL_IMAGE_PLACEMENT_IN_CALLOUT'
IN TYPEOF(apo)))) < 2;
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_external_image_placement
SUBTYPE OF (draughting_model_item_association);
SELF\draughting_model_item_association.used_representation : draughting_model;
SELF\item_identified_representation_usage.identified_item : draughting_callout;
image : external_image_placement_in_callout;
END_ENTITY;
ENTITY draughting_model_item_association_with_placeholder
SUBTYPE OF (draughting_model_item_association);
SELF\draughting_model_item_association.used_representation : draughting_model;
SELF\item_identified_representation_usage.identified_item : draughting_callout;
annotation_placeholder : annotation_placeholder_occurrence;
END_ENTITY;
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 duplicated_datum
SUBTYPE OF (erroneous_pmi_representation);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_datum_pair];
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,
oriented_edge,
subedge))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
END_ENTITY;
ENTITY edge_based_topological_representation_with_length_constraint
SUBTYPE OF (representation);
SELF\representation.items : SET[1:?] OF edge_based_topological_representation_with_length_constraint_items;
DERIVE
single_set : SET[1:1] OF connected_edge_set := QUERY(item <* SELF.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET' IN TYPEOF(item)));
WHERE
WR1: SIZEOF(QUERY(it <* SELF.items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET'
IN TYPEOF(it))) = 1;
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SUB_SET' IN TYPEOF(single_set[1])) XOR item_in_context(single_set[1]\connected_edge_sub_set.parent_edge_set,
SELF\representation.context_of_items);
WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SUB_SET' IN TYPEOF(single_set[1])) XOR (SIZEOF(QUERY(ed
<* single_set[1].ces_edges | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BOUNDED_CURVE_WITH_LENGTH'
IN TYPEOF(ed)))) = 0);
WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SUB_SET' IN TYPEOF(single_set[1])) XOR (SIZEOF(QUERY(ed
<* single_set[1].ces_edges | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BOUNDED_CURVE_WITH_LENGTH'
IN TYPEOF(ed)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE'
IN TYPEOF(ed))))) = 0);
WR5: SIZEOF(QUERY(pa <* SELF.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH'
IN TYPEOF(pa)) AND NOT (SIZEOF(QUERY(oe <* pa\path.edge_list
| NOT (oe.edge_element IN single_set[1].ces_edges) OR NOT (oe.edge_element\subedge.parent_edge
IN single_set[1].ces_edges))) = 0))) = 0;
WR6: SIZEOF(QUERY(vp <* SELF.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'
IN TYPEOF(vp)) AND NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF(vp.vertex_geometry))))
= 0;
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_bounded_curve_with_length
SUBTYPE OF (edge_curve);
SELF\edge.edge_start : vertex_point;
SELF\edge.edge_end : vertex_point;
SELF\edge_curve.edge_geometry : bounded_curve_with_length;
WHERE
WR1: TYPEOF(edge_start\vertex_point.vertex_geometry) = TYPEOF(dummy_gri || point());
WR2: TYPEOF(edge_end\vertex_point.vertex_geometry) = TYPEOF(dummy_gri || point());
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_sealing
SUBTYPE OF (line_based_llai);
END_ENTITY;
ENTITY edge_sealing_llai_specification
SUBTYPE OF (product_definition);
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 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);
SELF\representation.items : SET[1:?] OF advanced_brep_shape_representation_items_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: SIZEOF(QUERY(msb <* QUERY(it <* 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.FACE_SURFACE' IN
TYPEOF(fcs)))) = 0))) = 0))) = 0;
WR3: SIZEOF(QUERY(msb <* QUERY(it <* 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;
WR4: SIZEOF(QUERY(msb <* QUERY(it <* 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;
WR5: SIZEOF(QUERY(msb <* QUERY(it <* 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;
WR6: SIZEOF(QUERY(msb <* QUERY(it <* 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;
WR7: SIZEOF(QUERY(msb <* QUERY(it <* 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;
WR8: 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;
WR9: 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;
WR10: 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;
WR11: SIZEOF(QUERY(msb <* QUERY(it <* 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 end_task
SUBTYPE OF (task_element);
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_pmi_representation
ABSTRACT SUPERTYPE
OF (ONEOF (incorrect_datum_reference_by_datum_target,
incorrect_unit_of_tolerance_value,
duplicated_datum))
SUBTYPE OF (a3m_erroneous_pmi_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY erroneous_relation_of_pmi_and_feature
ABSTRACT SUPERTYPE
OF (ONEOF (no_general_part_feature_association,
incorrect_relation_of_geometric_tolerance_and_feature,
incorrect_relation_of_geometric_tolerance_and_datum_feature,
inconsistent_feature_for_range_symbol,
insufficiently_constrained_datum_system,
incorrect_spatial_arrangement_of_datum_targets,
incorrect_geometric_relation_of_datum_and_toleranced_feature,
incorrect_relation_of_geometric_tolerance_modifier_to_feature,
inconsistent_length_between_annotation_value_and_shape,
inconsistent_angle_between_annotation_value_and_shape))
SUBTYPE OF (a3m_erroneous_pmi_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_characterized_object
SUBTYPE OF (characterized_object, event_occurrence);
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 event_probability
SUBTYPE OF (property_definition);
SELF\property_definition.definition : event_occurrence_characterized_object;
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 exit_loop
SUBTYPE OF (task_element);
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 experience;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_experience : experience;
role : experience_role;
END_ENTITY;
ENTITY experience_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_experience_type : experience_type;
role : experience_type_role;
END_ENTITY;
ENTITY experience_type_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_experience_type : experience_type;
related_experience_type : experience_type;
END_ENTITY;
ENTITY experience_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
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_image_placement_in_callout
SUBTYPE OF (annotation_occurrence, geometric_representation_item);
image : document;
SELF\styled_item.item : geometric_set;
role : annotation_placeholder_occurrence_role;
INVERSE
the_callout : draughting_callout FOR contents;
the_draughting_model_item_association_with_external_image_placement : SET[0:1] OF draughting_model_item_association_with_external_image_placement FOR image;
WHERE
WR1: md_valid_content_in_geometric_set_for_external_image(item);
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_picture_representation_item
SUBTYPE OF (picture_representation_item);
INVERSE
source : applied_external_identification_assignment FOR items;
WHERE
WR1: NOT (SELF\representation_item.name IN pre_defined_picture_representation_types);
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,
oriented_face,
subface))
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_shape_aspect
SUBTYPE OF (shape_aspect);
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;
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);
SELF\representation.items : SET[1:?] OF faceted_brep_shape_representation_items_select;
WHERE
WR1: 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;
WR2: 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;
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 (SIZEOF(QUERY(bnds <* fcs.bounds
| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN
TYPEOF(bnds)))) = 1))) =
0))) = 0))) = 0;
WR4: SIZEOF(QUERY(msb <* QUERY(it <* items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_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.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: SELF\shape_aspect_relationship.relating_shape_aspect\shape_aspect.of_shape :=: related_shape_aspect\shape_aspect.of_shape;
WR2: SELF\shape_aspect_relationship.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 fiber_orientation_angle_tolerance_deviation_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY fiber_orientation_angle_tolerance_deviation_area_llai_specification
SUBTYPE OF (product_definition);
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 finite_space
SUBTYPE OF (maths_space, generic_literal);
members : SET OF maths_value;
WHERE
WR1: VALUE_UNIQUE(members);
WR2: SIZEOF(QUERY(expr <* QUERY(member <* members | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_EXPRESSION'
IN TYPEOF(member)) | NOT expression_is_constant(expr))) = 0;
WR3: no_cyclic_space_reference(SELF, []);
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\representation.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
ABSTRACT 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 gap_in_triangulated_face
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangulated_face];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_triangle_edge];
INVERSE
offset_radius : tsdq_positive_length_measure_for_gap_in_triangulated_face FOR criterion_to_assign_the_value;
WHERE
WR1: (SELF.offset_radius.name = 'offset_radius');
END_ENTITY;
ENTITY gap_in_triangulated_shell_or_solid
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell,tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_triangle_edge];
INVERSE
specific_applied_values : SET[2:2] OF tsdq_positive_length_measure_for_gap_in_triangulated_shell_or_solid FOR criterion_to_assign_the_value;
WHERE
WR1: (SIZEOF(QUERY(ie <* specific_applied_values | ie.name = 'approximation_tolerance')) = 1) AND (SIZEOF(QUERY(ie <* specific_applied_values
| ie.name = 'offset_radius')) = 1);
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_part_feature_without_pmi
SUBTYPE OF (inapt_relation_of_pmi_and_feature);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_shape_aspect];
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 generated_finite_numeric_space
SUBTYPE OF (finite_space);
start_value : maths_number;
increment_value : maths_number;
increment_number : positive_integer;
DERIVE
SELF\finite_space.members : SET[2:?] OF maths_number := make_numeric_set(start_value, increment_value, increment_number);
WHERE
WR1: increment_value <> 0.0;
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 (rotation_about_direction,
su_parameters)
ANDOR ONEOF (kinematic_path,
placement)
ANDOR (ONEOF (camera_model,
camera_model_d3_multi_clipping_intersection,
camera_model_d3_multi_clipping_union,
curve,
direction,
light_source))
ANDOR (ONEOF (curve,
planar_extent))
ANDOR (ONEOF (annotation_fill_area,
composite_text,
curve,
defined_character_glyph,
defined_symbol,
point,
symbol_target,
text_literal))
ANDOR (ONEOF (block,
boolean_result,
cartesian_transformation_operator,
curve,
cyclide_segment_solid,
direction,
edge_based_wireframe_model,
edge_curve,
ellipsoid,
face_based_surface_model,
face_surface,
faceted_primitive,
geometric_set,
half_space_solid,
placement,
point,
poly_loop,
primitive_2d,
rectangular_pyramid,
right_angular_wedge,
right_circular_cone,
right_circular_cylinder,
scanned_data_item,
shell_based_surface_model,
shell_based_wireframe_model,
solid_model,
sphere,
surface,
tessellated_item,
torus,
vector,
vertex_point,
volume))
ANDOR (ONEOF (curve,
externally_defined_hatch_style,
externally_defined_tile_style,
fill_area_style_hatching,
fill_area_style_tile_coloured_region,
fill_area_style_tile_curve_with_style,
fill_area_style_tile_symbol_with_style,
fill_area_style_tiles,
one_direction_repeat_factor,
point,
vector)))
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
SUPERTYPE OF
(ONEOF (geometric_curve_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_related_to_edge
SUBTYPE OF (inapt_relation_of_pmi_and_feature);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_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(SELF\geometric_tolerance_with_defined_unit.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(SELF\geometric_tolerance_with_defined_unit.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(SELF\geometric_tolerance_with_defined_unit.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.CENTRE_OF_SYMMETRY'
IN TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)) AND (SELF\geometric_tolerance.toleranced_shape_aspect\shape_aspect.product_definitional
= FALSE));
WR2: NOT (geometric_tolerance_modifier.circle_a IN modifiers) OR (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_SHAPE_ASPECT'
IN TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)) AND (SIZEOF(SELF\geometric_tolerance.toleranced_shape_aspect\derived_shape_aspect.deriving_relationships)
= 1));
WR3: NOT (SIZEOF([geometric_tolerance_modifier.individually, geometric_tolerance_modifier.each_element,
geometric_tolerance_modifier.each_radial_element] * modifiers) = 1) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_GROUP_SHAPE_ASPECT'
IN TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect));
WR4: SIZEOF([geometric_tolerance_modifier.individually, geometric_tolerance_modifier.each_element, geometric_tolerance_modifier.each_radial_element]
* modifiers) <= 1;
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_to_topology_item_association
SUBTYPE OF (item_defined_transformation);
SELF\item_defined_transformation.transform_item_1 : geometry_association_item_select;
SELF\item_defined_transformation.transform_item_2 : topology_association_item_select;
END_ENTITY;
ENTITY geometry_to_topology_model_association
SUBTYPE OF (representation_relationship_with_transformation, shape_representation_relationship);
SELF\representation_relationship_with_transformation.transformation_operator : set_item_defined_transformation;
DERIVE
items : SET OF item_defined_transformation := get_item_defined_transformations(transformation_operator);
INVERSE
product_context : SET[1:?] OF context_dependent_shape_representation FOR representation_relation;
WHERE
WR1: SIZEOF(QUERY(it <* items | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRY_TO_TOPOLOGY_ITEM_ASSOCIATION'
IN TYPEOF(it)))) = 0;
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINITIONAL_REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
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_geometric_tolerance_with_datum_system_reference
SUBTYPE OF (geometric_tolerance);
datum_system : SET[1:?] OF datum_system_for_composite_group_element;
SELF\geometric_tolerance.toleranced_shape_aspect : composite_group_shape_aspect;
END_ENTITY;
ENTITY group_relationship;
name : label;
description :
OPTIONAL
text;
relating_group : group;
related_group : group;
END_ENTITY;
ENTITY guide_curve
SUBTYPE OF (line_based_llai);
END_ENTITY;
ENTITY guide_curve_llai_specification
SUBTYPE OF (product_definition);
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 hash_based_v5_uuid_attribute
SUBTYPE OF (v5_uuid_attribute);
hash_function : STRING;
WHERE
WR1: hash_function <> '';
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 hybrid_brep_edge_assignment
SUBTYPE OF (geometric_representation_item);
associated_topological_representation_item : hybrid_brep_edge_select;
hybrid_brep_curve : LIST[1:?] OF hybrid_brep_curve_select;
INVERSE
owner : hybrid_brep_shape_representation FOR items;
WHERE
WR1: (owner\hybrid_brep_shape_representation.reference_representation IN using_representations(associated_topological_representation_item))
AND (owner IN get_representations_for_items(list_to_set(hybrid_brep_curve)));
END_ENTITY;
ENTITY hybrid_brep_face_assignment
SUBTYPE OF (geometric_representation_item);
associated_topological_representation_item : hybrid_brep_face_select;
hybrid_brep_surface : LIST[1:?] OF hybrid_brep_surface_select;
INVERSE
owner : hybrid_brep_shape_representation FOR items;
WHERE
WR1: (owner\hybrid_brep_shape_representation.reference_representation IN using_representations(associated_topological_representation_item))
AND (owner IN get_representations_for_items(list_to_set(hybrid_brep_surface)));
END_ENTITY;
ENTITY hybrid_brep_shape_representation
SUBTYPE OF (shape_representation);
associated_geometric_representation :
OPTIONAL
SET[1:?] OF shape_representation;
SELF\representation.items : SET[1:?] OF hybrid_brep_shape_assignment_select;
SELF\representation.context_of_items : geometric_representation_context;
reference_representation : hybrid_brep_reference_shape_representation;
WHERE
WR1: context_of_items\geometric_representation_context.coordinate_space_dimension = 3.0;
WR2: NOT (SELF IN associated_geometric_representation);
WR3: NOT (reference_representation IN associated_geometric_representation);
WR4: SELF :<>: reference_representation;
END_ENTITY;
ENTITY hybrid_brep_vertex_assignment
SUBTYPE OF (geometric_representation_item);
associated_topological_representation_item : hybrid_brep_vertex_select;
hybrid_brep_point : LIST[1:?] OF hybrid_brep_point_select;
INVERSE
owner : hybrid_brep_shape_representation FOR items;
WHERE
WR1: (owner\hybrid_brep_shape_representation.reference_representation IN using_representations(associated_topological_representation_item))
AND (owner IN get_representations_for_items(list_to_set(hybrid_brep_point)));
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_dependent_product_definition_exchange_context
SUBTYPE OF (dependent_product_definition_exchange_context);
identification_context : exchange_identification_context_select;
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_pmi_representation
ABSTRACT SUPERTYPE
OF (semantic_pmi_without_presentation)
SUBTYPE OF (a3m_inapt_pmi_data);
END_ENTITY;
ENTITY inapt_relation_of_pmi_and_feature
ABSTRACT SUPERTYPE
OF (ONEOF (geometric_tolerance_related_to_edge,
general_part_feature_without_pmi))
SUBTYPE OF (a3m_inapt_pmi_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_angle_between_annotation_value_and_shape
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF pmidq_inspected_element_type_name := [pmidqi_dimensional_location,pmidqi_dimensional_size];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_positive_plane_angle_measure;
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (pmidq_get_value_limit_type(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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_feature_for_range_symbol
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_geometric_tolerance];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY inconsistent_length_between_annotation_value_and_shape
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF pmidq_inspected_element_type_name := [pmidqi_dimensional_location,pmidqi_dimensional_size];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_positive_length_measure;
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (pmidq_get_value_limit_type(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
END_ENTITY;
ENTITY inconsistent_normals_of_adjacent_faces
SUBTYPE OF (a3m_erroneous_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_adjacent_triangulated_face_pair];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_inconsistent_normals_of_adjacent_faces FOR criterion_to_assign_the_value;
WHERE
WR1: (SELF.approximation_tolerance.name = 'approximation_tolerance');
END_ENTITY;
ENTITY inconsistent_normals_of_adjacent_triangles
SUBTYPE OF (a3m_erroneous_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_adjacent_triangle_pair];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
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 inconsistent_triangle_normal_and_normal_at_vertex
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_plane_angle_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_vertex];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
END_ENTITY;
ENTITY incorrect_datum_reference_by_datum_target
SUBTYPE OF (erroneous_pmi_representation);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_datum_target];
END_ENTITY;
ENTITY incorrect_geometric_relation_of_datum_and_toleranced_feature
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_datum];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
INVERSE
allowance : pmidq_length_measure_for_incorrect_geometric_relation_of_datum_and_toleranced_feature FOR criterion_to_assign_the_value;
END_ENTITY;
ENTITY incorrect_relation_of_geometric_tolerance_and_datum_feature
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_geometric_tolerance];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY incorrect_relation_of_geometric_tolerance_and_feature
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_geometric_tolerance];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY incorrect_relation_of_geometric_tolerance_modifier_to_feature
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_geometric_tolerance];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY incorrect_spatial_arrangement_of_datum_targets
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_datum];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
INVERSE
allowance : pmidq_length_measure_for_incorrect_spatial_arrangement_of_datum_targets FOR criterion_to_assign_the_value;
END_ENTITY;
ENTITY incorrect_unit_of_tolerance_value
SUBTYPE OF (erroneous_pmi_representation);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[3:3] OF pmidq_inspected_element_type_name := [pmidqi_dimensional_location,pmidqi_dimensional_size,pmidqi_geometric_tolerance];
END_ENTITY;
ENTITY independent_limits_of_linear_dimensional_size_characteristic_representation
SUBTYPE OF (dimensional_characteristic_representation);
SELF\dimensional_characteristic_representation.dimension : dimensional_size;
limits : LIST[2:?] OF
UNIQUE
shape_dimension_representation;
WHERE
WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_SIZE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE_WITH_PATH']
* TYPEOF(dimension)) = 0;
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 inner_void_in_triangulated_solid
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_tessellated_shell];
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 insufficiently_constrained_datum_system
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF pmidq_inspected_element_type_name := [pmidqi_datum_system];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
INVERSE
allowance : pmidq_length_measure_for_insufficiently_constrained_datum_system FOR criterion_to_assign_the_value;
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
SUPERTYPE OF
(ONEOF (topology_to_geometry_item_association,
geometry_to_topology_item_association));
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: valid_identified_item_in_representation(identified_item, used_representation);
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 laminate_table
SUPERTYPE OF
(ONEOF (part_laminate_table,
zone_structural_makeup))
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY language
SUBTYPE OF (group);
WHERE
WR1: SELF\group.name <> '';
END_ENTITY;
ENTITY language_dependent_product_definition_exchange_context
SUBTYPE OF (dependent_product_definition_exchange_context);
language : language;
END_ENTITY;
ENTITY large_aspect_ratio_triangle
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_ratio_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_representative_triangle];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
END_ENTITY;
ENTITY large_number_of_triangles
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_count_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell,tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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 limited_length_area_indicator
SUBTYPE OF (product_definition);
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_and_point_on_plane
SUBTYPE OF (line_on_plane_pcurve, point_on_plane);
DERIVE
SELF\pcurve.basis_surface : plane := SELF\point_on_surface.basis_surface;
END_ENTITY;
ENTITY line_based_llai
SUPERTYPE OF
(ONEOF (edge_sealing,
guide_curve))
SUBTYPE OF (limited_length_area_indicator);
END_ENTITY;
ENTITY line_on_plane_pcurve
SUBTYPE OF (pcurve);
SELF\pcurve.basis_surface : plane;
WHERE
WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' IN TYPEOF(SELF\pcurve.reference_to_curve\representation.items[1]);
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_product_space
SUBTYPE OF (maths_space, generic_literal);
factors : LIST OF maths_space;
WHERE
WR1: SIZEOF(QUERY(space <* factors | NOT (expression_is_constant(space)))) = 0;
WR2: no_cyclic_space_reference(SELF, []);
WR3: NOT (the_empty_space IN factors);
END_ENTITY;
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);
WR3: constraints_scaling(scaling_factors);
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(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(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_relationship
SUBTYPE OF (group);
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 log10_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY log2_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY log_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 looping_element
SUBTYPE OF (task_element);
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);
SELF\representation.items : SET[1:?] OF manifold_subsurface_shape_representation_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: 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;
WR3: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR4: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR5: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR6: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR7: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR8: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR9: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR10: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
WR11: SIZEOF(QUERY(cfss <* QUERY(it <* 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);
SELF\representation.items : SET[1:?] OF manifold_surface_shape_representation_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: 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_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;
WR3: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR4: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR5: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR6: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
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(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;
WR8: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR9: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR10: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR11: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR12: SIZEOF(QUERY(sbsm <* QUERY(it <* 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;
WR13: SIZEOF(QUERY(sbsm <* QUERY(it <* 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 manufacturing_edge_of_part
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY manufacturing_edge_of_part_llai_specification
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY manufacturing_edge_of_ply
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY manufacturing_edge_of_ply_llai_specification
SUBTYPE OF (product_definition);
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,
finite_space,
uniform_product_space,
listed_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_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST OF maths_value;
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_or_assembly_component_usage;
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(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;
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(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;
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(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;
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(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;
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(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 monitor
SUBTYPE OF (risk_activity_structure);
SELF\action_relationship.relating_action : risk_control;
SELF\action_relationship.related_action : risk_assessment;
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;
root : product_definition := relating_product_definition;
SELF\product_definition_relationship.related_product_definition : product_definition_or_reference := location[HIINDEX(location)]\product_definition_relationship.related_product_definition;
leaf : product_definition_or_reference := related_product_definition;
UNIQUE
UR1: location;
WHERE
WR1: unambiguously_specified_multi_level_reference_designator(location);
WR2: SIZEOF(QUERY(cp <* location | NOT (EXISTS(cp\assembly_component_usage.reference_designator)))) = 0;
END_ENTITY;
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 nearly_overlapping_triangles
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_plane_angle_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_adjacent_triangle_pair];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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 no_general_part_feature_association
SUBTYPE OF (erroneous_relation_of_pmi_and_feature);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[5:5] OF pmidq_inspected_element_type_name := [pmidqi_datum,pmidqi_datum_target,pmidqi_dimensional_location,pmidqi_dimensional_size,pmidqi_geometric_tolerance];
SELF\a3m_data_quality_criterion.measured_data_type : pmidq_measured_data_type_name := pmidqm_boolean_value;
END_ENTITY;
ENTITY no_splice_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY no_splice_area_llai_specification
SUBTYPE OF (product_definition);
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_homogeneous_triangle_size
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_ratio_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangulated_face];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_representative_triangle];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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_triangle_edge
SUBTYPE OF (a3m_erroneous_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_edge];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_non_manifold_at_triangle_edge FOR criterion_to_assign_the_value;
WHERE
WR1: (SELF.approximation_tolerance.name = 'approximation_tolerance');
END_ENTITY;
ENTITY non_manifold_at_triangle_vertex
SUBTYPE OF (a3m_erroneous_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_vertex];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_non_manifold_at_triangle_vertex FOR criterion_to_assign_the_value;
WHERE
WR1: (SELF.approximation_tolerance.name = 'approximation_tolerance');
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);
SELF\representation.items : SET[1:?] OF non_manifold_surface_shape_representation_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: 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.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;
WR3: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR4: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR5: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR6: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
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(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;
WR8: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR9: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR10: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR11: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR12: SIZEOF(QUERY(fbsm <* QUERY(it <* 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;
WR13: SIZEOF(QUERY(fbsm <* QUERY(it <* 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 observation
SUBTYPE OF (action_actual);
END_ENTITY;
ENTITY observation_consequence
SUBTYPE OF (applied_action_assignment);
END_ENTITY;
ENTITY observation_relationship
SUBTYPE OF (action_relationship);
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 overlap_splice_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY overlap_splice_area_llai_specification
SUBTYPE OF (product_definition);
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 part_laminate_table
SUPERTYPE OF
(ONEOF (composite_assembly_table,
ply_laminate_table))
SUBTYPE OF (laminate_table);
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 percentage_laminate_table
SUBTYPE OF (zone_structural_makeup);
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 person_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY person_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_person_type : person_type;
role : person_type_role;
END_ENTITY;
ENTITY person_type_definition;
id : identifier;
name : label;
description :
OPTIONAL
text;
formation : person_type_definition_formation;
END_ENTITY;
ENTITY person_type_definition_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_person_type_definition : person_type_definition;
role : person_type_definition_role;
END_ENTITY;
ENTITY person_type_definition_formation;
id : identifier;
name : label;
description :
OPTIONAL
text;
of_person_type : person_type;
END_ENTITY;
ENTITY person_type_definition_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_person_type_definition : person_type_definition;
related_person_type_definition : person_type_definition;
END_ENTITY;
ENTITY person_type_definition_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY person_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
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 picture_representation_item
ABSTRACT SUPERTYPE
OF (ONEOF (externally_defined_picture_representation_item,
predefined_picture_representation_item))
SUBTYPE OF (bytes_representation_item);
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_drop_off_stay_out_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY ply_drop_off_stay_out_area_llai_specification
SUBTYPE OF (product_definition);
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_laminate_table
SUBTYPE OF (part_laminate_table);
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 ply_wrinkle_allowance_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY ply_wrinkle_allowance_area_llai_specification
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY pmi_requirement_item_association
SUBTYPE OF (item_identified_representation_usage);
requirement : characterized_object;
END_ENTITY;
ENTITY pmidq_length_measure_for_incorrect_geometric_relation_of_datum_and_toleranced_feature
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : incorrect_geometric_relation_of_datum_and_toleranced_feature;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : length_measure;
END_ENTITY;
ENTITY pmidq_length_measure_for_incorrect_spatial_arrangement_of_datum_targets
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : incorrect_spatial_arrangement_of_datum_targets;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : length_measure;
END_ENTITY;
ENTITY pmidq_length_measure_for_insufficiently_constrained_datum_system
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : insufficiently_constrained_datum_system;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : length_measure;
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_based_llai
SUPERTYPE OF
(ONEOF (core_sample,
strategy_point))
SUBTYPE OF (limited_length_area_indicator);
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_line
SUBTYPE OF (point_on_curve);
SELF\point_on_curve.basis_curve : line;
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_plane
SUBTYPE OF (point_on_surface);
SELF\point_on_surface.basis_surface : plane;
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_in_organization;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_position_in_organization : position_in_organization;
role : position_in_organization_role;
END_ENTITY;
ENTITY position_in_organization_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_position_in_organization : position_in_organization;
related_position_in_organization : position_in_organization;
END_ENTITY;
ENTITY position_in_organization_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_position_in_organization_type : position_in_organization_type;
role : position_in_organization_type_role;
END_ENTITY;
ENTITY position_in_organization_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
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 potting_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY potting_area_llai_specification
SUBTYPE OF (product_definition);
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 predefined_picture_representation_item
SUBTYPE OF (picture_representation_item);
WHERE
WR1: SELF\representation_item.name IN pre_defined_picture_representation_types;
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 probability_representation
SUBTYPE OF (property_definition_representation);
SELF\property_definition_representation.definition : event_probability;
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_or_process_relationship_effectivity
SUBTYPE OF (effectivity);
effective_process_or_process_relationship : process_or_process_relationship;
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,
laminate_table,
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: NOT (('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)))
OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE' IN TYPEOF(SELF));
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\measure_with_unit.value_component)) OR (quantity\measure_with_unit.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
product_design : product := SELF\product_relationship.relating_product;
individual_product : product := SELF\product_relationship.related_product;
END_ENTITY;
ENTITY product_design_version_to_individual
SUBTYPE OF (product_definition_formation_relationship);
DERIVE
product_design_version : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
individual_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
END_ENTITY;
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);
SELF\product_definition_formation_relationship.relating_product_definition_formation : product_as_planned;
DERIVE
realized_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
planned_product : product_as_planned := SELF\product_definition_formation_relationship.relating_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 qualification_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY qualification_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_qualification_type : qualification_type;
role : qualification_type_role;
END_ENTITY;
ENTITY qualification_type_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_qualification_type : qualification_type;
related_qualification_type : qualification_type;
END_ENTITY;
ENTITY qualification_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
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(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(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(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 related_consequence
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : risk_perception;
SELF\product_definition_relationship.related_product_definition : risk_consequence;
END_ENTITY;
ENTITY relationship_condition;
name : label;
applicable_relationships : SET[1:?] OF relationship_with_condition;
condition_description : text;
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 (kinematic_topology_structure,
kinematic_topology_directed_structure,
kinematic_topology_network_structure)
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));
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 (boolean_representation_item,
date_representation_item,
date_time_representation_item,
integer_representation_item,
logical_representation_item,
rational_representation_item,
real_representation_item))
ANDOR ONEOF (binary_representation_item,
compound_representation_item,
mapped_item,
value_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
SUPERTYPE OF
(ONEOF (topology_to_geometry_model_association,
geometry_to_topology_model_association))
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 (SELF\representation_relationship.rep_1 IN using_representations(transformation_operator\item_defined_transformation.transform_item_1))
AND (SELF\representation_relationship.rep_2 IN using_representations(transformation_operator\item_defined_transformation.transform_item_2));
END_ENTITY;
ENTITY representative_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: unique_in_product_definition(SELF) OR unique_in_shape_aspect(SELF);
END_ENTITY;
ENTITY representative_triangle
SUBTYPE OF (triangulated_face_element);
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 rigid_link_representation
SUBTYPE OF (kinematic_link_representation);
END_ENTITY;
ENTITY rigid_subsketch
SUBTYPE OF (subsketch);
END_ENTITY;
ENTITY risk
SUBTYPE OF (product);
END_ENTITY;
ENTITY risk_acceptance
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_activity_structure
SUBTYPE OF (action_relationship);
SELF\action_relationship.relating_action : risk_action;
SELF\action_relationship.related_action : risk_action;
DERIVE
child : risk_action := SELF\action_relationship.related_action;
parent : risk_action := SELF\action_relationship.relating_action;
END_ENTITY;
ENTITY risk_analysis
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_assessment
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_attitude
SUBTYPE OF (property_definition_representation);
SELF\property_definition_representation.definition : risk_level;
DERIVE
criticality_factor : representation := SELF\property_definition_representation.used_representation;
END_ENTITY;
ENTITY risk_communication
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_consequence
SUBTYPE OF (product_definition);
SELF\product_definition.formation : risk_perception_formation;
END_ENTITY;
ENTITY risk_control
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_estimation
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_evaluation
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_event
SUBTYPE OF (applied_action_method_assignment);
SELF\applied_action_method_assignment.items : SET[1:1] OF risk_perception;
WHERE
WR1: SELF\action_method_assignment.role.name = 'risk of event';
END_ENTITY;
ENTITY risk_identification
SUBTYPE OF (action);
END_ENTITY;
ENTITY risk_impact_assignment;
assigned_risk_consequence : risk_consequence;
items : SET[1:?] OF risk_impact_item;
END_ENTITY;
ENTITY risk_level
SUBTYPE OF (property_definition);
SELF\property_definition.definition : risk_perception_characterized_object;
END_ENTITY;
ENTITY risk_measure
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY risk_perception
SUBTYPE OF (product_definition);
SELF\product_definition.formation : risk_perception_formation;
SELF\product_definition.frame_of_reference : risk_perception_context;
DERIVE
risk_perception_context : risk_perception_context := SELF\product_definition.frame_of_reference;
END_ENTITY;
ENTITY risk_perception_characterized_object
SUBTYPE OF (characterized_object, risk_perception);
END_ENTITY;
ENTITY risk_perception_context
SUBTYPE OF (product_definition_context);
END_ENTITY;
ENTITY risk_perception_formation
SUBTYPE OF (product_definition_formation);
SELF\product_definition_formation.of_product : risk;
DERIVE
of_risk : risk := SELF\product_definition_formation.of_product;
END_ENTITY;
ENTITY risk_perception_relationship
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : risk_perception;
SELF\product_definition_relationship.related_product_definition : risk_perception;
END_ENTITY;
ENTITY risk_perception_source_assignment;
assigned_risk : risk_perception;
items : SET[1:?] OF risk_perception_source_item;
END_ENTITY;
ENTITY risk_relationship
SUBTYPE OF (product_relationship);
SELF\product_relationship.relating_product : risk;
SELF\product_relationship.related_product : risk;
DERIVE
related_risk : risk := SELF\product_relationship.related_product;
relating_risk : risk := SELF\product_relationship.relating_product;
END_ENTITY;
ENTITY risk_treatment
SUBTYPE OF (action);
SELF\action.chosen_method : risk_measure;
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
SUPERTYPE OF
(ONEOF (basic_round_hole,
explicit_round_hole))
SUBTYPE OF (feature_definition);
WHERE
WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BASIC_ROUND_HOLE']
* TYPEOF(SELF)) = 1) 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: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BASIC_ROUND_HOLE']
* TYPEOF(SELF)) = 1) 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: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BASIC_ROUND_HOLE']
* TYPEOF(SELF)) = 1) 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: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BASIC_ROUND_HOLE']
* TYPEOF(SELF)) = 1) 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: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BASIC_ROUND_HOLE']
* TYPEOF(SELF)) = 1) 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 round_hole_bottom_condition;
target : bottom_condition_target;
bottom_condition : round_hole_bottom_condition_enum;
radius :
OPTIONAL
positive_length_measure_with_unit;
final_diameter :
OPTIONAL
positive_length_measure_with_unit;
taper_angle :
OPTIONAL
positive_plane_angle_measure_with_unit;
tip_angle :
OPTIONAL
positive_plane_angle_measure_with_unit;
tip_radius :
OPTIONAL
positive_length_measure_with_unit;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: NOT (bottom_condition = round_hole_bottom_condition_enum.spherical) OR EXISTS(radius);
WR2: NOT (bottom_condition = round_hole_bottom_condition_enum.flat_with_radius) OR EXISTS(radius);
WR3: NOT (bottom_condition = round_hole_bottom_condition_enum.flat_with_taper) OR EXISTS(final_diameter);
WR4: NOT (bottom_condition = round_hole_bottom_condition_enum.flat_with_taper) OR EXISTS(taper_angle);
WR5: NOT (bottom_condition = round_hole_bottom_condition_enum.flat) OR ((NOT EXISTS(radius)) AND (NOT EXISTS(final_diameter))
AND (NOT EXISTS(taper_angle)) AND (NOT EXISTS(tip_angle)) AND (NOT EXISTS(tip_radius)));
WR6: NOT (bottom_condition = round_hole_bottom_condition_enum.conical) OR (EXISTS(tip_angle));
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 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 self_intersecting_triangulated_face
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangulated_face];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_representative_triangle];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
END_ENTITY;
ENTITY self_intersecting_triangulated_shell_or_solid
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell,tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_triangulated_face];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_self_intersecting_triangulated_shell_or_solid FOR criterion_to_assign_the_value;
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
WR2: (SELF.approximation_tolerance.name = 'approximation_tolerance');
END_ENTITY;
ENTITY semantic_pmi_without_presentation
SUBTYPE OF (inapt_pmi_representation);
DERIVE
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[5:5] OF pmidq_inspected_element_type_name := [pmidqi_datum,pmidqi_datum_target,pmidqi_dimensional_location,pmidqi_dimensional_size,pmidqi_geometric_tolerance];
END_ENTITY;
ENTITY sequential_method
SUBTYPE OF (serial_action_method);
sequence_position : count_measure;
END_ENTITY;
ENTITY serial_action_method
SUBTYPE OF (action_method_relationship);
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 (harness_node,
harness_segment)
ANDOR ONEOF (assembly_shape_constraint,
assembly_shape_joint,
connectivity_definition,
contact_feature,
transport_feature)
ANDOR ONEOF (contacting_feature,
datum,
datum_feature,
datum_target,
datum_system,
general_datum_reference)
ANDOR ONEOF (shape_aspect_occurrence,
component_path_shape_aspect)
ANDOR constituent_shape_aspect);
name : label;
description :
OPTIONAL
text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
UNIQUE
UR1: id, of_shape;
WHERE
WR1: SIZEOF(USEDIN(SELF, '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 sharp_triangle_vertex
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_plane_angle_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_vertex];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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_height_triangle
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_representative_triangle];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_triangle_vertex];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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 short_triangle_edge
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_edge];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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 simultaneous_task_element
SUBTYPE OF (concurrent_task_element);
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_triangulated_shell
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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 smeared_material_definition
SUBTYPE OF (zone_structural_makeup);
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_conical_bottom_round_hole
SUBTYPE OF (solid_with_stepped_round_hole);
semi_apex_angle : positive_plane_angle_measure;
tip_radius : non_negative_length_measure;
WHERE
WR1: tip_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments];
END_ENTITY;
ENTITY solid_with_constant_radius_edge_blend
SUBTYPE OF (edge_blended_solid);
radius : positive_length_measure;
END_ENTITY;
ENTITY solid_with_curved_slot
SUBTYPE OF (solid_with_slot);
slot_centreline : bounded_curve;
END_ENTITY;
ENTITY solid_with_depression
ABSTRACT SUPERTYPE
OF (solid_with_through_depression
ANDOR ONEOF (solid_with_hole,
solid_with_pocket,
solid_with_slot,
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_flat_bottom_round_hole
SUBTYPE OF (solid_with_stepped_round_hole);
fillet_radius : non_negative_length_measure;
WHERE
WR1: fillet_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments];
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_hole
ABSTRACT SUPERTYPE
OF (solid_with_stepped_round_hole)
SUBTYPE OF (solid_with_depression);
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_slot
ABSTRACT SUPERTYPE
OF ((ONEOF (solid_with_straight_slot,
solid_with_curved_slot))
AND (ONEOF (solid_with_trapezoidal_section_slot,
solid_with_tee_section_slot)))
SUBTYPE OF (solid_with_depression);
slot_width : positive_length_measure;
closed_ends : LIST[2:2] OF LOGICAL;
end_exit_faces : LIST[2:2] OF SET[0:?] OF face_surface;
WHERE
WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) AND (closed_ends
= [FALSE,FALSE]));
WR2: NOT (((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0)) OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2])
<> 0)));
END_ENTITY;
ENTITY solid_with_spherical_bottom_round_hole
SUBTYPE OF (solid_with_stepped_round_hole);
sphere_radius : positive_length_measure;
WHERE
WR1: sphere_radius >= SELF\solid_with_stepped_round_hole.segment_radii[segments];
END_ENTITY;
ENTITY solid_with_stepped_round_hole
SUPERTYPE OF
(solid_with_stepped_round_hole_and_conical_transitions
ANDOR ONEOF (solid_with_flat_bottom_round_hole,
solid_with_conical_bottom_round_hole,
solid_with_spherical_bottom_round_hole))
SUBTYPE OF (solid_with_hole);
segments : positive_integer;
segment_radii : LIST[1:segments] OF positive_length_measure;
segment_depths : LIST[1:segments] OF positive_length_measure;
DERIVE
SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF);
WHERE
WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF)
* ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE']) <> 0));
END_ENTITY;
ENTITY solid_with_stepped_round_hole_and_conical_transitions
SUBTYPE OF (solid_with_stepped_round_hole);
conical_transitions : SET[1:?] OF conical_stepped_hole_transition;
WHERE
WR1: SIZEOF(conical_transitions) <= (SELF\solid_with_stepped_round_hole.segments + 1);
WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions)
<= SELF\solid_with_stepped_round_hole.segments);
WR3: validate_countersink_radii(SELF);
END_ENTITY;
ENTITY solid_with_straight_slot
SUBTYPE OF (solid_with_slot);
slot_length : positive_length_measure;
END_ENTITY;
ENTITY solid_with_tee_section_slot
SUBTYPE OF (solid_with_slot);
tee_section_width : positive_length_measure;
collar_depth : positive_length_measure;
WHERE
WR1: collar_depth < SELF\solid_with_depression.depth;
WR2: tee_section_width > SELF\solid_with_slot.slot_width;
END_ENTITY;
ENTITY solid_with_through_depression
SUBTYPE OF (solid_with_depression);
exit_faces : SET[1:?] OF face_surface;
WHERE
WR1: SIZEOF(TYPEOF(SELF) * ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_HOLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_POCKET',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_SLOT']) = 1;
END_ENTITY;
ENTITY solid_with_trapezoidal_section_slot
SUBTYPE OF (solid_with_slot);
draft_angle : plane_angle_measure;
floor_fillet_radius : non_negative_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_task
SUBTYPE OF (task_element);
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 stitching_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY stitching_area_llai_specification
SUBTYPE OF (product_definition);
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 strategy_point
SUBTYPE OF (point_based_llai);
END_ENTITY;
ENTITY strategy_point_llai_specification
SUBTYPE OF (product_definition);
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.SET_REPRESENTATION_ITEM' IN TYPEOF(item)) AND
(SIZEOF(QUERY(it <* item | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
IN TYPEOF(it)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(it))))) = 0));
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;
WHERE
WR1: SELF :<>: parent_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))));
WR2: SELF :<>: parent_face;
END_ENTITY;
ENTITY subpath
SUBTYPE OF (path);
parent_path : path;
WHERE
WR1: SELF :<>: parent_path;
WR2: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(SELF)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH'
IN TYPEOF(parent_path)));
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_porosity_allowance_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY surface_porosity_allowance_area_llai_specification
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY surface_preparation_area
SUBTYPE OF (area_based_llai);
END_ENTITY;
ENTITY surface_preparation_area_llai_specification
SUBTYPE OF (product_definition);
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_shape_aspect
SUBTYPE OF (shape_aspect);
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;
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 task_element
SUPERTYPE OF
(ONEOF (concurrent_task_element,
end_task,
exit_loop,
looping_element,
task_element_sequence,
task_step))
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY task_element_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY;
ENTITY task_element_sequence
SUBTYPE OF (task_element);
END_ENTITY;
ENTITY task_invocation
SUBTYPE OF (task_element);
END_ENTITY;
ENTITY task_method
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY task_method_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY;
ENTITY task_method_version
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY task_method_version_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY;
ENTITY task_objective
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY task_step
SUBTYPE OF (task_element);
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_brep_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF brep_shape_representation_items_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: SIZEOF(QUERY(msb <* QUERY(it <* 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.TESSELLATED_FACE_SURFACE' IN
TYPEOF(fcs)))) = 0))) = 0))) = 0;
WR3: SIZEOF(QUERY(msb <* QUERY(it <* 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.TESSELLATED_EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) =
0))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY(msb <* QUERY(it <* 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.TESSELLATED_VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT' IN
TYPEOF(oe.edge_end))))) = 0))) =
0))) = 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.TESSELLATED_BREP_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
END_ENTITY;
ENTITY tessellated_closed_shell
SUBTYPE OF (closed_shell);
WHERE
WR1: SIZEOF(QUERY(fcs <* SELF\connected_face_set.cfs_faces | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE_SURFACE'
IN TYPEOF(fcs)))) = 0;
WR2: SIZEOF(QUERY(fcs <* SELF\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.TESSELLATED_EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) = 0))) = 0;
WR3: SIZEOF(QUERY(fcs <* SELF\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.TESSELLATED_VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT'
IN TYPEOF(oe.edge_end))))) =
0))) = 0))) = 0;
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_constructive_geometry_representation
SUBTYPE OF (tessellated_shape_representation);
SELF\representation.items : SET[1:?] OF tessellated_constructive_element_select;
END_ENTITY;
ENTITY tessellated_constructive_geometry_representation_relationship
SUBTYPE OF (representation_relationship);
SELF\representation_relationship.rep_1 : tessellated_constructive_geometry_representation_or_shape_representation;
SELF\representation_relationship.rep_2 : tessellated_constructive_geometry_representation;
WHERE
WR1: (SELF\representation_relationship.rep_1\representation.context_of_items :=: SELF\representation_relationship.rep_2\representation.context_of_items)
AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation_relationship.rep_1\representation.context_of_items));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
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_edge_curve
SUBTYPE OF (edge, geometric_representation_item);
tessellated_edge_geometry : tessellated_edge;
same_sense : BOOLEAN;
WHERE
WR1: NOT EXISTS(tessellated_edge_geometry\tessellated_edge.geometric_link) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'
IN TYPEOF(tessellated_edge_geometry\tessellated_edge.geometric_link));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF(SELF));
WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT' IN TYPEOF(SELF\edge.edge_start)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT'
IN TYPEOF(SELF\edge.edge_end));
WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE' IN TYPEOF(SELF)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE_CURVE'
IN TYPEOF(SELF\subedge.parent_edge));
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_face_surface
SUBTYPE OF (face, geometric_representation_item);
tessellated_face_geometry : tessellated_face;
same_sense : BOOLEAN;
WHERE
WR1: NOT EXISTS(tessellated_face_geometry\tessellated_face.geometric_link) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'
IN TYPEOF(tessellated_face_geometry\tessellated_face.geometric_link));
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(SELF));
WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(SELF)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE_SURFACE'
IN TYPEOF(SELF\subface.parent_face));
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_manifold_subsurface_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF tessellated_manifold_subsurface_shape_representation_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: 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.TESSELLATED_MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
WR3: SIZEOF(QUERY(cfss <* QUERY(it <* 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.TESSELLATED_OPEN_SHELL' IN TYPEOF(cfss))))
= 0;
WR4: SIZEOF(QUERY(cfss <* QUERY(it <* 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.TESSELLATED_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;
WR5: SIZEOF(QUERY(cfss <* QUERY(it <* 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.TESSELLATED_VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT'
IN TYPEOF(oe.edge_end))))) =
0))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY(cfss <* QUERY(it <* 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;
END_ENTITY;
ENTITY tessellated_manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF manifold_surface_shape_representation_select;
WHERE
WR1: SIZEOF(QUERY(it <* 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;
WR2: 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.TESSELLATED_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;
WR3: SIZEOF(QUERY(sbsm <* QUERY(it <* 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.TESSELLATED_OPEN_SHELL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CLOSED_SHELL'] *
TYPEOF(sh)) = 1))) = 0))) = 0;
END_ENTITY;
ENTITY tessellated_open_shell
SUBTYPE OF (open_shell);
WHERE
WR1: SIZEOF(QUERY(fcs <* SELF\connected_face_set.cfs_faces | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE_SURFACE'
IN TYPEOF(fcs)))) = 0;
WR2: SIZEOF(QUERY(fcs <* SELF\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.TESSELLATED_EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0))) = 0))) = 0;
WR3: SIZEOF(QUERY(fcs <* SELF\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.TESSELLATED_VERTEX_POINT' IN
TYPEOF(oe.edge_start)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX_POINT'
IN TYPEOF(oe.edge_end))))) =
0))) = 0))) = 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_vertex_point
SUBTYPE OF (vertex, geometric_representation_item);
tessellated_vertex_geometry : tessellated_vertex;
WHERE
WR1: NOT EXISTS(tessellated_vertex_geometry\tessellated_vertex.topological_link);
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(SELF));
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 thickness_laminate_table
SUBTYPE OF (zone_structural_makeup);
END_ENTITY;
ENTITY thin_slit_in_triangulated_shell_or_solid
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell,tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_representative_triangle];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
END_ENTITY;
ENTITY thin_thickness_of_triangulated_shell_or_solid
SUBTYPE OF (a3m_inapt_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_positive_length_measure;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[2:2] OF tsdq_inspected_element_type_name := [tsdqi_tessellated_shell,tsdqi_tessellated_solid];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[1:1] OF tsdq_type_name_for_location_of_extreme_value := [tsdqe_set_of_representative_triangle];
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold))
AND (tsdq_get_value_limit_type_name(SELF\a3m_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)
= SELF.measured_data_type);
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,
direction_feature_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, (
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 topology_to_geometry_item_association
SUBTYPE OF (item_defined_transformation);
SELF\item_defined_transformation.transform_item_1 : topology_association_item_select;
SELF\item_defined_transformation.transform_item_2 : geometry_association_item_select;
END_ENTITY;
ENTITY topology_to_geometry_model_association
SUBTYPE OF (representation_relationship_with_transformation, shape_representation_relationship);
SELF\representation_relationship_with_transformation.transformation_operator : set_item_defined_transformation;
DERIVE
items : SET OF item_defined_transformation := get_item_defined_transformations(transformation_operator);
INVERSE
product_context : SET[1:?] OF context_dependent_shape_representation FOR representation_relation;
WHERE
WR1: SIZEOF(QUERY(it <* items | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOPOLOGY_TO_GEOMETRY_ITEM_ASSOCIATION'
IN TYPEOF(it)))) = 0;
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINITIONAL_REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
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 triangle_edge
SUBTYPE OF (triangulated_face_element);
start_vertex_id : INTEGER;
WHERE
WR1: (1 <= start_vertex_id) AND (start_vertex_id <= 3);
END_ENTITY;
ENTITY triangle_edge_in_free_edge_loop
SUBTYPE OF (a3m_erroneous_triangulated_shape_data);
SELF\a3m_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
DERIVE
SELF\a3m_data_quality_criterion.measured_data_type : tsdq_measured_data_type_name := tsdqm_boolean_value;
SELF\a3m_data_quality_criterion.inspected_elements_types : LIST[1:1] OF tsdq_inspected_element_type_name := [tsdqi_triangle_edge];
SELF\a3m_data_quality_criterion.location_of_extreme_value_types : LIST[0:0] OF tsdq_type_name_for_location_of_extreme_value := [];
INVERSE
approximation_tolerance : tsdq_positive_length_measure_for_triangle_edge_in_free_edge_loop FOR criterion_to_assign_the_value;
WHERE
WR1: (SELF.approximation_tolerance.name = 'approximation_tolerance');
END_ENTITY;
ENTITY triangle_vertex
SUBTYPE OF (triangulated_face_element);
vertex_id : INTEGER;
WHERE
WR1: (1 <= vertex_id) AND (vertex_id <= 3);
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 <> SELF\tessellated_face.coordinates.npoints));
END_ENTITY;
ENTITY triangulated_face_element
ABSTRACT SUPERTYPE
OF (ONEOF (representative_triangle,
triangle_edge,
triangle_vertex,
adjacent_triangle_pair))
SUBTYPE OF (geometric_representation_item);
triangle_id : INTEGER;
base_face : triangulated_face;
WHERE
WR1: (triangle_id > 0) AND (triangle_id <= SIZEOF(base_face.triangles));
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 <> SELF\tessellated_surface_set.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 tsdq_inspection_element
SUBTYPE OF (representation_item);
INVERSE
inspected_element : tsdq_inspection_representation_item_relationship FOR related_representation_item;
END_ENTITY;
ENTITY tsdq_inspection_representation_item_relationship
SUBTYPE OF (representation_item_relationship);
SELF\representation_item_relationship.related_representation_item : tsdq_inspection_element;
WHERE
WR1: SIZEOF(TYPEOF(SELF\representation_item_relationship.relating_representation_item) * ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADJACENT_TRIANGLE_PAIR',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADJACENT_TRIANGULATED_FACE_PAIR', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_TRIANGLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CONNECTING_EDGE', '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.TRIANGLE_EDGE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGULATED_FACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_VERTEX'])
= 1;
END_ENTITY;
ENTITY tsdq_location_of_extreme_value
SUBTYPE OF (representation_item);
INVERSE
location_of_extreme_value : tsdq_location_of_extreme_value_representation_item_relationship FOR related_representation_item;
END_ENTITY;
ENTITY tsdq_location_of_extreme_value_representation_item_relationship
SUBTYPE OF (representation_item_relationship);
SELF\representation_item_relationship.related_representation_item : tsdq_location_of_extreme_value;
WHERE
WR1: SIZEOF(TYPEOF(SELF\representation_item_relationship.relating_representation_item) * ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_TRIANGLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_EDGE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGULATED_FACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_VERTEX'])
= 1;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_abrupt_normal_change_of_adjacent_faces
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : abrupt_normal_change_of_adjacent_faces;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_gap_in_triangulated_face
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : gap_in_triangulated_face;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_gap_in_triangulated_shell_or_solid
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : gap_in_triangulated_shell_or_solid;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_inconsistent_normals_of_adjacent_faces
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : inconsistent_normals_of_adjacent_faces;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_non_manifold_at_triangle_edge
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : non_manifold_at_triangle_edge;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_non_manifold_at_triangle_vertex
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : non_manifold_at_triangle_vertex;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_self_intersecting_triangulated_shell_or_solid
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : self_intersecting_triangulated_shell_or_solid;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
END_ENTITY;
ENTITY tsdq_positive_length_measure_for_triangle_edge_in_free_edge_loop
SUBTYPE OF (a3m_data_quality_criterion_specific_applied_value);
SELF\a3m_data_quality_criterion_specific_applied_value.criterion_to_assign_the_value : triangle_edge_in_free_edge_loop;
SELF\a3m_data_quality_criterion_specific_applied_value.applied_value : positive_length_measure;
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
OF (ONEOF (unary_function_call))
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_llai
SUBTYPE OF (limited_length_area_indicator);
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 uuid_attribute
ABSTRACT SUPERTYPE
OF (ONEOF (v5_uuid_attribute,
v4_uuid_attribute)
ANDOR uuid_attribute_with_approximate_location);
identifier : uuid;
identified_item : uuid_set_or_list_attribute_select;
UNIQUE
UR1: identifier;
END_ENTITY;
ENTITY uuid_attribute_with_approximate_location
SUBTYPE OF (uuid_attribute);
location_representation : shape_representation;
approximate_location : cartesian_point;
WHERE
WR1: location_representation IN using_representations(approximate_location);
END_ENTITY;
ENTITY uuid_context;
identifier : uuid;
frame_of_reference : STRING;
target : SET[1:?] OF uuid;
UNIQUE
UR1: identifier;
UR2: frame_of_reference, target;
WHERE
WR1: frame_of_reference <> '';
END_ENTITY;
ENTITY uuid_provenance;
identifier : uuid;
content : LIST[1:?] OF
UNIQUE
uuid_relationship;
UNIQUE
UR1: identifier;
END_ENTITY;
ENTITY uuid_relationship;
identifier : uuid;
uuid_1 : uuid;
uuid_2 : uuid;
role : uuid_relationship_role;
UNIQUE
UR1: identifier;
WHERE
WR1: uuid_1 <> uuid_2;
WR2: uuid_1 <> identifier;
WR3: uuid_2 <> identifier;
WR4: acyclic_uuid_relationship(SELF, [uuid_2], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UUID_RELATIONSHIP');
END_ENTITY;
ENTITY v4_uuid_attribute
SUBTYPE OF (uuid_attribute);
WHERE
WR1: SELF\uuid_attribute.identifier[14] = '4';
END_ENTITY;
ENTITY v5_uuid_attribute
SUBTYPE OF (uuid_attribute);
WHERE
WR1: SELF\uuid_attribute.identifier[14] = '5';
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_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 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;
ENTITY zone_structural_makeup
SUPERTYPE OF
(ONEOF ((thickness_laminate_table
AND smeared_material_definition), (
percentage_laminate_table
AND smeared_material_definition),
thickness_laminate_table,
percentage_laminate_table,
smeared_material_definition))
SUBTYPE OF (laminate_table);
END_ENTITY;
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 ap242_subtype_mandatory_shape_representation FOR
(application_context, shape_representation);
WHERE
WR1: NOT (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) OR (SIZEOF(QUERY(sr <* shape_representation
| NOT ((SIZEOF(ap242_shape_representation_reference_types * 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 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: ((SIZEOF(cartesian_point) = 0) AND (SIZEOF(direction) = 0) AND (SIZEOF(geometric_representation_context) = 0)) OR check_geometric_dimension(cartesian_point,
direction, geometric_representation_context);
END_RULE;
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.41-2019') OR
(adr\document_reference.assigned_document\document.id =
'ASME Y14.5M-1994') OR
(adr\document_reference.assigned_document\document.id =
'ASME Y14.5M-2018') OR
(adr\document_reference.assigned_document\document.id =
'ISO 1101') OR
(adr\document_reference.assigned_document\document.id =
'ISO 1101: 2004') OR
(adr\document_reference.assigned_document\document.id =
'ISO 8015') OR
(adr\document_reference.assigned_document\document.id =
'ISO 14405-1'))));
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 machining_feature_definition_constraints FOR
(feature_definition);
LOCAL
mfds : SET OF feature_definition := [];
END_LOCAL;
mfds := QUERY(temp
<* feature_definition
| 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MACHINING_FEATURE_DEFINITION' IN
TYPEOF(temp));WHERE
WR1: SIZEOF(QUERY(mfd <* mfds | NOT (SIZEOF(QUERY(pdr <*
get_property_definition_representations(mfd) | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation))) <= 1))) = 0;
WR2: SIZEOF(QUERY(mfd <* mfds | NOT (SIZEOF(QUERY(pd <* USEDIN(mfd,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION') | NOT
(SIZEOF(QUERY(impl_rep <* QUERY(pdr
<* USEDIN(pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
| 'AP242_MANAGED_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))) = 0;
WR3: SIZEOF(QUERY(mfd <* mfds | NOT ((NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REMOVAL_VOLUME', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLAT_FACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_END',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STEP']
* TYPEOF(mfds)) = 1)) OR ((SIZEOF(QUERY(pdr
<* get_property_definition_representations(mfd) | ('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))))) = 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 metadata_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.47-2023'))));
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 =
'Model Organization Practices')));
ra : SET OF role_association := (QUERY(ra
<* role_association
| ra\role_association.role\object_role.name =
'Model Organization Practices 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 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 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 tri_identification_within_product_definition FOR
(product_definition, topological_representation_item, representation);
LOCAL
associated_representations : SET [1 : ?] OF representation := [];
items : SET [1 : ?] OF topological_representation_item := [];
pd_items : SET [1 : ?] OF topological_representation_item := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := LOINDEX(product_definition) TO HIINDEX(product_definition)
WHILE pass;
pd_items := get_tri_for_pd(product_definition[i]);
associated_representations := get_representations_for_items(pd_items);
items := get_tri_in_representations(associated_representations) + pd_items;
IF (SIZEOF(items) > 0)
THEN
IF (SIZEOF(QUERY(ai
<* items
| NOT (EXISTS(ai\topological_representation_item.permanent_id) OR
EXISTS(ai\topological_representation_item.permanent_aggregate_id)))) >
0)
THEN
pass := valid_tri_ids(items);
END_IF;
END_IF;
END_REPEAT;WHERE
WR1: pass;
END_RULE;
RULE unique_datum_system FOR
(product_definition_shape, datum_system);
LOCAL
ds : SET OF datum_system := [];
sa : SET OF shape_aspect := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT ii := 1 TO SIZEOF(product_definition_shape)
WHILE pass;
sa := bag_to_set(USEDIN(product_definition_shape[ii], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'));
REPEAT iii := 1 TO SIZEOF(sa)
WHILE pass;
ds := QUERY(ds <* sa | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN TYPEOF(ds));
REPEAT i := 1 TO SIZEOF(ds);
REPEAT j := 1 TO SIZEOF(ds);
IF (i <> j)
THEN
IF ds[i]\datum_system.constituents = ds[j]\datum_system.constituents
THEN
pass := FALSE;
END_IF;
END_IF;
END_REPEAT;
END_REPEAT;
END_REPEAT;
END_REPEAT;WHERE
WR1: pass;
END_RULE;
RULE unique_gdt_element_id_constraint FOR
(dimensional_location, dimensional_size, geometric_tolerance, product_definition_shape, shape_aspect, shape_aspect_relationship);
LOCAL
bss : BAG OF STRING := [];
cum_bss : BAG OF STRING := [];
dssa : SET OF dimensional_size := [];
dssai : SET OF dimensional_size := [];
gtsi : SET OF geometric_tolerance := QUERY(gtsi <* geometric_tolerance | EXISTS(gtsi\geometric_tolerance.id));
sarsa : SET OF shape_aspect_relationship := [];
sarsai : SET OF shape_aspect_relationship := [];
ssa : SET OF shape_aspect := [];
ssai : 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'));
ssai := QUERY(sa <* ssa | EXISTS(sa\shape_aspect.id));
IF ((SIZEOF(ssai)) > 0) AND ((SIZEOF(ssai)) <> SIZEOF(ssa))
THEN
pass := FALSE;
END_IF;
REPEAT i := 1 TO SIZEOF(ssai);
IF (ssai[i] IN ssa)
THEN
bss := bss + ssai[i]\shape_aspect.id;
END_IF;
dssa := bag_to_set(USEDIN(ssai[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE.APPLIES_TO'));
dssai := QUERY(ds <* dssa | EXISTS(ds\dimensional_size.id));
IF ((SIZEOF(dssai)) > 0) AND ((SIZEOF(dssai)) <> SIZEOF(dssa))
THEN
pass := FALSE;
END_IF;
REPEAT j := 1 TO SIZEOF(dssai);
IF (dssai[j]\dimensional_size.applies_to IN ssa)
THEN
bss := bss + dssai[j]\dimensional_size.id;
END_IF;
END_REPEAT;
sarsa := bag_to_set(USEDIN(ssai[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'));
sarsai := QUERY(sar <* sarsa | EXISTS(sar\shape_aspect_relationship.id));
IF ((SIZEOF(sarsai)) > 0) AND ((SIZEOF(sarsai)) <> SIZEOF(sarsa))
THEN
pass := FALSE;
END_IF;
REPEAT j := 1 TO SIZEOF(sarsai);
IF (sarsai[j]\shape_aspect_relationship.relating_shape_aspect IN ssa)
THEN
bss := bss + sarsai[j]\shape_aspect_relationship.id;
END_IF;
END_REPEAT;
END_REPEAT;
cum_bss := cum_bss + bss;
END_REPEAT;
IF ((SIZEOF(gtsi)) > 0) AND ((SIZEOF(gtsi)) <> SIZEOF(geometric_tolerance))
THEN
pass := FALSE;
END_IF;
REPEAT j := 1 TO SIZEOF(gtsi);
IF (gtsi[j] IN geometric_tolerance)
THEN
cum_bss := cum_bss + gtsi[j]\geometric_tolerance.id;
END_IF;
IF (SIZEOF(bag_to_set(cum_bss)) <> SIZEOF(cum_bss))
THEN
pass := FALSE;
END_IF;
END_REPEAT;WHERE
WR1: pass;
END_RULE;
RULE valid_datum_geometry_correlation FOR
(datum, geometric_item_specific_usage, geometric_representation_item);
LOCAL
pass : BOOLEAN := TRUE;
gisu_cgr_set : SET OF geometric_item_specific_usage := [];
gisu_set : SET OF geometric_item_specific_usage := [];
gisu_tcgr_set : SET OF geometric_item_specific_usage := [];
END_LOCAL;
REPEAT i := 1 TO HIINDEX(datum);
gisu_cgr_set := bag_to_set(QUERY(gcs
<* (USEDIN(datum[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION'))
| 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN
TYPEOF(gcs\geometric_item_specific_usage.used_representation)));
IF (SIZEOF(gisu_cgr_set) > 1)
THEN
pass := FALSE;
END_IF;
gisu_tcgr_set := bag_to_set(QUERY(tgcs
<* (USEDIN(datum[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION'))
| 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN
TYPEOF(tgcs\geometric_item_specific_usage.used_representation)));
IF (SIZEOF(gisu_tcgr_set) > 1)
THEN
pass := FALSE;
END_IF;
gisu_set := bag_to_set(USEDIN(datum[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_ITEM_SPECIFIC_USAGE.DEFINITION'));
REPEAT j := 1 TO HIINDEX(gisu_set);
CASE TRUE OF
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN
TYPEOF(gisu_set[i]\geometric_item_specific_usage.used_representation)) : BEGIN
IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'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.LINE_AND_POINT_ON_PLANE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_ON_PLANE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_PLANE'] *
TYPEOF(gisu_set[i]\geometric_item_specific_usage.identified_item)) =
1)
THEN
pass := TRUE;
END_IF;
END;
OTHERWISE: pass := FALSE;
END_CASE;
CASE TRUE OF
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN
TYPEOF(gisu_set[i]\geometric_item_specific_usage.used_representation)) : BEGIN
IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CURVE_SET',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX'] *
TYPEOF(gisu_set[i]\geometric_item_specific_usage.identified_item)) =
1)
THEN
pass := TRUE;
END_IF;
END;
OTHERWISE: pass := FALSE;
END_CASE;
END_REPEAT;
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;
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;
-- aats is rep_item
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;
-- global accuracy check
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;
-- data_equivalence_inspection_instance_report
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;
-- data_equivalence_inspection_instance_report
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;
-- data_equivalence_inspection_criterion_report
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;
-- data_equivalence_inspection_instance_report
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;
-- aats is rep_item
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;
-- global accuracy check
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;
-- data_equivalence_inspection_instance_report
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;
-- data_equivalence_inspection_instance_report
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;
-- data_equivalence_inspection_criterion_report
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;
-- data_equivalence_inspection_instance_report
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.PRODUCT_DEFINITION_FORMATION_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;
-- IN is based in instance equality
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 := [];
-- loop as long as there are elements in rs1
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 ascribable_state_relationship;
END_LOCAL;
IF relation.relating_ascribable_state IN relatives
THEN
RETURN(FALSE);
END_IF;
-- IN is based in instance equality
x := QUERY(sdtsar
<* bag_to_set(USEDIN(relation.relating_ascribable_state, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASCRIBABLE_STATE_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 acyclic_uuid_relationship
(relation : uuid_relationship; relatives : SET[1:?] OF uuid; specific_relation : STRING) : BOOLEAN;
LOCAL
x : SET OF uuid_relationship;
END_LOCAL;
IF relation.uuid_1 IN relatives
THEN
RETURN(FALSE);
END_IF;
x := QUERY(am
<* bag_to_set(USEDIN(relation.uuid_1, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UUID_RELATIONSHIP.UUID_2'))
| specific_relation IN TYPEOF(am));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_uuid_relationship(x[i], relatives + relation.uuid_1, specific_relation)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
FUNCTION advanced_face_properties
(testface : face) : BOOLEAN;
(*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;
-- Should be unreachable.
RETURN(?);
END_FUNCTION;
FUNCTION aspect_ratio
(p : planar_box) : positive_ratio_measure;
IF (p.size_in_x > 0.0) AND (p.size_in_y > 0.0)
THEN
RETURN(p.size_in_x / p.size_in_y);
ELSE
RETURN(?);
END_IF;
END_FUNCTION;
FUNCTION assembly_leaf
(item : product_definition) : BOOLEAN;
LOCAL
local_relation : SET OF assembly_component_usage := [];
local_relation2 : BAG OF assembly_component_usage := [];
END_LOCAL;
-- extraction of related assembly_component_relationships --
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;
-- Identify type of first operand
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;
-- Identify type of second operand
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;
-- Construction for each combination of cases
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;
-- first check whether there is only one edge in the list: in this
-- case there is no connectivity to be checked.
IF (SIZEOF(edges) = 1)
THEN
RETURN(TRUE);
END_IF;
-- otherwise, establish the matching vertices of edges 1 and 2 in
-- the list, and determine the vertex of edge 2 to which edge 3,
-- must be connected, if there are more than two edges in the list.
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;
-- exit if there are only two edges and they are connected
IF (SIZEOF(edges) = 2)
THEN
RETURN(TRUE);
END_IF;
-- otherwise, check that any remaining edges are connected in list order.
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;
-- Determine whether the curve lies on a plane, according to its type
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[1:?] OF geometric_representation_context) : BOOLEAN;
LOCAL
globaldim : INTEGER := 0;
reps : SET [0 : ?] OF representation := [];
result : BOOLEAN := TRUE;
END_LOCAL;
globaldim := geometric_dimensionalities_in_contexts(grc);
IF (globaldim > 0)
THEN
IF (SIZEOF(capt) > 0)
THEN
REPEAT i := 1 TO HIINDEX(capt);
IF (HIINDEX(capt[i].coordinates) <> globaldim)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
IF (SIZEOF(dir) > 0)
THEN
REPEAT i := 1 TO HIINDEX(dir);
IF (HIINDEX(dir[i].direction_ratios) <> globaldim)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(result);
ELSE
IF (SIZEOF(capt) > 0)
THEN
REPEAT i := 1 TO HIINDEX(capt);
reps := using_representations(capt[i]);
IF (SIZEOF(reps) > 0)
THEN
REPEAT j := 1 TO HIINDEX(reps);
IF (HIINDEX(capt[i].coordinates) <>
reps[j].context_of_items\geometric_representation_context.coordinate_space_dimension)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
ELSE
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
IF (SIZEOF(dir) > 0)
THEN
REPEAT i := 1 TO HIINDEX(dir);
reps := using_representations(dir[i]);
IF (SIZEOF(reps) > 0)
THEN
REPEAT j := 1 TO HIINDEX(reps);
IF (HIINDEX(dir[i].direction_ratios) <>
reps[j].context_of_items\geometric_representation_context.coordinate_space_dimension)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
ELSE
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN(result);
END_FUNCTION;
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);
-- A consequence of WR1 of basic_sparse_matrix is that here we need only
-- consider the case that mthspc is a finite integer interval and is the only
-- factor space of 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;
-- create a set of all the alignments
REPEAT i := 1 TO HIINDEX(ct.collected_text);
a := a + [ct.collected_text[i]\text_literal.alignment];
END_REPEAT;
-- if there is more than one element in the set
-- then not all alignments were the same
RETURN(SIZEOF(a) = 1);
END_FUNCTION;
FUNCTION check_text_font
(ct : composite_text) : BOOLEAN;
LOCAL
f : SET OF font_select := [];
END_LOCAL;
-- build a set of all the fonts
REPEAT i := 1 TO HIINDEX(ct.collected_text);
f := f + [ct.collected_text[i]\text_literal.font];
END_REPEAT;
-- if there is more than one element in the set
-- then not all fonts were the same
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;
-- Make do with imperfect tests for remaining cases.
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;
-- Two polar regions with different centres
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;
-- All other cases are incompatible
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;
-- Should be unreachable.
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 rotation is already a ypr_rotation, return it immediately
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.YPR_ROTATION' IN TYPEOF(rotation)
THEN
RETURN(rotation);
END_IF;
-- rotation is a rotation_about_direction
axis := normalise(rotation\rotation_about_direction.direction_of_axis);
angle := rotation\rotation_about_direction.rotation_angle;
-- a zero rotation is converted trivially
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];
-- provide angle measured in radian
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);
-- axis parallel either to x-axis or to z-axis?
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;
-- axis parallel to y-axis - use y-axis as pitch axis
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;
-- axis not parallel to any axis of coordinate system
-- compute rotation matrix
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]];
-- rotmat[1][3] equals SIN (pitch_angle)
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;
-- Should be unreachable
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_maths_value
(val : GENERIC : G) : maths_value;
LOCAL
types : SET OF STRING := TYPEOF(val);
ival : maths_integer;
rval : maths_real;
nval : maths_number;
tfval : maths_boolean;
lval : maths_logical;
sval : maths_string;
bval : maths_binary;
tval : maths_tuple := the_empty_maths_tuple;
mval : maths_value;
END_LOCAL;
IF (schema_prefix + 'MATHS_VALUE') IN types
THEN
RETURN(val);
END_IF;
IF 'INTEGER' IN types
THEN
ival := val;
RETURN(ival);
END_IF;
IF 'REAL' IN types
THEN
rval := val;
RETURN(rval);
END_IF;
IF 'NUMBER' IN types
THEN
nval := val;
RETURN(nval);
END_IF;
IF 'BOOLEAN' IN types
THEN
tfval := val;
RETURN(tfval);
END_IF;
IF 'LOGICAL' IN types
THEN
lval := val;
RETURN(lval);
END_IF;
IF 'STRING' IN types
THEN
sval := val;
RETURN(sval);
END_IF;
IF 'BINARY' IN types
THEN
bval := val;
RETURN(bval);
END_IF;
IF 'LIST' IN types
THEN
REPEAT i := 1 TO SIZEOF(val);
mval := convert_to_maths_value(val[i]);
IF NOT EXISTS(mval)
THEN
RETURN(?);
END_IF;
INSERT(tval, mval, i - 1);
END_REPEAT;
RETURN(tval);
END_IF;
RETURN(?);
END_FUNCTION;
FUNCTION convert_to_operand
(val : maths_value) : generic_expression;
LOCAL
types : SET OF STRING := stripped_typeof(val);
END_LOCAL;
-- Use intermediate variables of appropriate declared types to help the compilers.
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;
-- Should be unreachable
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 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;
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;
-- An ambiguity in ISO 10303-11:1994 pages 99-101 leaves the result of the following
-- three lines ambiguous in those cases where an operand is simultaneously a member
-- of the base type and the aggregate type.
-- REPEAT i := 1 TO SIZEOF (pairs);
-- result := result + pairs[i][1];
-- END_REPEAT;
-- The next line unions an empty set and the desired list to get the desired set.
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;
-- An ambiguity in ISO 10303-11:1994 pages 99-101 leaves the result of the following
-- three lines ambiguous in those cases where an operand is simultaneously a member
-- of the base type and the aggregate type.
-- REPEAT i := 1 TO SIZEOF (pairs);
-- result := result + pairs[i][2];
-- END_REPEAT;
-- The next line unions an empty set and the desired list to get the desired set.
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;
-- Unreachable, as no other subtypes of maths_function are permissible without
-- first modifying this function to account for them.
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;
-- Unreachable, as no other subtypes of maths_function are permissible without
-- first modifying this function to account for them.
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;
-- For cartesian_point, direction, or vector dimension is determined by
-- counting components.
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;
-- For all other types of geometric_representation_item dim is obtained
-- via context.
-- Find the set of representation in which the item is used.
x := using_representations(item);
-- Determines the dimension_count of the
-- geometric_representation_context.
-- The SET x is non-empty for legal instances since this is required by WR1 of
-- representation_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;
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;
-- Extract elementary input information
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;
-- Identify base direction with respect to which all relevant directions lie
-- within +/- 0.5*PI, or that the centre lies properly inside crgn.
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;
-- Identify any closest point on a side but not a corner.
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;
-- Extract elementary input data
xc := prgn.centre.real_part;
yc := prgn.centre.imag_part;
ritv := prgn.distance_constraint;
aitv := prgn.direction_constraint;
-- Determine xmin data
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;
-- Determine xmax data
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;
-- Determine ymin data
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;
-- Determine ymax data
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;
-- Construct result
IF NOT (xmin_exists OR xmax_exists OR ymin_exists OR ymax_exists)
THEN
RETURN(?);
END_IF;
-- Construct real_constraint
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;
-- Construct imag_constraint
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;
-- Construct cartesian region
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;
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;
-- Extract elementary input information
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);
-- Analyse cases by existence of max distance and direction limits
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);
-- Construct polar region
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;
-- A lot of further analysis is possible, but not required.
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;
-- Consider cases where it is not yet certain that spc1 <> spc2.
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 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;
-- Should not be reachable.
RETURN(?);
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;
-- Should not be reachable.
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;
-- Is constituent root ? --
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;
-- find representative_shape_representation of the product_definition
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;
-- find representative_shape_representation of the shape_aspect
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;
-- find product_definition_shape representing the product_definiton
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);
-- find shape_definition_representations refereing to the local_p_d_s
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;
-- find property_definition representing the shape_aspect
local_p_d := bag_to_set(USEDIN(item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
-- find shape_definition_representations refereing to the local_p_d
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;
-- In this case the subtype shall not contain any variable (see IP1 in
-- generic_expression).
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;
-- scan adrs_raw for associated role 'mandatory' and fill adrs_filtered with results
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;
-- scan through adrs_filtered and access associated product.id s
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_item_defined_transformations
(input : set_item_defined_transformation) : SET OF item_defined_transformation;
LOCAL
item_set : SET OF item_defined_transformation := [];
END_LOCAL;
REPEAT i := 1 TO HIINDEX(input);
item_set := item_set + input[i];
END_REPEAT;
RETURN(item_set);
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;
-- determine plane of implicit geometry from the underlying entity data
-- type of its owning instance of positioned_sketch_representation. If
-- the sketch basis is of type planar_curve_select then the planarity
-- of the curve is guaranteed by a WHERE rule on the SELECT type of that
-- name.
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_product_definition_shape
(current : constituent_shape_aspect) : product_definition_shape;
REPEAT WHILE ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONSTITUENT_SHAPE_ASPECT' IN
TYPEOF(current.parent));
current := current.parent;
END_REPEAT;
RETURN(current.parent\shape_aspect.of_shape);
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;
-- check that input points are three-dimensional
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_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 get_tri_for_pd
(def_instance : product_definition) : SET OF topological_representation_item;
LOCAL
pd1_set : SET OF property_definition := bag_to_set(USEDIN(def_instance, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
pd2_set : SET OF property_definition := [];
pdr_set : SET OF property_definition_representation := [];
pds_set : SET OF product_definition_shape := [];
r_set : SET OF representation := [];
sa_set : SET OF shape_aspect := [];
tri_set : SET OF topological_representation_item := [];
END_LOCAL;
IF (SIZEOF(pd1_set) < 1)
THEN
RETURN(?);
END_IF;
REPEAT i := LOINDEX(pd1_set) TO HIINDEX(pd1_set);
pdr_set := pdr_set +
bag_to_set(USEDIN(pd1_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd1_set[i])
THEN
pds_set := pds_set + pd1_set[i];
END_IF;
END_REPEAT;
REPEAT i := LOINDEX(pds_set) TO HIINDEX(pds_set);
sa_set := sa_set +
bag_to_set(USEDIN(pds_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'));
END_REPEAT;
REPEAT i := LOINDEX(sa_set) TO HIINDEX(sa_set);
pd2_set := pd2_set +
bag_to_set(USEDIN(sa_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
END_REPEAT;
IF (SIZEOF(pd2_set) > 0)
THEN
BEGIN
REPEAT i := LOINDEX(pd2_set) TO HIINDEX(pd2_set);
pdr_set := pdr_set +
bag_to_set(USEDIN(pd2_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
END_REPEAT;
END;
END_IF;
IF (SIZEOF(pdr_set) < 1)
THEN
RETURN(?);
END_IF;
REPEAT i := LOINDEX(pdr_set) TO HIINDEX(pdr_set);
r_set := r_set + pdr_set[i]\property_definition_representation.used_representation;
END_REPEAT;
IF (SIZEOF(r_set) < 1)
THEN
RETURN(?);
END_IF;
REPEAT i := LOINDEX(r_set) TO HIINDEX(r_set);
REPEAT j := LOINDEX(r_set[i]\representation.items) TO HIINDEX(r_set[i]\representation.items);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOPOLOGICAL_REPRESENTATION_ITEM' IN
TYPEOF(r_set[i]\representation.items[j]))
THEN
tri_set := tri_set + r_set[i]\representation.items[j];
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(tri_set);
END_FUNCTION;
FUNCTION get_tri_in_representations
(members : SET OF representation) : SET OF topological_representation_item;
LOCAL
tri_set : SET OF topological_representation_item := [];
END_LOCAL;
IF SIZEOF(members) = 0
THEN
RETURN(?);
END_IF;
REPEAT i := LOINDEX(members) TO HIINDEX(members);
REPEAT j := LOINDEX(members[i]\representation.items) TO HIINDEX(members[i]\representation.items);
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOPOLOGICAL_REPRESENTATION_ITEM' IN
TYPEOF(members[i]\representation.items[j])
THEN
tri_set := tri_set + members[i]\representation.items[j];
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(tri_set);
END_FUNCTION;
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 there is one or more representation using both the item
-- and cntxt return true.
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 when all possible branches have been checked
-- with no success.
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.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_external_image
(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;
-- Iterate over the input, ensuring the points that are in the set are the subtypes we want.
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) > 0
THEN
pass := FALSE;
END_IF;
IF SIZEOF(placements) <> 1
THEN
pass := FALSE;
END_IF;
RETURN(pass);
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;
-- Iterate over the input, ensuring the points that are in the set are the subtypes we want.
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(placements) <> 1
THEN
pass := FALSE;
END_IF;
RETURN(pass);
END_FUNCTION;
FUNCTION member_of
(val : GENERIC : G; spc : maths_space) : LOGICAL;
FUNCTION fedex(val : AGGREGATE OF GENERIC:X;
i : INTEGER) : GENERIC:X;
RETURN(val[i]);
END_FUNCTION;
LOCAL
v : maths_value := simplify_maths_value(convert_to_maths_value(val));
vtypes : SET OF STRING := stripped_typeof(v);
s : maths_space := simplify_maths_space(spc);
stypes : SET OF STRING := stripped_typeof(s);
tmp_int : INTEGER;
tmp_real : REAL;
tmp_cmplx : complex_number_literal;
lgcl : LOGICAL;
cum : LOGICAL;
vspc : maths_space;
sspc : maths_space;
smem : SET OF maths_value;
factors : LIST OF maths_space;
END_LOCAL;
IF NOT EXISTS(s)
THEN
RETURN(FALSE);
END_IF;
IF NOT EXISTS(v)
THEN
RETURN(s = the_generics);
END_IF;
IF ('GENERIC_EXPRESSION' IN vtypes) AND
NOT ('MATHS_SPACE' IN vtypes) AND NOT ('MATHS_FUNCTION' IN vtypes) AND NOT ('COMPLEX_NUMBER_LITERAL' IN vtypes)
THEN
IF has_values_space(v)
THEN
vspc := values_space_of(v);
IF subspace_of(vspc, s)
THEN
RETURN(TRUE);
END_IF;
IF NOT compatible_spaces(vspc, s)
THEN
RETURN(FALSE);
END_IF;
RETURN(UNKNOWN);
END_IF;
RETURN(UNKNOWN);
END_IF;
IF 'ELEMENTARY_SPACE' IN stypes
THEN
CASE s\elementary_space.space_id OF
es_numbers : RETURN(('NUMBER' IN vtypes) OR ('COMPLEX_NUMBER_LITERAL' IN vtypes));
es_complex_numbers : RETURN('COMPLEX_NUMBER_LITERAL' IN vtypes);
es_reals : RETURN(('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes));
es_integers : RETURN('INTEGER' IN vtypes);
es_logicals : RETURN('LOGICAL' IN vtypes);
es_booleans : RETURN('BOOLEAN' IN vtypes);
es_strings : RETURN('STRING' IN vtypes);
es_binarys : RETURN('BINARY' IN vtypes);
es_maths_spaces : RETURN('MATHS_SPACE' IN vtypes);
es_maths_functions : RETURN('MATHS_FUNCTION' IN vtypes);
es_generics : RETURN(TRUE);
END_CASE;
END_IF;
IF 'FINITE_INTEGER_INTERVAL' IN stypes
THEN
IF 'INTEGER' IN vtypes
THEN
tmp_int := v;
RETURN({s\finite_integer_interval.min <= tmp_int <= 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;
-- Should be unreachable
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
*)
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
*)
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
*)
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
*)
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;
-- spc contains no references to other spaces
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 pmidq_get_inspected_element_type_name
(ei : SET[1:?] OF inspected_element_select) : pmidq_inspected_element_type_name;
LOCAL
type_out : SET OF STRING;
END_LOCAL;
IF (SIZEOF(ei) > 2)
THEN
RETURN(pmidqi_others);
END_IF;
IF (SIZEOF(ei) = 2)
THEN
IF (TYPEOF(ei[1]) = TYPEOF(ei[2]))
THEN
type_out := TYPEOF(ei[1]);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN type_out)
THEN
RETURN(pmidqi_datum_pair);
END_IF;
END_IF;
ELSE
IF (SIZEOF(ei) = 1)
THEN
type_out := TYPEOF(ei[1]);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN type_out)
THEN
RETURN(pmidqi_datum);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN type_out)
THEN
RETURN(pmidqi_datum_system);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' IN type_out)
THEN
RETURN(pmidqi_datum_target);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN type_out)
THEN
RETURN(pmidqi_dimensional_location);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN type_out)
THEN
RETURN(pmidqi_dimensional_size);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN type_out)
THEN
RETURN(pmidqi_geometric_tolerance);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN type_out)
THEN
RETURN(pmidqi_shape_aspect);
END_IF;
END_IF;
END_IF;
RETURN(pmidqi_others);
END_FUNCTION;
FUNCTION pmidq_get_measured_type_name
(ei : a3m_data_quality_measured_value_select) : pmidq_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(pmidqm_boolean_value);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN type_out)
THEN
RETURN(pmidqm_positive_length_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN type_out)
THEN
RETURN(pmidqm_positive_plane_angle_measure);
END_IF;
RETURN(pmidqm_others);
END_FUNCTION;
FUNCTION pmidq_get_value_limit_type
(sdqvlts : shape_data_quality_value_limit_type_select) : pmidq_measured_data_type_name;
LOCAL
type_out : SET OF STRING := [];
END_LOCAL;
type_out := value_limit_type(sdqvlts);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN type_out)
THEN
RETURN(pmidqm_positive_length_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN type_out)
THEN
RETURN(pmidqm_positive_plane_angle_measure);
END_IF;
RETURN(pmidqm_others);
END_FUNCTION;
FUNCTION pmidq_validate_element_types
(ir : data_quality_inspection_report; cr : a3m_pmi_data_quality_criterion) : LOGICAL;
LOCAL
aqiiri : a3m_data_quality_inspection_instance_report_item;
dqiir : data_quality_inspection_instance_report;
pietn : LIST [1 : ?] OF pmidq_inspected_element_type_name;
END_LOCAL;
pietn := cr.inspected_elements_types;
-- Data_quality_inspection_instance_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ir))
THEN
dqiir := ir;
REPEAT i := 1 TO SIZEOF(dqiir.inspected_instances);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqiiri := dqiir.inspected_instances[i];
IF (NOT (pmidq_get_inspected_element_type_name(aqiiri.inspected_elements) IN pietn))
THEN
RETURN(FALSE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION;
FUNCTION pmidq_validate_measured_type
(ir : data_quality_inspection_report; cr : a3m_pmi_data_quality_criterion) : LOGICAL;
LOCAL
aqicri : a3m_data_quality_inspection_criterion_report_item;
aqiiri : a3m_data_quality_inspection_instance_report_item;
aqirie : a3m_instance_report_item_with_extreme_instances;
dqicr : data_quality_inspection_criterion_report;
dqiir : data_quality_inspection_instance_report;
pmdtn : pmidq_measured_data_type_name;
END_LOCAL;
pmdtn := cr.measured_data_type;
-- Data_quality_inspection_criterion_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_CRITERION_REPORT' IN TYPEOF(ir))
THEN
dqicr := ir;
REPEAT i := 1 TO SIZEOF(dqicr.statistical_values);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_CRITERION_REPORT_ITEM' IN
TYPEOF(dqicr.statistical_values[i]))
THEN
aqicri := dqicr.statistical_values[i];
IF (pmidq_get_measured_type_name(aqicri.representative_measured_value) <> pmdtn)
THEN
RETURN(FALSE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
-- Data_quality_inspection_instance_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ir))
THEN
dqiir := ir;
REPEAT i := 1 TO SIZEOF(dqiir.inspected_instances);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqiiri := dqiir.inspected_instances[i];
IF (pmidq_get_measured_type_name(aqiiri.representative_measured_value) <> pmdtn)
THEN
RETURN(FALSE);
END_IF;
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqirie := dqiir.inspected_instances[i];
REPEAT j := 1 TO SIZEOF(aqirie.extreme_instances);
IF (pmidq_get_measured_type_name(aqirie.extreme_instances[j].measured_value) <> pmdtn)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
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;
-- find extreme_instances
exti := exti +
bag_to_set(USEDIN(item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTREME_INSTANCE.LOCATIONS_OF_EXTREME_VALUE'));
-- find instance_report_item_with_extreme_instances
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;
-- find shape_data_quality_inspection_instance_report
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;
-- find shape_data_quality_inspection_result_representation
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;
-- find shape_data_quality_inspected_shape_and_result_relationship
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;
-- find shape_representation
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;
*)
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;
-- Unwrap the elementary kinds of literals
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;
-- Simplify one special class of literals
IF 'MATHS_SPACE' IN types
THEN
RETURN(simplify_maths_space(expr));
END_IF;
-- Simplify one special kind of expression
IF 'FUNCTION_APPLICATION' IN types
THEN
RETURN(simplify_function_application(expr));
END_IF;
-- Separate and simplify the operands
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;
-- Simplify the one kind of maths_function which derives its operands.
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;
-- Simplify individual kinds of expressions. It is not necessary to cover all cases.
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;
-- No special simplification defined, return same with simplified operands.
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;
-- Should be unreachable, but for safety, return unsimplified expression.
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;
-- Should be unreachable
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 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;
-- Should be unreachable
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 tsdq_get_inspected_element_type_name
(ei : SET[1:?] OF inspected_element_select) : tsdq_inspected_element_type_name;
LOCAL
tie : tsdq_inspection_element;
type_out : SET OF STRING := [];
END_LOCAL;
IF (SIZEOF(ei) > 1)
THEN
RETURN(tsdqi_others);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TSDQ_INSPECTION_ELEMENT' IN TYPEOF(ei[1]))
THEN
tie := ei[1];
type_out := TYPEOF(tie.inspected_element.relating_representation_item);
ELSE
RETURN(tsdqi_others);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADJACENT_TRIANGLE_PAIR' IN type_out)
THEN
RETURN(tsdqi_adjacent_triangle_pair);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADJACENT_TRIANGULATED_FACE_PAIR' IN type_out)
THEN
RETURN(tsdqi_adjacent_triangulated_face_pair);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_TRIANGLE' IN type_out)
THEN
RETURN(tsdqi_representative_triangle);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CONNECTING_EDGE' IN type_out)
THEN
RETURN(tsdqi_tessellated_connecting_edge);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL' IN type_out)
THEN
RETURN(tsdqi_tessellated_shell);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID' IN type_out)
THEN
RETURN(tsdqi_tessellated_solid);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_EDGE' IN type_out)
THEN
RETURN(tsdqi_triangle_edge);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGULATED_FACE' IN type_out)
THEN
RETURN(tsdqi_triangulated_face);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_VERTEX' IN type_out)
THEN
RETURN(tsdqi_triangle_vertex);
END_IF;
RETURN(tsdqi_others);
END_FUNCTION;
FUNCTION tsdq_get_measured_type_name
(ei : a3m_data_quality_measured_value_select) : tsdq_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(tsdqm_area_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
THEN
RETURN(tsdqm_boolean_value);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
THEN
RETURN(tsdqm_count_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN type_out)
THEN
RETURN(tsdqm_positive_length_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN type_out)
THEN
RETURN(tsdqm_positive_plane_angle_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN type_out)
THEN
RETURN(tsdqm_ratio_measure);
END_IF;
RETURN(tsdqm_others);
END_FUNCTION;
FUNCTION tsdq_get_type_name_for_location_of_extreme_value
(ei : SET[1:?] OF a3m_location_of_extreme_value_select) : tsdq_type_name_for_location_of_extreme_value;
LOCAL
type_out : SET OF STRING;
tlev : tsdq_location_of_extreme_value;
END_LOCAL;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TSDQ_LOCATION_OF_EXTREME_VALUE' IN TYPEOF(ei[1]))
THEN
tlev := ei[1];
type_out := TYPEOF(tlev.location_of_extreme_value.relating_representation_item);
ELSE
RETURN(tsdqe_others);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_VERTEX' IN type_out)
THEN
IF (SIZEOF(ei) = 1)
THEN
RETURN(tsdqe_triangle_vertex);
ELSE
RETURN(tsdqe_others);
END_IF;
END_IF;
(*Check elements of the set is same type*)
REPEAT i := 2 TO SIZEOF(ei);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TSDQ_LOCATION_OF_EXTREME_VALUE' IN TYPEOF(ei[i]))
THEN
tlev := ei[i];
IF (TYPEOF(tlev.location_of_extreme_value.relating_representation_item) <> type_out)
THEN
RETURN(tsdqe_others);
END_IF;
ELSE
RETURN(tsdqe_others);
END_IF;
END_REPEAT;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_TRIANGLE' IN type_out)
THEN
RETURN(tsdqe_set_of_representative_triangle);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL' IN type_out)
THEN
RETURN(tsdqe_set_of_tessellated_shell);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGLE_EDGE' IN type_out)
THEN
RETURN(tsdqe_set_of_triangle_edge);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIANGULATED_FACE' IN type_out)
THEN
RETURN(tsdqe_set_of_triangulated_face);
END_IF;
RETURN(tsdqe_others);
END_FUNCTION;
FUNCTION tsdq_get_value_limit_type_name
(sdqvlts : shape_data_quality_value_limit_type_select) : tsdq_measured_data_type_name;
LOCAL
type_out : SET OF STRING := [];
END_LOCAL;
type_out := value_limit_type(sdqvlts);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
THEN
RETURN(tsdqm_area_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
THEN
RETURN(tsdqm_count_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN type_out)
THEN
RETURN(tsdqm_positive_length_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN type_out)
THEN
RETURN(tsdqm_positive_plane_angle_measure);
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN type_out)
THEN
RETURN(tsdqm_ratio_measure);
END_IF;
RETURN(tsdqm_others);
END_FUNCTION;
FUNCTION tsdq_validate_element_types
(ir : data_quality_inspection_report; cr : a3m_triangulated_shape_data_quality_criterion) : LOGICAL;
LOCAL
aqiiri : a3m_data_quality_inspection_instance_report_item;
dqiir : data_quality_inspection_instance_report;
tietn : LIST [1 : ?] OF tsdq_inspected_element_type_name;
END_LOCAL;
tietn := cr.inspected_elements_types;
-- data_quality_inspection_instance_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ir))
THEN
dqiir := ir;
REPEAT i := 1 TO SIZEOF(dqiir.inspected_instances);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqiiri := dqiir.inspected_instances[i];
IF (NOT (tsdq_get_inspected_element_type_name(aqiiri.inspected_elements) IN tietn))
THEN
RETURN(FALSE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION;
FUNCTION tsdq_validate_location_of_extreme_value_types
(ir : data_quality_inspection_report; cr : a3m_triangulated_shape_data_quality_criterion) : LOGICAL;
LOCAL
aqirie : a3m_instance_report_item_with_extreme_instances;
dqiir : data_quality_inspection_instance_report;
ttnle : LIST [0 : ?] OF tsdq_type_name_for_location_of_extreme_value;
END_LOCAL;
ttnle := cr.location_of_extreme_value_types;
-- data_quality_inspection_instance_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ir))
THEN
dqiir := ir;
REPEAT i := 1 TO SIZEOF(dqiir.inspected_instances);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqirie := dqiir.inspected_instances[i];
IF (SIZEOF(ttnle) = 0)
THEN
RETURN(FALSE);
END_IF;
REPEAT j := 1 TO SIZEOF(aqirie.extreme_instances);
IF (NOT (tsdq_get_type_name_for_location_of_extreme_value(aqirie.extreme_instances[j].locations_of_extreme_value) IN
ttnle))
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION;
FUNCTION tsdq_validate_measured_type
(ir : data_quality_inspection_report; cr : a3m_triangulated_shape_data_quality_criterion) : LOGICAL;
LOCAL
aqicri : a3m_data_quality_inspection_criterion_report_item;
aqiiri : a3m_data_quality_inspection_instance_report_item;
aqirie : a3m_instance_report_item_with_extreme_instances;
dqicr : data_quality_inspection_criterion_report;
dqiir : data_quality_inspection_instance_report;
tmdtn : tsdq_measured_data_type_name;
END_LOCAL;
tmdtn := cr.measured_data_type;
-- data_quality_inspection_criterion_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_CRITERION_REPORT' IN TYPEOF(ir))
THEN
dqicr := ir;
REPEAT i := 1 TO SIZEOF(dqicr.statistical_values);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_CRITERION_REPORT_ITEM' IN
TYPEOF(dqicr.statistical_values[i]))
THEN
aqicri := dqicr.statistical_values[i];
IF (tsdq_get_measured_type_name(aqicri.representative_measured_value) <> tmdtn)
THEN
RETURN(FALSE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
-- data_quality_inspection_instance_report
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ir))
THEN
dqiir := ir;
REPEAT i := 1 TO SIZEOF(dqiir.inspected_instances);
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqiiri := dqiir.inspected_instances[i];
IF (tsdq_get_measured_type_name(aqiiri.representative_measured_value) <> tmdtn)
THEN
RETURN(FALSE);
END_IF;
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
TYPEOF(dqiir.inspected_instances[i]))
THEN
aqirie := dqiir.inspected_instances[i];
REPEAT j := 1 TO SIZEOF(aqirie.extreme_instances);
IF (tsdq_get_measured_type_name(aqirie.extreme_instances[j].measured_value) <> tmdtn)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
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;
-- find product_definitions represented by the input
-- representative_shape_representation
local_p_d := using_product_definition_of_shape_representation(item);
-- ERROR
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;
-- find shape_aspects represented by the input
-- representative_shape_representation
local_s_a := using_shape_aspect_of_shape_representation(item);
-- ERROR
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;
-- Find the set of representation_items or founded_items
-- in which item is used directly.
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 the set of next_items is not empty;
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 the set of representation_items or founded_items
-- in which the input item is used directly and indirectly.
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;
-- find shape_definition_representations
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));
-- find product_definition_shape & product_definitions
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;
-- find the representations in which the item is used
-- and which is referenced from the representation_map
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;
-- Find the representations in which the item is used and add to the
-- results set.
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;
-- Find all representation_items or founded_items
-- by which item is referenced directly or indirectly.
intermediate_items := using_items(item, []);
-- If the set of intermediate items is not empty;
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 the set of representation in which the input item is
-- used directly and indirectly (through intervening
-- representation_items or founded items).
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;
-- find shape_definition_representations
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);
-- find shape_aspects
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_identified_item_in_representation
(identified_item : item_identified_representation_usage_select; used_representation : representation) : BOOLEAN;
LOCAL
i : INTEGER := 1;
END_LOCAL;
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(identified_item)
THEN
RETURN(used_representation IN using_representations(identified_item));
END_IF;
IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIST_REPRESENTATION_ITEM' IN TYPEOF(identified_item)) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SET_REPRESENTATION_ITEM' IN TYPEOF(identified_item))
THEN
REPEAT WHILE (EXISTS(identified_item[i]));
IF NOT (used_representation IN using_representations(identified_item[i]))
THEN
RETURN(FALSE);
END_IF;
i := i + 1;
END_REPEAT;
RETURN(TRUE);
END_IF;
RETURN(?);
END_FUNCTION;
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;
-- the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range
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_tri_ids
(objs : SET OF topological_representation_item) : BOOLEAN;
LOCAL
values : BAG OF identifier := [];
END_LOCAL;
REPEAT i := LOINDEX(objs) TO HIINDEX(objs);
IF NOT (EXISTS(objs[i]\topological_representation_item.permanent_id) OR
EXISTS(objs[i]\topological_representation_item.permanent_aggregate_id))
THEN
RETURN(FALSE);
END_IF;
values := values + objs[i]\topological_representation_item.permanent_id +
objs[i]\topological_representation_item.permanent_aggregate_id;
END_REPEAT;
-- ids are unique across both types
IF SIZEOF(bag_to_set(values)) <> SIZEOF(values)
THEN
RETURN(FALSE);
END_IF;
RETURN(TRUE);
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;
-- STEP-1
-- collect types of range attribute of shape_measurement_accuracy
-- referred from shape_data_quality_criterion_and_accuracy_association
-- that refers to given shape_data_quality_criterion.
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;
-- STEP-3
-- collect types of range attribute of shape_measurement_accuracy
-- referred from shape_inspection_result_accuracy_association
-- that refers to shape_data_quality_inspection_result
-- for the given shape_data_quality_criterion.
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;
-- check that indentifier starts with a letter
IF NOT (attid[1] IN letters)
THEN
id_valid := FALSE;
END_IF;
-- check that no invalid characters occur subsequently
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;
-- STEP-1
-- collect all externally_conditioned_data_quality_inspection_instance_report_item
-- instances associated with the given externally_conditioned_data_quality_criterion
-- via externally_conditioned_data_quality_inspection_result and
-- data_quality_inspection_instance_report
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;
-- STEP-2
-- check if the types of inspected_elements of the collected
-- instances are exactly coincident with the type names in the
-- type list given as an input argument of this function.
-- If there is no instance_report_item, then this function returns true.
IF (SIZEOF(sdiri) = 0)
THEN
RETURN(TRUE);
END_IF;
-- When reports exist, then perform the following checking process.
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;
-- STEP-1
-- collect all shape_data_quality_inspection_instance_report_item
-- instances associated with the given shape_data_quality_criterion
-- via shape_data_quality_inspection_result and
-- shape_data_quality_inspection_instance_report
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;
-- STEP-2
-- check if the types of inspected_elements of the collected
-- instances are exactly coincident with the type names in the
-- type list given as an input argument of this function.
-- If there is no instance_report_item, then return true.
IF (SIZEOF(sdiri) = 0)
THEN
RETURN(TRUE);
END_IF;
-- When reports exist, then perform the following checking process.
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;
-- STEP-1
-- collect all instance_report_item_with_extreme_instances instances
-- associated with the given shape_data_quality_criterion
-- via shape_data_quality_inspection_result and
-- shape_data_quality_inspection_instance_report.
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;
-- STEP-2
-- check if the types of locations_of_extreme_value attributes
-- of all extreme_instances attributes of the collected instances are
-- exactly coincident with the type names in the type list given as an
-- input argument of this function.
-- If there is no instance report, then return true.
IF (SIZEOF(sdei) = 0)
THEN
RETURN(TRUE);
END_IF;
-- If the type_list is empty and
-- instance_report_item_with_extreme_instances exists, then return false.
IF ((SIZEOF(type_list) = 0) AND (SIZEOF(sdei) <> 0))
THEN
RETURN(FALSE);
END_IF;
-- When report_items exist, then perform the following checking process.
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;
-- STEP-1
-- collect all shape_data_quality_inspection_criterion_report instances,
-- all shape_data_quality_inspection_instance_report_item instances, and
-- instance_report_item_with_extreme_instances instances
-- associated with the given shape_data_quality_criterion
-- via shape_data_quality_inspection_result.
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 there is no report, then return true.
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;
-- When reports exist, then perform the following checking process.
-- Check representative_measured_value of
-- shape_data_quality_inspection_criterion_report
REPEAT i := 1 TO SIZEOF(sdcr);
IF (NOT (type_string IN TYPEOF(sdcr[i].representative_measured_value)))
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
-- Check measured_value of shape_data_quality_inspection_
-- instance_report_item
REPEAT i := 1 TO SIZEOF(sdii);
IF (NOT (type_string IN TYPEOF(sdii[i].measured_value)))
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
-- Check measured_value of extreme_instances of
-- instance_report_item_with_extreme_instance
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;
END_SCHEMA; -- Ap242_managed_model_based_3d_engineering_mim_lf