stepcode/data/cd242/242_n2813_mim_lf.exp

37400 lines
1.5 MiB

(*
$Id: mim_lf.exp,v 1.16 2011/10/14 20:59:21 thomasrthurman Exp $
ISO TC184/SC4/WG3 N2813 - ISO/TS 10303-442 AP242 managed model based 3d engineering - EXPRESS MIM Long form
*)
(* ======================================================================================= *)
(* Long form schema generated by The EXPRESS Data Manager compiler version 9.8.1B.20090502*)
(* with patches applied after *)
(* modified Friday October 7, 2011 *)
(* modified Friday October 14, 2011 *)
(* The schema is converted from ISO10303 P11-2003 to ISO10303 P11-1994 *)
(* ======================================================================================= *)
SCHEMA Ap242_managed_model_based_3d_engineering_mim_LF;
CONSTANT
the_real_tuples : extended_tuple_space := make_extended_tuple_space(
the_zero_tuple_space, the_reals);
deprecated_constructed_data_types : SET OF STRING :=
['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 :=
['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',
'start_request',
'start_work',
'supplied_part_relationship'];
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_empty_maths_tuple : maths_tuple := [];
the_empty_space : finite_space := make_finite_space([]);
the_zero_tuple_space : listed_product_space := make_listed_product_space([]);
the_reals : elementary_space := make_elementary_space(es_reals);
the_tuples : extended_tuple_space := make_extended_tuple_space(
the_zero_tuple_space, the_generics);
the_generics : elementary_space := make_elementary_space(es_generics);
the_logicals : elementary_space := make_elementary_space(es_logicals);
the_integers : elementary_space := make_elementary_space(es_integers);
the_integer_tuples : extended_tuple_space := make_extended_tuple_space(
the_zero_tuple_space, the_integers);
deprecated_interfaced_data_types : SET OF STRING :=
['document_with_class',
'ordinal_date',
'product_definition_formation_with_specified_source',
'week_of_year_and_day_date'];
the_nonnegative_reals : real_interval_from_min :=
make_real_interval_from_min(0.0, closed);
the_neg1_one_interval : finite_real_interval := make_finite_real_interval(
-1.0, closed, 1.0, closed);
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_strings : elementary_space := make_elementary_space(es_strings);
the_numbers : elementary_space := make_elementary_space(es_numbers);
the_binarys : elementary_space := make_elementary_space(es_binarys);
the_maths_spaces : elementary_space := make_elementary_space(es_maths_spaces);
the_booleans : elementary_space := make_elementary_space(es_booleans);
the_zero_pi_interval : finite_real_interval := make_finite_real_interval(
0.0, closed, PI, 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);
dummy_gri : geometric_representation_item := representation_item('')||
geometric_representation_item();
dummy_tri : topological_representation_item := representation_item('')||
topological_representation_item();
END_CONSTANT;
TYPE unit = SELECT (derived_unit, named_unit);
END_TYPE;
(* Pruned unused type: draughting_model_item_definition_242 *)
(* Pruned unused type: ap242_change_management_object *)
(* Pruned unused type: ap242_change_relationship_select *)
(* Pruned unused type: action_request_item_242 *)
(* Pruned unused type: aliasable_item_242 *)
(* Pruned unused type: approval_item_242 *)
TYPE approved_item = SELECT
(certification,
change,
change_request,
configuration_effectivity,
configuration_item,
contract,
product,
security_classification,
start_request,
start_work);
END_TYPE;
(* Pruned unused type: attribute_language_item_242 *)
(* Pruned unused type: certification_item_242 *)
TYPE certified_item = SELECT
(supplied_part_relationship);
END_TYPE;
TYPE change_request_item = SELECT
(product_definition_formation);
END_TYPE;
TYPE cc_classified_item = SELECT
(assembly_component_usage,
product_definition_formation);
END_TYPE;
(* Pruned unused type: contract_item_242 *)
TYPE contracted_item = SELECT
(product_definition_formation);
END_TYPE;
(* Pruned unused type: date_and_time_item_242 *)
(* Pruned unused type: date_item_242 *)
TYPE date_time_item = SELECT
(approval_person_organization,
certification,
change,
change_request,
contract,
product_definition,
security_classification,
start_request,
start_work);
END_TYPE;
(* Pruned unused type: document_reference_item_242 *)
(* Pruned unused type: effectivity_item_242 *)
(* Pruned unused type: event_occurrence_item_242 *)
(* Pruned unused type: external_identification_item_242 *)
(* Pruned unused type: groupable_item_242 *)
(* Pruned unused type: identification_item_242 *)
(* Pruned unused type: multi_language_attribute_item_242 *)
(* Pruned unused type: organization_item_242 *)
(* Pruned unused type: organizational_project_item_242 *)
(* Pruned unused type: person_and_organization_item_242 *)
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;
(* Pruned unused type: presented_item_select_242 *)
(* Pruned unused type: security_classification_item_242 *)
TYPE cc_specified_item = SELECT
(product_definition,
shape_aspect);
END_TYPE;
TYPE start_request_item = SELECT
(product_definition_formation);
END_TYPE;
(* Pruned unused type: time_interval_item_242 *)
(* Pruned unused type: action_items_242 *)
(* Pruned unused type: classification_item_242 *)
(* Pruned unused type: configured_effectivity_item_242 *)
TYPE work_item = SELECT
(product_definition_formation);
END_TYPE;
TYPE boolean_operand_2d = SELECT (
primitive_2d,
boolean_result_2d,
half_space_2d);
END_TYPE;
TYPE compound_inner_area_boundary = SELECT (set_inner_area_boundary);
END_TYPE;
TYPE csg_2d_area_select = SELECT (axis2_placement_2d, csg_primitive_solid_2d);
END_TYPE;
TYPE csg_2d_shape_select = SELECT (mapped_item, axis2_placement_2d, csg_solid_2d);
END_TYPE;
TYPE csg_select_2d = SELECT (primitive_2d, boolean_result_2d);
END_TYPE;
TYPE set_inner_area_boundary = SET [1:?] OF primitive_2d;
END_TYPE;
(* Pruned unused type: design_pdm_action_item *)
(* Pruned unused type: design_pdm_action_method_items *)
(* Pruned unused type: design_pdm_action_request_item *)
(* Pruned unused type: design_pdm_approval_item *)
(* Pruned unused type: design_pdm_attribute_classification_item *)
(* Pruned unused type: design_pdm_attribute_language_item *)
(* Pruned unused type: design_pdm_certification_item *)
(* Pruned unused type: design_pdm_classification_item *)
(* Pruned unused type: design_pdm_configured_effectivity_item *)
(* Pruned unused type: design_pdm_contract_item *)
(* Pruned unused type: design_pdm_date_and_time_item *)
(* Pruned unused type: design_pdm_date_item *)
(* Pruned unused type: design_pdm_document_reference_item *)
(* Pruned unused type: design_pdm_effectivity_item *)
(* Pruned unused type: design_pdm_event_occurrence_item *)
(* Pruned unused type: design_pdm_groupable_item *)
(* Pruned unused type: design_pdm_identification_item *)
(* Pruned unused type: design_pdm_ir_usage_item *)
(* Pruned unused type: design_pdm_multi_language_attribute_item *)
(* Pruned unused type: design_pdm_name_item *)
(* Pruned unused type: design_pdm_organization_item *)
(* Pruned unused type: design_pdm_project_item *)
(* Pruned unused type: design_pdm_person_and_organization_item *)
(* Pruned unused type: design_pdm_requirement_assigned_item *)
(* Pruned unused type: design_pdm_requirement_source_item *)
(* Pruned unused type: design_pdm_security_classification_item *)
(* Pruned unused type: promissory_usage_in_product_model_assigned_item *)
(* Pruned unused type: design_pdm_time_interval_item *)
(* Pruned unused type: datc_draughting_model_item_definition *)
(* Pruned unused type: dimensioning_standard_document_reference_item *)
(* Pruned unused type: dimension_identification_item *)
(* Pruned unused type: dimension_tolerance_document_reference_item *)
(* Pruned unused type: eri_external_identification *)
TYPE machining_feature_definition = SELECT (
boss,
compound_feature,
externally_defined_feature_definition,
flat_face,
gear,
marking,
outer_round,
outside_profile,
pocket,
protrusion,
removal_volume,
replicate_feature,
revolved_profile,
rib_top,
round_hole,
rounded_end,
spherical_cap,
step,
slot,
thread,
turned_knurl);
END_TYPE;
TYPE 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 picture_representation_item_select = SELECT (
styled_item,
planar_box,
axis2_placement_2d);
END_TYPE;
(* Pruned unused type: pr_external_identification_item *)
TYPE angle_direction_reference_select = SELECT (
direction,
curve,
point_path);
END_TYPE;
TYPE angle_direction_reference_with_a2p3d_select = SELECT (
angle_direction_reference_select,
axis2_placement_3d);
END_TYPE;
TYPE orientation_basis_select = SELECT (
axis2_placement_3d,
min_and_major_ply_orientation_basis);
END_TYPE;
TYPE point_and_vector_member = SELECT (point, direction);
END_TYPE;
TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member;
END_TYPE;
TYPE point_path_members = LIST [1:?] OF point_and_vector;
END_TYPE;
(* Pruned unused type: cm_approval_item *)
TYPE previous_element_assignment_select = SELECT (modify_element, delete_element);
END_TYPE;
TYPE current_element_assignment_select = SELECT (modify_element, add_element);
END_TYPE;
TYPE change_relationship_select = SELECT (
action_relationship,
product_definition_formation_relationship,
product_definition_relationship,
shape_aspect_relationship);
END_TYPE;
TYPE change_management_object = SELECT (
action,
action_items,
action_relationship,
class,
event_occurrence,
project_item);
END_TYPE;
TYPE location_in_aggregate_item = LIST [1:?] OF integer_representation_item;
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,
dimensional_size,
general_property,
geometric_tolerance,
product_definition_relationship,
property_definition,
property_definition_relationship,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
(* Pruned unused type: effectivity_item_for_replacement *)
TYPE effectivity_item = SELECT (
action,
action_method,
action_method_relationship,
action_property,
action_relationship,
assembly_component_usage_substitute,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
document_file,
draughting_model,
drawing_revision,
general_property,
material_designation,
mechanical_design_geometric_presentation_representation,
presentation_area,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
security_classification,
shape_aspect,
shape_representation);
END_TYPE;
TYPE role_select = SELECT (
action_assignment,
action_request_assignment,
approval_assignment,
approval_date_time,
certification_assignment,
contract_assignment,
document_reference,
effectivity_assignment,
group_assignment,
name_assignment,
security_classification_assignment);
END_TYPE;
TYPE product_definition_or_assembly_relationship = SELECT (assembly_component_usage, product_definition);
END_TYPE;
(* Pruned unused type: at_requirement_assigned_item *)
(* Pruned unused type: at_external_identification_item *)
(* Pruned unused type: cf_groupable_item *)
TYPE requirement_assigned_item = SELECT (
assembly_joint,
configuration_item,
descriptive_representation_item,
product,
product_class,
product_definition,
product_definition_formation,
product_definition_relationship,
representation,
shape_aspect);
END_TYPE;
TYPE requirement_satisfaction_item = SELECT (
requirement_assigned_item);
END_TYPE;
TYPE requirement_source_item = SELECT (
characterized_object,
group,
group_relationship,
product,
product_definition,
product_definition_formation,
product_definition_relationship,
shape_aspect);
END_TYPE;
(* Pruned unused type: pie_external_identification_item *)
(* Pruned unused type: bc_external_identification_item *)
TYPE external_identification_item = SELECT (
action_relationship,
action_request_status,
applied_organization_assignment,
applied_person_and_organization_assignment,
approval,
approval_status,
assembly_bond_definition,
date_and_time_assignment,
date_assignment,
document_file,
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_product_definition,
externally_defined_representation_item,
organizational_address,
product_definition,
security_classification,
trimmed_curve,
versioned_action_request);
END_TYPE;
(* Pruned unused type: representation_identification_item *)
TYPE description_attribute_select = SELECT (
action_request_solution,
application_context,
approval_role,
configuration_design,
date_role,
date_time_role,
context_dependent_shape_representation,
effectivity,
external_source,
organization_role,
person_and_organization_role,
person_and_organization,
property_definition_representation,
representation);
END_TYPE;
TYPE id_attribute_select = SELECT (action, address, product_category, property_definition, shape_aspect, shape_aspect_relationship, application_context, group, organizational_project, representation);
END_TYPE;
TYPE detailed_report_type = ENUMERATION OF
(MEASURED_ELEMENT,
INFERIOR_QUALITY_ELEMENT);
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 preferred_ordering = ENUMERATION OF
(EXTREMITY_ORDER,
DETECTED_ORDER);
END_TYPE;
(* Pruned unused type: pdq_date_and_time_item *)
(* Pruned unused type: pdq_person_and_organization_item *)
(* Pruned unused type: pdq_date_item *)
(* Pruned unused type: pqd_organization_item *)
TYPE date_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval_person_organization,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
contract,
data_quality_definition,
directed_action,
document,
document_file,
draughting_model,
drawing_revision,
effectivity,
event_occurrence,
executed_action,
general_property,
information_usage_right,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
END_TYPE;
TYPE date_and_time_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval_person_organization,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_item,
configured_effectivity_assignment,
contract,
data_quality_definition,
directed_action,
document,
document_file,
draughting_model,
drawing_revision,
effectivity,
event_occurrence,
executed_action,
general_property,
information_usage_right,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
rule_action,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
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_classification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
data_quality_definition,
document_file,
document_type,
draughting_model,
drawing_revision,
effectivity,
event_occurrence,
executed_action,
general_property,
information_usage_right,
material_designation,
mechanical_design_geometric_presentation_representation,
organization,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
rule_action,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
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_classification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
data_quality_definition,
document_file,
document_type,
draughting_model,
drawing_revision,
event_occurrence,
executed_action,
general_property,
information_usage_right,
material_designation,
mechanical_design_geometric_presentation_representation,
organization,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
rule_action,
security_classification,
security_classification_level,
shape_representation,
versioned_action_request);
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 used_quality_representation_select = SELECT
(data_quality_criteria_representation,
data_quality_inspection_result_representation);
END_TYPE;
TYPE statistical_value_type = ENUMERATION OF
(NUMBER_OF_INSPECTED_INSTANCES,
NUMBER_OF_QUALITY_DEFECTS_DETECTED);
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_range,
shape_data_quality_value_limit);
END_TYPE;
TYPE compound_item_definition = SELECT
(list_representation_item,
set_representation_item);
END_TYPE;
TYPE list_representation_item = LIST [1:?] OF representation_item;
END_TYPE;
TYPE set_representation_item = SET [1:?] OF representation_item;
END_TYPE;
TYPE measured_value_select = SELECT
(boolean_value,
measure_value,
plane_angle_and_ratio_pair,
plane_angle_and_length_pair);
END_TYPE;
TYPE boolean_value = BOOLEAN;
END_TYPE;
TYPE location_of_extreme_value_select = SELECT
(inspected_shape_element_select,
b_spline_surface_knot_locator,
b_spline_curve_knot_locator,
b_spline_curve_segment,
b_spline_surface_strip,
b_spline_surface_patch,
composite_curve_transition_locator,
rectangular_composite_surface_transition_locator,
boundary_curve_of_b_spline_or_rectangular_composite_surface,
oriented_edge,
face_bound,
point_on_edge_curve,
point_on_face_surface,
subedge,
subface);
END_TYPE;
TYPE inspected_shape_element_select = SELECT
(edge_loop,
edge_curve,
face_surface,
curve,
surface,
vertex_point,
closed_or_open_shell_select,
b_spline_or_composite_curve_select,
b_spline_or_rectangular_composite_surface_select,
point,
connected_face_set,
manifold_solid_brep,
direction,
placement);
END_TYPE;
TYPE closed_or_open_shell_select = SELECT
(closed_shell,
open_shell);
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 u_or_v_parameter = ENUMERATION OF
(U_PARAMETER,
V_PARAMETER);
END_TYPE;
TYPE surface_boundary_type = ENUMERATION OF
(U_PARAMETER_MIN,
V_PARAMETER_MIN,
U_PARAMETER_MAX,
V_PARAMETER_MAX);
END_TYPE;
TYPE geometric_item_specific_usage_select = SELECT
(shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE shape_model = SELECT (
constructive_geometry_representation,
shape_representation);
END_TYPE;
TYPE constraint_group_member = SELECT
(explicit_constraint,
simultaneous_constraint_group);
END_TYPE;
TYPE geometric_constraint_element = SELECT
(point,
curve,
surface,
vector,
direction);
END_TYPE;
TYPE point_curve_or_surface_constraint_element = SELECT
(point,
curve,
surface);
END_TYPE;
TYPE curve_or_surface_constraint_element = SELECT
(curve,
surface);
END_TYPE;
TYPE linear_geometry_constraint_element = SELECT
(line,
plane,
direction,
vector);
END_TYPE;
TYPE radial_geometry_constraint_element = SELECT
(circle,
cylindrical_surface,
conical_surface,
spherical_surface,
right_circular_cylinder,
right_circular_cone,
sphere);
END_TYPE;
TYPE axial_geometry_constraint_element = SELECT
(point,
line,
circle,
plane,
cylindrical_surface,
conical_surface,
spherical_surface,
toroidal_surface,
surface_of_revolution,
sphere,
right_circular_cone,
right_circular_cylinder,
torus,
revolved_face_solid,
revolved_area_solid);
END_TYPE;
TYPE swept_surface_or_solid = SELECT
(swept_surface,
swept_face_solid,
swept_area_solid);
END_TYPE;
TYPE tangent_contact_type = ENUMERATION OF
(point_contact,
curve_contact,
surface_contact);
END_TYPE;
TYPE parallel_offset_type = ENUMERATION OF
(curve_2d_offset,
curve_3d_offset,
surface_offset);
END_TYPE;
TYPE identification_item = SELECT (
action,
action_directive,
action_method,
action_property,
applied_identification_assignment,
approval_status,
characterized_class,
class,
class_system,
configuration_item,
contract,
dimensional_size,
document_file,
document_type,
draughting_model,
effectivity,
general_property,
group,
group_relationship,
information_right,
information_usage_right,
material_designation,
measure_representation_item,
mechanical_design_geometric_presentation_representation,
organization,
organizational_project,
person_and_organization,
presentation_area,
product,
product_category,
product_class,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_relationship,
product_identification,
property_definition,
property_definition_relationship,
representation,
rule_set,
security_classification,
security_classification_level,
shape_aspect_relationship,
shape_representation,
usage_association,
versioned_action_request);
END_TYPE;
TYPE document_identifier_assigned_item = SELECT
(document);
END_TYPE;
(* Pruned unused type: sd_document_reference_item *)
(* Pruned unused type: machining_feature_definition *)
TYPE kinematic_analysis_definition = SELECT
(interpolated_configuration_sequence,
prescribed_path);
END_TYPE;
TYPE kinematic_result = SELECT
(interpolated_configuration_sequence,
resulting_path);
END_TYPE;
(* Pruned unused type: id_for_product_identification *)
TYPE characterized_product_definition = SELECT (product_definition, product_definition_relationship);
END_TYPE;
TYPE class_usage_effectivity_context_item = SELECT
(product_definition);
END_TYPE;
(* Pruned unused type: effectivity_specification_for_replacement *)
TYPE instance_usage_context_select = SELECT (
product_definition_relationship,
product_definition_usage);
END_TYPE;
(* Pruned unused type: product_as_individual_identification_item *)
TYPE action_items = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_person_and_organization_assignment,
approval_status,
assembly_component_usage_substitute,
certification,
certification_item,
characterized_object,
class,
class_system,
classification_item,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
document_file,
document_reference_item,
draughting_model,
drawing_revision,
executed_action,
general_property,
identification_item,
material_designation,
mechanical_design_geometric_presentation_representation,
organization,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_assigned_item,
requirement_for_action_resource,
resource_property,
security_classification,
security_classification_level,
shape_aspect,
shape_representation,
versioned_action_request);
END_TYPE;
(* Pruned unused type: file_identification_item *)
(* Pruned unused type: file_location_select *)
(* Pruned unused type: classification_item_extended *)
(* Pruned unused type: classification_identification_item *)
(* Pruned unused type: classification_classification_item *)
TYPE classified_item = SELECT (
product,
product_definition,
product_definition_formation);
END_TYPE;
(* Pruned unused type: cwa_identification_item *)
TYPE classification_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
action_request_status,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_date_and_time_assignment,
applied_date_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
calendar_date,
certification,
characterized_class,
characterized_object,
class,
classified_item,
configuration_item,
context_dependent_unit,
contract,
conversion_based_unit,
date_and_time,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
directed_action,
document_file,
document_relationship,
document_type,
effectivity,
event_occurrence,
executed_action,
feature_definition,
general_feature,
general_property,
general_property_relationship,
group,
identification_assignment,
information_right,
information_usage_right,
language,
material_designation,
measure_representation_item,
measure_with_unit,
multi_language_attribute_assignment,
named_unit,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_relationship,
person,
person_and_organization_address,
plus_minus_tolerance,
process_operation,
product,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
resource_property,
security_classification,
security_classification_level,
shape_aspect,
uncertainty_measure_with_unit,
usage_association,
versioned_action_request);
END_TYPE;
(* Pruned unused type: plib_class_identification_item *)
(* Pruned unused type: plib_class_organization_item *)
(* Pruned unused type: ir_approval_item *)
(* Pruned unused type: ir_contract_item *)
(* Pruned unused type: ir_date_and_time_item *)
(* Pruned unused type: ir_date_item *)
(* Pruned unused type: ir_identification_item *)
(* Pruned unused type: ir_organization_item *)
(* Pruned unused type: ir_person_and_organization_item *)
TYPE ir_usage_item = action_items;
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_METHOD' IN TYPEOF(SELF));
wr3 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_PROPERTY' IN TYPEOF(SELF));
wr4 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP' IN TYPEOF(SELF));
wr5 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_REQUEST_SOLUTION' IN TYPEOF(SELF));
wr6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATE_PRODUCT_RELATIONSHIP' IN TYPEOF(SELF));
wr7 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(SELF));
wr8 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_CLASSIFICATION_ASSIGNMENT' IN TYPEOF(SELF));
wr9 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT' IN TYPEOF(SELF));
wr10 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPROVAL_STATUS' IN TYPEOF(SELF));
wr11 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE' IN TYPEOF(SELF));
wr12 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CERTIFICATION' IN TYPEOF(SELF));
wr13 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN TYPEOF(SELF));
wr14 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS_SYSTEM' IN TYPEOF(SELF));
wr15 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN' IN TYPEOF(SELF));
wr16 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF));
wr17 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_ITEM' IN TYPEOF(SELF));
wr18 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF));
wr19 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT' IN TYPEOF(SELF));
wr20 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_FILE' IN TYPEOF(SELF));
wr21 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' IN TYPEOF(SELF));
wr22 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_REVISION' IN TYPEOF(SELF));
wr23 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXECUTED_ACTION' IN TYPEOF(SELF));
wr24 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN TYPEOF(SELF));
wr25 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_DESIGNATION' IN TYPEOF(SELF));
wr26 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(SELF));
wr27 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATION_RELATIONSHIP' IN TYPEOF(SELF));
wr28 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORGANIZATIONAL_PROJECT' IN TYPEOF(SELF));
wr29 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_AREA' IN TYPEOF(SELF));
wr30 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(SELF));
wr31 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT' IN TYPEOF(SELF));
wr32 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
wr33 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_ASSOCIATION' IN TYPEOF(SELF));
wr34 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(SELF));
wr35 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(SELF));
wr36 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF));
wr37 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION_RELATIONSHIP' IN TYPEOF(SELF));
wr38 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
wr39 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SUBSTITUTE' IN TYPEOF(SELF));
wr40 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN TYPEOF(SELF));
wr41 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE' IN TYPEOF(SELF));
wr42 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESOURCE_PROPERTY' IN TYPEOF(SELF));
wr43 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION' IN TYPEOF(SELF));
wr44 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION_LEVEL' IN TYPEOF(SELF));
wr45 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF(SELF));
wr46 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF));
wr47 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERSIONED_ACTION_REQUEST' IN TYPEOF(SELF));
END_TYPE;
(* Pruned unused type: pdpdms_person_and_organization_item *)
(* Pruned unused type: pdpdms_external_identification_item *)
(* Pruned unused type: pdm_action_items *)
(* Pruned unused type: pdm_action_request_item *)
(* Pruned unused type: pdm_approval_item *)
(* Pruned unused type: pdm_attribute_language_item *)
(* Pruned unused type: pdm_certification_item *)
(* Pruned unused type: pdm_classification_item *)
(* Pruned unused type: pdm_date_and_time_item *)
(* Pruned unused type: pdm_date_item *)
(* Pruned unused type: pdm_document_reference_item *)
(* Pruned unused type: pdm_effectivity_item *)
(* Pruned unused type: pdm_event_occurrence_item *)
(* Pruned unused type: pdm_external_class_name_item *)
(* Pruned unused type: pdm_identification_item *)
(* Pruned unused type: pdm_multi_language_attribute_item *)
(* Pruned unused type: pdm_organization_item *)
(* Pruned unused type: pdm_person_and_organization_item *)
(* Pruned unused type: pdm_project_item *)
(* Pruned unused type: pdm_security_classification_item *)
(* Pruned unused type: pdm_time_interval_item *)
TYPE action_method_items = SELECT (
product,
product_definition_formation);
END_TYPE;
TYPE attribute_classification_item = SELECT (
action_directive,
action_method,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
action_request_status,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
certification,
context_dependent_unit,
contract,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
document_file,
document_relationship,
effectivity,
event_occurrence_relationship,
executed_action,
general_property,
general_property_relationship,
group,
group_relationship,
information_right,
information_usage_right,
language,
measure_representation_item,
measure_with_unit,
named_unit,
organization_relationship,
organizational_address,
organizational_project_relationship,
person_and_organization,
person_and_organization_address,
product,
product_category,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
property_definition_relationship,
property_definition_representation,
representation,
representation_context,
representation_item,
security_classification,
time_interval_relationship,
uncertainty_measure_with_unit,
usage_association,
versioned_action_request);
END_TYPE;
TYPE draughting_model_item_association_select = SELECT (
annotation_occurrence,
draughting_callout);
END_TYPE;
TYPE draughting_model_item_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,
dimensional_size,
geometric_tolerance,
product_definition_relationship,
product_definition_shape,
property_definition,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
(* Pruned unused type: aade_annotation_representation_select *)
(* Pruned unused type: aade_invisibility_context *)
TYPE draughting_model_item_select = SELECT
(mapped_item,
styled_item,
axis2_placement,
camera_model,
draughting_callout);
END_TYPE;
TYPE shape_definition = SELECT (product_definition_shape, shape_aspect, shape_aspect_relationship);
END_TYPE;
(* Pruned unused type: cg_shape_model *)
TYPE constructive_geometry_representation_or_shape_represenation = SELECT
(constructive_geometry_representation,
shape_representation);
END_TYPE;
TYPE document_reference_item = SELECT (
action_directive,
action_method,
action_relationship,
applied_action_assignment,
applied_external_identification_assignment,
approval,
assembly_component_usage,
certification,
characterized_class,
characterized_object,
class,
class_system,
configuration_design,
configuration_item,
contract,
descriptive_representation_item,
dimensional_size,
executed_action,
externally_defined_dimension_definition,
externally_defined_item,
feature_definition,
general_property,
group,
group_relationship,
information_right,
information_usage_right,
material_designation,
measure_representation_item,
organization,
organizational_project,
person,
presentation_area,
process_plan,
product,
product_category,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_process,
product_definition_relationship,
product_definition_substitute,
product_related_product_category,
property_definition,
representation,
representation_item,
resource_requirement_type,
retention,
rule_set,
security_classification,
shape_aspect,
shape_aspect_relationship,
usage_association,
versioned_action_request);
END_TYPE;
TYPE value_qualifier = SELECT
(precision_qualifier,
type_qualifier,
uncertainty_qualifier);
END_TYPE;
TYPE angle_relator = ENUMERATION OF
(equal,
large,
small);
END_TYPE;
TYPE dimensional_characteristic = SELECT
(dimensional_location,
dimensional_size);
END_TYPE;
(* Pruned unused type: sds_item_identified_representation_usage_definition *)
TYPE shape_dimension_representation_item = SELECT
(compound_representation_item,
descriptive_representation_item,
measure_representation_item);
END_TYPE;
TYPE tolerance_method_definition = SELECT
(limits_and_fits,
tolerance_value);
END_TYPE;
TYPE draughting_subfigure_representation_item = SELECT (
annotation_occurrence,
draughting_callout,
axis2_placement);
END_TYPE;
TYPE draughting_symbol_representation_item = SELECT (
annotation_curve_occurrence,
annotation_symbol_occurrence,
annotation_fill_area_occurrence,
annotation_text_occurrence,
axis2_placement);
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 draughting_titled_item = SELECT
(drawing_revision,
drawing_sheet_revision);
END_TYPE;
TYPE absorbed_dose_measure = REAL;
END_TYPE;
TYPE acceleration_measure = REAL;
END_TYPE;
TYPE radioactivity_measure = REAL;
END_TYPE;
TYPE amount_of_substance_measure = REAL;
END_TYPE;
TYPE area_measure = REAL;
END_TYPE;
TYPE celsius_temperature_measure = REAL;
END_TYPE;
TYPE context_dependent_measure = REAL;
END_TYPE;
TYPE count_measure = NUMBER;
END_TYPE;
TYPE descriptive_measure = STRING;
END_TYPE;
TYPE capacitance_measure = REAL;
END_TYPE;
TYPE dose_equivalent_measure = REAL;
END_TYPE;
TYPE electric_charge_measure = REAL;
END_TYPE;
TYPE electric_current_measure = REAL;
END_TYPE;
TYPE conductance_measure = REAL;
END_TYPE;
TYPE electric_potential_measure = REAL;
END_TYPE;
TYPE energy_measure = REAL;
END_TYPE;
TYPE force_measure = REAL;
END_TYPE;
TYPE frequency_measure = REAL;
END_TYPE;
TYPE magnetic_flux_density_measure = REAL;
END_TYPE;
TYPE illuminance_measure = REAL;
END_TYPE;
TYPE inductance_measure = REAL;
END_TYPE;
TYPE length_measure = REAL;
END_TYPE;
TYPE luminous_intensity_measure = REAL;
END_TYPE;
TYPE luminous_flux_measure = REAL;
END_TYPE;
TYPE mass_measure = REAL;
END_TYPE;
TYPE measure_value = SELECT
(absorbed_dose_measure,
dose_equivalent_measure,
radioactivity_measure,
acceleration_measure,
amount_of_substance_measure,
area_measure,
celsius_temperature_measure,
context_dependent_measure,
count_measure,
descriptive_measure,
capacitance_measure,
electric_charge_measure,
conductance_measure,
electric_current_measure,
electric_potential_measure,
energy_measure,
magnetic_flux_density_measure,
force_measure,
frequency_measure,
illuminance_measure,
inductance_measure,
length_measure,
luminous_flux_measure,
luminous_intensity_measure,
magnetic_flux_measure,
mass_measure,
numeric_measure,
non_negative_length_measure,
parameter_value,
plane_angle_measure,
positive_length_measure,
positive_plane_angle_measure,
positive_ratio_measure,
power_measure,
pressure_measure,
ratio_measure,
resistance_measure,
solid_angle_measure,
thermodynamic_temperature_measure,
time_measure,
velocity_measure,
volume_measure);
END_TYPE;
TYPE magnetic_flux_measure = REAL;
END_TYPE;
TYPE non_negative_length_measure = length_measure;
WHERE
WR1: SELF >= 0.0;
END_TYPE;
TYPE numeric_measure = NUMBER;
END_TYPE;
TYPE parameter_value = REAL;
END_TYPE;
TYPE plane_angle_measure = REAL;
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 pressure_measure = REAL;
END_TYPE;
TYPE ratio_measure = REAL;
END_TYPE;
TYPE resistance_measure = REAL;
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 solid_angle_measure = REAL;
END_TYPE;
TYPE thermodynamic_temperature_measure = REAL;
END_TYPE;
TYPE time_measure = REAL;
END_TYPE;
(* Pruned unused type: item_identified_representation_usage_definition_242 *)
TYPE velocity_measure = REAL;
END_TYPE;
TYPE volume_measure = REAL;
END_TYPE;
(* Pruned unused type: eu_external_identification_item *)
(* Pruned unused type: el_external_identification_item *)
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 simple_datum_reference_modifier = ENUMERATION OF (
any_cross_section,
any_longitudinal_section,
basic,
contacting_feature,
degree_of_freedom_constraint_u,
degree_of_freedom_constraint_v,
degree_of_freedom_constraint_w,
degree_of_freedom_constraint_x,
degree_of_freedom_constraint_y,
degree_of_freedom_constraint_z,
distance_variable,
free_state,
least_material_requirement,
line,
major_diameter,
maximum_material_requirement,
minor_diameter,
orientation,
pitch_diameter,
plane,
point,
translation);
END_TYPE;
TYPE 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 trim_condition_select = SELECT
(length_measure,
plane_angle_measure,
generalized_surface_select,
solid_model);
END_TYPE;
TYPE trim_intent = ENUMERATION OF
(blind,
offset,
through_all,
unspecified,
up_to_next);
END_TYPE;
(* Pruned unused type: sm_approval_item *)
TYPE identifier = STRING;
END_TYPE;
(* Pruned unused type: pr_action_items *)
(* Pruned unused type: pr_date_and_time_item *)
(* Pruned unused type: pr_document_reference_item *)
(* Pruned unused type: pr_identification_item *)
(* Pruned unused type: pr_organization_item *)
(* Pruned unused type: pr_person_and_organization_item *)
TYPE rule_superseded_item = SELECT
(product_definition_formation);
END_TYPE;
TYPE csg_primitive = SELECT (
sphere,
block,
right_angular_wedge,
torus,
right_circular_cone,
right_circular_cylinder,
primitive_2d);
END_TYPE;
TYPE base_solid_select = SELECT
(solid_model,
csg_primitive,
boolean_result);
WHERE
WR1: NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF));
END_TYPE;
TYPE blend_radius_variation_type = ENUMERATION OF
(linear_blend,
cubic_blend,
unspecified_blend);
END_TYPE;
TYPE blend_end_condition_select = SELECT
(point_on_curve,
edge_curve,
vertex);
END_TYPE;
TYPE box_height = positive_ratio_measure;
END_TYPE;
TYPE box_width = positive_ratio_measure;
END_TYPE;
TYPE box_slant_angle = plane_angle_measure;
END_TYPE;
TYPE box_rotate_angle = plane_angle_measure;
END_TYPE;
TYPE font_select = SELECT
(pre_defined_text_font,
externally_defined_text_font,
text_font);
END_TYPE;
(* Pruned unused type: appearance_representation_identification_item *)
TYPE style_context_select = SELECT
(group,
presentation_layer_assignment,
presentation_set,
representation,
representation_item,
representation_relationship);
END_TYPE;
TYPE annotation_representation_select = SELECT (
draughting_model,
presentation_area,
presentation_view,
symbol_representation);
END_TYPE;
TYPE approval_item = SELECT (
action,
action_directive,
action_property,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_usage_right,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
date,
directed_action,
document,
document_file,
draughting_model,
drawing_revision,
effectivity,
executed_action,
frozen_assignment,
general_property,
general_property_relationship,
group,
group_relationship,
information_usage_right,
material_designation,
mechanical_design_geometric_presentation_representation,
organizational_project,
presentation_area,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
representation,
requirement_assignment,
resource_property,
security_classification,
shape_aspect_relationship,
shape_representation,
versioned_action_request);
END_TYPE;
(* Pruned unused type: date_and_time_item_approval *)
(* Pruned unused type: date_item_approval *)
TYPE surface_or_solid_model = SELECT
(surface_model,
solid_model);
END_TYPE;
TYPE planar_curve_select = SELECT
(line,
conic,
trimmed_curve,
pcurve,
surface_curve);
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
WR2: check_curve_planarity(SELF);
END_TYPE;
TYPE 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_basis_select = SELECT
(planar_curve_select,
curve_bounded_surface,
face_surface);
END_TYPE;
TYPE sketch_type_select = SELECT
(neutral_sketch_representation,
positioned_sketch,
subsketch);
END_TYPE;
TYPE curves_or_area = ENUMERATION OF
(curves, area);
END_TYPE;
(* Pruned unused type: event_occurrence_date_and_time_item *)
(* Pruned unused type: event_occurrence_date_item *)
(* Pruned unused type: spr_document_reference_item *)
(* Pruned unused type: spr_organization_item *)
(* Pruned unused type: spr_person_and_organization_item *)
TYPE label = STRING;
END_TYPE;
TYPE text = STRING;
END_TYPE;
TYPE product_space = SELECT
(uniform_product_space,
listed_product_space);
END_TYPE;
TYPE tuple_space = SELECT
(product_space,
extended_tuple_space);
END_TYPE;
TYPE maths_number = NUMBER;
END_TYPE;
TYPE attribute_identifier = identifier;
WHERE
WR1: validate_attribute_id(SELF);
END_TYPE;
(* Pruned unused type: c_document_reference_item *)
(* Pruned unused type: external_identification_for_plib_property *)
TYPE string_representation_item_select = SELECT(
descriptive_representation_item,
included_text_block,
structured_text_composition);
END_TYPE;
(* Pruned unused type: representing_relationship *)
TYPE link_or_shape_representation = SELECT(
kinematic_link_representation,
shape_representation);
END_TYPE;
TYPE interpolation_type = ENUMERATION OF
(undefined_interpolation_type,
discontinuous_interpolation_type,
synchronous_interpolation_type,
linear_interpolation_type);
END_TYPE;
TYPE category_usage_item = SELECT (product_class);
END_TYPE;
(* Pruned unused type: id_for_class *)
(* Pruned unused type: specification_for_category *)
TYPE groupable_item = SELECT (
component_feature,
geometric_representation_item,
group_relationship,
mapped_item,
package_product_concept_feature,
product_concept_feature,
product_definition,
product_definition_formation,
property_definition_representation,
representation,
representation_item,
representation_relationship_with_transformation,
shape_aspect,
shape_aspect_relationship,
shape_representation_relationship,
styled_item,
topological_representation_item);
WHERE
WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
END_TYPE;
(* Pruned unused type: organization_item_solution *)
TYPE product_definition_or_breakdown_element_usage = SELECT (
product_definition,
product_definition_usage);
END_TYPE;
TYPE product_definition_or_product_definition_relationship = SELECT (
product_definition,
product_definition_usage);
END_TYPE;
(* Pruned unused type: requirement_identification_and_version_identification_item *)
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 boolean_operand = SELECT
(solid_model,
half_space_solid,
csg_primitive,
boolean_result,
half_space_2d);
END_TYPE;
TYPE boolean_operator = ENUMERATION OF
(union,
intersection,
difference);
END_TYPE;
TYPE csg_select = SELECT
(boolean_result,
csg_primitive);
END_TYPE;
(* Pruned unused type: external_class_name_item *)
TYPE name_item = SELECT (
assembly_component_usage,
external_class_library,
group,
group_relationship,
product,
product_definition);
END_TYPE;
TYPE contract_item = SELECT (
action_directive,
alternate_product_relationship,
directed_action,
drawing_revision,
executed_action,
information_usage_right,
organization,
person_and_organization,
product,
product_definition_formation);
END_TYPE;
(* Pruned unused type: mri_aliasable_item *)
(* Pruned unused type: mri_approval_item *)
(* Pruned unused type: mri_attribute_language_item *)
(* Pruned unused type: mri_date_and_time_item *)
(* Pruned unused type: mri_date_item *)
(* Pruned unused type: mri_identification_item *)
(* Pruned unused type: mri_multi_language_attribute_item *)
(* Pruned unused type: mri_organization_item *)
(* Pruned unused type: mri_person_and_organization_item *)
TYPE security_classification_item = SELECT (
action,
action_directive,
action_property,
applied_action_assignment,
assembly_component_usage,
assembly_component_usage_substitute,
class_system,
configuration_design,
configuration_effectivity,
configured_effectivity_assignment,
document,
document_file,
draughting_model,
drawing_revision,
executed_action,
general_property,
make_from_usage_option,
material_designation,
mechanical_design_geometric_presentation_representation,
organizational_project,
presentation_area,
product,
product_concept,
product_concept_feature,
product_concept_feature_category,
product_definition,
product_definition_formation,
product_definition_relationship,
product_definition_usage,
property_definition,
resource_property,
shape_representation,
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,
document_file,
draughting_model,
drawing_revision,
general_property,
material_designation,
mechanical_design_geometric_presentation_representation,
organizational_project,
presentation_area,
product,
product_concept,
product_concept_feature,
product_concept_feature_association,
product_concept_feature_category,
product_concept_feature_category_usage,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
resource_property,
shape_aspect,
shape_representation,
versioned_action_request);
END_TYPE;
(* Pruned unused type: dm_aliasable_item *)
(* Pruned unused type: dm_approval_item *)
(* Pruned unused type: dm_attribute_language_item *)
(* Pruned unused type: dm_contract_item *)
(* Pruned unused type: dm_date_and_time_item *)
(* Pruned unused type: dm_date_item *)
(* Pruned unused type: dm_identification_item *)
(* Pruned unused type: dm_multi_language_attribute_item *)
(* Pruned unused type: dm_organization_item *)
(* Pruned unused type: dm_person_and_organization_item *)
(* Pruned unused type: dm_security_classification_item *)
(* Pruned unused type: document_location_select *)
(* Pruned unused type: idrm_marked_item *)
TYPE characterized_action_definition = SELECT
(action,
action_method,
action_method_relationship,
action_relationship);
END_TYPE;
TYPE derived_property_select = SELECT (property_definition, action_property, resource_property);
END_TYPE;
TYPE time_interval_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
applied_person_and_organization_assignment,
approval_status,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
document_file,
draughting_model,
drawing_revision,
executed_action,
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,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
product_definition_substitute,
property_definition,
requirement_for_action_resource,
resource_property,
security_classification,
security_classification_level,
shape_representation,
time_interval_based_effectivity,
versioned_action_request);
END_TYPE;
(* Pruned unused type: terminator *)
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 axis2_placement = SELECT
(axis2_placement_2d,
axis2_placement_3d);
END_TYPE;
TYPE invisibility_context = SELECT (
draughting_model,
presentation_representation,
presentation_set);
END_TYPE;
TYPE null_style = ENUMERATION OF
(null);
END_TYPE;
TYPE text_alignment = label;
END_TYPE;
TYPE message = STRING;
END_TYPE;
TYPE source_item = SELECT (identifier, message);
END_TYPE;
TYPE surface_side = ENUMERATION OF
(positive,
negative,
both);
END_TYPE;
TYPE u_direction_count = INTEGER;
WHERE
WR1: SELF > 1;
END_TYPE;
TYPE v_direction_count = INTEGER;
WHERE
WR1: SELF > 1;
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 day_in_month_number = INTEGER;
WHERE
WR1: {1 <= SELF <= 31};
END_TYPE;
TYPE maths_boolean = BOOLEAN;
END_TYPE;
TYPE maths_integer = INTEGER;
END_TYPE;
TYPE maths_real = REAL;
END_TYPE;
TYPE maths_simple_atom = SELECT
(maths_number,
maths_real,
maths_integer,
maths_logical,
maths_boolean,
maths_string,
maths_binary);
END_TYPE;
TYPE atom_based_tuple = LIST OF atom_based_value;
END_TYPE;
TYPE atom_based_value = SELECT
(maths_atom,
atom_based_tuple);
END_TYPE;
TYPE maths_tuple = LIST [0:?] OF maths_value;
END_TYPE;
TYPE maths_value = SELECT
(atom_based_value,
maths_tuple,
generic_expression);
WHERE
constancy: NOT ('GENERIC_EXPRESSION' IN stripped_typeof(SELF)) OR
expression_is_constant(SELF);
END_TYPE;
TYPE rigid_placement = SELECT
(axis2_placement_3d,
su_parameters);
END_TYPE;
TYPE kinematic_link_representation_items = SELECT (
curve,
point,
rigid_placement,
surface);
END_TYPE;
TYPE actuated_direction = ENUMERATION OF (
bidirectional,
positive_only,
negative_only,
not_actuated);
END_TYPE;
TYPE spatial_rotation = SELECT
(ypr_rotation,
rotation_about_direction);
END_TYPE;
TYPE ypr_rotation = ARRAY [ypr_index(yaw) : ypr_index(roll)]
OF plane_angle_measure;
END_TYPE;
TYPE ypr_enumeration = ENUMERATION OF
(yaw,
pitch,
roll);
END_TYPE;
TYPE spherical_pair_select = SELECT (
spherical_pair,
spherical_pair_with_pin);
END_TYPE;
(* Pruned unused type: aliasable_item *)
TYPE certification_item = SELECT (
alternate_product_relationship,
make_from_usage_option,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship);
END_TYPE;
TYPE attribute_language_item = SELECT (
action,
actuated_kinematic_pair,
alternate_product_relationship,
application_context,
applied_certification_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organizational_project_assignment,
applied_security_classification_assignment,
approval,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
attribute_value_assignment,
certification,
certification_type,
configuration_design,
configuration_item,
contract,
data_environment,
date_role,
date_time_role,
descriptive_representation_item,
document_relationship,
document_usage_role,
draughting_title,
effectivity,
effectivity_relationship,
event_occurrence,
external_source,
general_property,
general_property_relationship,
geometric_representation_item,
geometric_tolerance,
group,
group_relationship,
identification_role,
information_right,
information_usage_right,
kinematic_pair,
make_from_usage_option,
mapped_item,
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_related_product_category,
property_definition,
property_definition_relationship,
representation,
representation_relationship,
requirement_for_action_resource,
resource_property,
resource_requirement_type,
security_classification,
security_classification_assignment,
shape_aspect,
shape_aspect_relationship,
shape_representation,
styled_item,
time_interval_role,
topological_representation_item,
uncertainty_measure_with_unit,
uncertainty_qualifier,
usage_association,
versioned_action_request,
versioned_action_request_relationship);
END_TYPE;
TYPE multi_language_attribute_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_relationship,
actuated_kinematic_pair,
alternate_product_relationship,
application_context,
applied_certification_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organizational_project_assignment,
approval,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
attribute_value_assignment,
certification,
certification_type,
colour,
configuration_design,
configuration_item,
contract,
data_environment,
date_role,
date_time_role,
descriptive_representation_item,
document_relationship,
document_usage_role,
draughting_title,
effectivity,
effectivity_relationship,
event_occurrence,
external_source,
general_property,
general_property_relationship,
geometric_representation_item,
geometric_tolerance,
group,
group_relationship,
identification_role,
information_right,
information_usage_right,
kinematic_pair,
make_from_usage_option,
mapped_item,
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_related_product_category,
property_definition,
property_definition_relationship,
representation,
representation_relationship,
requirement_for_action_resource,
resource_property,
resource_requirement_type,
security_classification,
security_classification_assignment,
shape_aspect,
shape_aspect_relationship,
shape_representation,
styled_item,
time_interval_role,
topological_representation_item,
uncertainty_measure_with_unit,
uncertainty_qualifier,
usage_association,
versioned_action_request,
versioned_action_request_relationship);
END_TYPE;
(* Pruned unused type: project_as_date_and_time_item *)
(* Pruned unused type: project_as_date_item *)
(* Pruned unused type: project_event_occurrence_item *)
TYPE project_item = SELECT (
assembly_component_usage,
configuration_item,
executed_action,
product,
product_concept,
product_definition,
product_definition_formation);
END_TYPE;
TYPE kinematic_topology_representation_select = SELECT (
kinematic_topology_structure,
kinematic_topology_directed_structure,
kinematic_topology_network_structure
);
END_TYPE;
TYPE event_occurrence_item = SELECT (
action,
action_directive,
action_method,
action_property,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_classification_assignment,
assembly_component_usage_substitute,
certification,
class,
class_system,
configuration_design,
configuration_effectivity,
configuration_item,
configured_effectivity_assignment,
contract,
draughting_model,
drawing_revision,
executed_action,
general_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 characterized_definition = SELECT (characterized_object, characterized_product_definition, shape_definition);
END_TYPE;
TYPE year_number = INTEGER;
END_TYPE;
TYPE date_time_or_event_occurrence = SELECT
(date_time_select,
event_occurrence);
END_TYPE;
TYPE trimming_select = SELECT
(cartesian_point,
parameter_value);
END_TYPE;
TYPE trimming_preference = ENUMERATION OF
(cartesian,
parameter,
unspecified);
END_TYPE;
TYPE founded_item_select = SELECT
(founded_item,
representation_item);
END_TYPE;
TYPE transition_code = ENUMERATION OF
(discontinuous,
continuous,
cont_same_gradient,
cont_same_gradient_same_curvature);
END_TYPE;
TYPE pcurve_or_surface = SELECT
(pcurve,
surface);
END_TYPE;
TYPE preferred_surface_curve_representation = ENUMERATION OF
(curve_3d,
pcurve_s1,
pcurve_s2);
END_TYPE;
TYPE curve_on_surface = SELECT
(pcurve,
surface_curve,
composite_curve_on_surface);
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_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 month_in_year_number = INTEGER;
WHERE
WR1: { 1 <= SELF <= 12 };
END_TYPE;
TYPE hour_in_day = INTEGER;
WHERE
WR1: { 0 <= SELF < 24 };
END_TYPE;
TYPE minute_in_hour = INTEGER;
WHERE
WR1: { 0 <= SELF <= 59 };
END_TYPE;
TYPE second_in_minute = REAL;
WHERE
WR1: { 0 <= SELF <= 60.0 };
END_TYPE;
TYPE ahead_or_behind = ENUMERATION OF
(ahead,
exact,
behind);
END_TYPE;
TYPE maths_function_select = SELECT
(maths_function,
elementary_function_enumerators);
END_TYPE;
TYPE maths_logical = LOGICAL;
END_TYPE;
TYPE maths_string = STRING;
END_TYPE;
TYPE maths_binary = BINARY;
END_TYPE;
TYPE maths_enum_atom = SELECT (
elementary_space_enumerators,
ordering_type,
elementary_function_enumerators,
open_closed,
space_constraint_type,
repackage_options,
extension_options);
END_TYPE;
TYPE positive_integer = nonnegative_integer;
WHERE positivity: SELF > 0;
END_TYPE;
TYPE nonnegative_integer = INTEGER;
WHERE
nonnegativity: SELF >= 0;
END_TYPE;
TYPE space_constraint_type = ENUMERATION OF
(sc_equal,
sc_subspace,
sc_member);
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 maths_expression = SELECT
(atom_based_value,
maths_tuple,
generic_expression);
END_TYPE;
TYPE maths_space_or_function = SELECT
(maths_space,
maths_function);
END_TYPE;
TYPE input_selector = positive_integer;
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 open_closed = ENUMERATION OF
(open,
closed);
END_TYPE;
TYPE repackage_options = ENUMERATION OF
(ro_nochange,
ro_wrap_as_tuple,
ro_unwrap_tuple);
END_TYPE;
TYPE zero_or_one = nonnegative_integer;
WHERE in_range: (SELF = 0) OR (SELF = 1);
END_TYPE;
TYPE one_or_two = positive_integer;
WHERE in_range: (SELF = 1) OR (SELF = 2);
END_TYPE;
TYPE extension_options = ENUMERATION OF
(eo_none,
eo_cont,
eo_cont_right,
eo_cont_left);
END_TYPE;
TYPE real_interval = SELECT
(real_interval_from_min,
real_interval_to_max,
finite_real_interval,
elementary_space);
WHERE
WR1: NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR
(SELF\elementary_space.space_id = es_reals);
END_TYPE;
TYPE ordering_type = ENUMERATION OF
(by_rows,
by_columns);
END_TYPE;
TYPE dimension_count = INTEGER;
WHERE
WR1: SELF > 0;
END_TYPE;
TYPE maths_atom = SELECT
(maths_simple_atom,
maths_enum_atom);
END_TYPE;
TYPE vector_or_direction = SELECT
(vector,
direction);
END_TYPE;
TYPE represented_definition = SELECT (
general_property,
property_definition,
property_definition_relationship,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE supported_item = SELECT (action_directive, action, action_method);
END_TYPE;
TYPE property_or_shape_select = SELECT
(property_definition,
shape_definition);
END_TYPE;
TYPE characterized_resource_definition = SELECT (
action_resource,
action_resource_requirement);
END_TYPE;
TYPE configuration_design_item = SELECT
(product_definition,
product_definition_formation);
END_TYPE;
TYPE chained_representation_link = SELECT (mapped_item, representation_context, representation_relationship);
END_TYPE;
TYPE characterized_product_composition_value = SELECT (
measure_with_unit);
END_TYPE;
TYPE source = ENUMERATION OF (made, bought, not_known);
END_TYPE;
TYPE dimension_extent_usage = ENUMERATION OF
(origin,
target);
END_TYPE;
TYPE annotation_symbol_occurrence_item = SELECT (
annotation_symbol,
defined_symbol);
END_TYPE;
TYPE datum_reference_modifier_type = ENUMERATION OF (
circular_or_cylindrical,
distance,
spherical);
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 limit_condition = ENUMERATION OF
(maximum_material_condition,
least_material_condition,
regardless_of_feature_size);
END_TYPE;
TYPE geometric_tolerance_target = SELECT
(dimensional_location,
dimensional_size,
product_definition_shape,
shape_aspect);
END_TYPE;
TYPE datum_system_or_reference = SELECT
(datum_reference,
datum_system);
END_TYPE;
TYPE area_unit_type = ENUMERATION OF (
circular,
rectangular,
square);
END_TYPE;
TYPE geometric_tolerance_modifier = ENUMERATION OF (
any_cross_section,
common_zone,
each_radial_element,
free_state,
least_material_requirement,
line_element,
major_diameter,
maximum_material_requirement,
minor_diameter,
not_convex,
pitch_diameter,
reciprocity_requirement,
separate_requirement,
statistical_tolerance,
tangent_plane);
END_TYPE;
TYPE tolerance_zone_target = SELECT (
dimensional_location,
dimensional_size,
geometric_tolerance,
general_datum_reference);
END_TYPE;
TYPE central_or_parallel = ENUMERATION OF
(central,
parallel);
END_TYPE;
TYPE camera_model_d3_multi_clipping_interection_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 presentation_size_assignment_select = SELECT
(presentation_view,
presentation_area,
area_in_set);
END_TYPE;
TYPE transformation = SELECT
(item_defined_transformation,
functionally_defined_transformation);
END_TYPE;
TYPE shape_representation_item = SELECT
(geometric_representation_item,
topological_representation_item);
END_TYPE;
TYPE generalized_surface_select = SELECT
(surface,
face_surface,
surfaced_open_shell);
END_TYPE;
TYPE characterized_material_property = SELECT
(material_property_representation,
product_material_composition_relationship);
END_TYPE;
TYPE character_style_select = SELECT
(character_glyph_style_stroke,
character_glyph_style_outline,
text_style_for_defined_font);
END_TYPE;
TYPE character_spacing_select = SELECT (
length_measure,
ratio_measure,
measure_with_unit,
descriptive_measure);
END_TYPE;
TYPE text_delineation = label;
END_TYPE;
TYPE defined_glyph_select = SELECT
(pre_defined_character_glyph,
externally_defined_character_glyph);
END_TYPE;
TYPE presentable_text = STRING;
WHERE
WR1: control_characters_free(SELF);
END_TYPE;
TYPE text_path = ENUMERATION OF
(left,
right,
up,
down);
END_TYPE;
TYPE invisible_item = SELECT (
draughting_callout,
presentation_layer_assignment,
representation,
styled_item);
END_TYPE;
TYPE presentation_style_select = SELECT (
point_style,
curve_style,
surface_style_usage,
symbol_style,
fill_area_style,
text_style,
externally_defined_style,
null_style);
END_TYPE;
TYPE annotation_text_occurrence_item = SELECT (
annotation_text,
annotation_text_character,
composite_text,
defined_character_glyph,
text_literal,
text_reference);
END_TYPE;
TYPE curve_or_curve_set = SELECT (
curve,
geometric_curve_set);
END_TYPE;
TYPE text_string_representation_item = SELECT(
text_literal,
annotation_text,
annotation_text_character,
defined_character_glyph,
composite_text,
axis2_placement);
END_TYPE;
TYPE curve_font_or_scaled_curve_font_select = SELECT
(curve_style_font_select,
curve_style_font_and_scaling);
END_TYPE;
TYPE size_select = SELECT (
positive_length_measure,
measure_with_unit,
descriptive_measure);
END_TYPE;
TYPE box_characteristic_select = SELECT
(box_height,
box_width,
box_slant_angle,
box_rotate_angle);
END_TYPE;
TYPE date_time_select = SELECT
(date,
date_and_time,
local_time);
END_TYPE;
TYPE person_organization_select = SELECT (person, organization, person_and_organization);
END_TYPE;
TYPE reversible_topology = SELECT
(reversible_topology_item,
list_of_reversible_topology_item,
set_of_reversible_topology_item);
END_TYPE;
TYPE list_of_reversible_topology_item =
LIST [0:?] of reversible_topology_item;
END_TYPE;
TYPE reversible_topology_item = SELECT
(edge,
path,
face,
face_bound,
closed_shell,
open_shell);
END_TYPE;
TYPE set_of_reversible_topology_item =
SET [0:?] of reversible_topology_item;
END_TYPE;
TYPE shell = SELECT
(vertex_shell,
wire_shell,
open_shell,
closed_shell);
END_TYPE;
TYPE shape_representation_with_parameters_items = SELECT (
descriptive_representation_item,
direction,
measure_representation_item,
placement);
END_TYPE;
TYPE knot_type = ENUMERATION OF
(uniform_knots,
quasi_uniform_knots,
piecewise_bezier_knots,
unspecified);
END_TYPE;
TYPE product_or_formation_or_definition = SELECT (product, product_definition_formation, product_definition);
END_TYPE;
TYPE annotation_plane_element = SELECT
(draughting_callout,
styled_item);
END_TYPE;
TYPE plane_or_planar_box = SELECT
(plane,
planar_box) ;
END_TYPE;
TYPE draughting_callout_element = SELECT
(annotation_curve_occurrence,
annotation_fill_area_occurrence,
annotation_symbol_occurrence,
annotation_text_occurrence);
END_TYPE;
TYPE fill_style_select = SELECT (
fill_area_style_colour,
externally_defined_tile_style,
fill_area_style_tiles,
externally_defined_hatch_style,
fill_area_style_hatching);
END_TYPE;
TYPE fill_area_style_tile_shape_select = SELECT
(fill_area_style_tile_curve_with_style,
fill_area_style_tile_coloured_region,
fill_area_style_tile_symbol_with_style,
pre_defined_tile,
externally_defined_tile);
END_TYPE;
TYPE symbol_style_select = SELECT (
symbol_colour);
END_TYPE;
TYPE text_or_character = SELECT
(annotation_text,
annotation_text_character,
defined_character_glyph,
composite_text,
text_literal);
END_TYPE;
TYPE defined_symbol_select = SELECT
(pre_defined_symbol,
externally_defined_symbol);
END_TYPE;
TYPE presentation_representation_select = SELECT
(presentation_representation,
presentation_set);
END_TYPE;
TYPE curve_or_annotation_curve_occurrence = SELECT
(curve,
annotation_curve_occurrence);
END_TYPE;
TYPE surface_style_element_select = SELECT
(surface_style_fill_area,
surface_style_boundary,
surface_style_silhouette,
surface_style_segmentation_curve,
surface_style_control_grid,
surface_style_parameter_line,
surface_style_rendering);
END_TYPE;
TYPE curve_or_render = SELECT
(curve_style,
curve_style_rendering);
END_TYPE;
TYPE shading_surface_method = ENUMERATION OF
(constant_shading,
colour_shading,
dot_shading,
normal_shading);
END_TYPE;
TYPE direction_count_select = SELECT
(u_direction_count,
v_direction_count);
END_TYPE;
TYPE surface_side_style_select = SELECT
(surface_side_style,
pre_defined_surface_side_style);
END_TYPE;
TYPE layered_item = SELECT
(presentation_representation,
representation_item);
END_TYPE;
TYPE area_or_view = SELECT
(presentation_area,
presentation_view);
END_TYPE;
TYPE geometric_set_select = SELECT
(point,
curve,
surface);
END_TYPE;
TYPE day_in_year_number = INTEGER;
WHERE
WR1: {1 <= SELF <= 366};
END_TYPE;
TYPE week_in_year_number = INTEGER;
WHERE
WR1: { 1 <= SELF <= 53 };
END_TYPE;
TYPE day_in_week_number = INTEGER;
WHERE
WR1: { 1 <= SELF <= 7 };
END_TYPE;
TYPE curve_style_font_select = SELECT
(curve_style_font,
pre_defined_curve_font,
externally_defined_curve_font);
END_TYPE;
TYPE shading_curve_method = ENUMERATION OF
(constant_colour,
linear_colour);
END_TYPE;
TYPE rendering_properties_select = SELECT
(surface_style_reflectance_ambient,
surface_style_transparent);
END_TYPE;
TYPE attribute_type = SELECT (label, text);
END_TYPE;
(* Pruned unused type: surface_boundary *)
(* Pruned unused type: shape_tolerance_select *)
(* Pruned unused type: sts_item_identified_representation_usage_definition *)
(* Pruned unused type: product_data_representation_view_item *)
(* Pruned unused type: text_literal_or_text_reference *)
TYPE surface_model = SELECT
(shell_based_surface_model,
face_based_surface_model);
END_TYPE;
(* Pruned unused type: des_invisible_item *)
(* Pruned unused type: wireframe_model *)
ENTITY all_around_shape_aspect
SUBTYPE OF (composite_shape_aspect);
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 change
SUBTYPE OF (action_assignment);
items : SET[1:?] OF work_item;
END_ENTITY;
ENTITY change_request
SUBTYPE OF (action_request_assignment);
items : SET[1:?] OF change_request_item;
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 mechanical_context
SUBTYPE OF (product_context);
WHERE
WR1: SELF.discipline_type = 'mechanical';
END_ENTITY;
ENTITY start_request
SUBTYPE OF (action_request_assignment);
items : SET[1:?] OF start_request_item;
END_ENTITY;
ENTITY start_work
SUBTYPE OF (action_assignment);
items : SET[1:?] OF work_item;
END_ENTITY;
ENTITY supplied_part_relationship
SUBTYPE OF (product_definition_relationship);
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 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 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 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 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 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 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 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 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 process_operation
SUBTYPE OF (action_method);
WHERE
WR1: SIZEOF( QUERY( amr <* USEDIN(SELF,'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP.' +
'RELATING_METHOD') |
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
TYPEOF(amr\action_method_relationship.related_method)) OR
(SELF :=: amr\action_method_relationship.related_method)
)) = 0;
WR2: SIZEOF( QUERY( amr <* USEDIN(SELF,'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP.' +
'RELATED_METHOD') |
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
TYPEOF(amr\action_method_relationship.relating_method)) OR
(SELF :=: amr\action_method_relationship.relating_method)
)) = 0;
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 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.frame_of_reference.name IN
['part_definition','part occurrence','physical occurrence'];
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 area_with_outer_boundary
SUBTYPE OF (complex_area, half_space_2d);
SELF\half_space_2d.base_curve : composite_curve;
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 closed_curve_style_parameters
SUBTYPE OF(curve_style_parameters_representation);
END_ENTITY;
ENTITY complex_area
ABSTRACT SUPERTYPE OF (
AREA_WITH_OUTER_BOUNDARY)
SUBTYPE OF (primitive_2d);
END_ENTITY;
ENTITY csg_primitive_solid_2d
SUBTYPE OF (csg_solid_2d);
SELF\csg_solid.tree_root_expression : primitive_2d;
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 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;
-- TODO does not work with the new introduced subtypes
-- WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_representation ||
-- SELF\csg_2d_shape_representation || SELF\representation)) = 0;
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 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);
-- the mapping source must be a curve (open or closed)
-- no the mapping target must be a curve (open or closed)
--wr2: -- the mapping_source.mapped_representation must be curve_style_parameters_representation;
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';
--don't reall care on mapping_source.mapping_origin. Best to make it the line-width
END_ENTITY;
ENTITY primitive_2d_with_inner_boundary
SUBTYPE OF (primitive_2d, compound_representation_item);
SELF\compound_representation_item.item_element : compound_inner_area_boundary; -- inner_boundary : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
inner_boundary : COMPOUND_INNER_AREA_BOUNDARY := SELF\compound_representation_item.item_element; -- ITEM_ELEMENT : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
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.COMPLEX_AREA'] * 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 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 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 composite_material_designation
SUBTYPE OF (material_designation);
END_ENTITY;
ENTITY compound_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF ( SELF.context_of_items ) ) AND (
SELF.context_of_items\
geometric_representation_context.coordinate_space_dimension =3 ) ;
WR2: SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF (
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' ,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' ,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0;
WR3: SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF (
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' ,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' ,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0;
WR4: SIZEOF ( QUERY ( cbsr_i <* SELF.items | (
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) )
AND ( SIZEOF ( ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'COMPOUND_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' ,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF (
cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0;
END_ENTITY;
ENTITY 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 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 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 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 drawing_sheet_layout
SUBTYPE OF (draughting_symbol_representation);
END_ENTITY;
ENTITY externally_defined_currency
SUBTYPE OF (currency, externally_defined_context_dependent_unit);
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 feature_for_datum_target_relationship
SUBTYPE OF (shape_aspect_relationship);
SELF\shape_aspect_relationship.related_shape_aspect : datum_target;
UNIQUE
UR1: related_shape_aspect;
WHERE
WR1: relating_shape_aspect.of_shape :=: related_shape_aspect.of_shape;
WR2: relating_shape_aspect\shape_aspect.product_definitional = TRUE;
END_ENTITY;
ENTITY 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 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 mechanical_design_presentation_representation_with_draughting
SUBTYPE of (representation);
SELF\representation.items : SET[1:?] OF camera_model_d3;
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 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 laminate_table
SUPERTYPE OF (ONEOF (
PART_LAMINATE_TABLE,
ZONE_STRUCTURAL_MAKEUP))
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY part_laminate_table
SUPERTYPE OF (ONEOF (
COMPOSITE_ASSEMBLY_TABLE,
PLY_LAMINATE_TABLE))
SUBTYPE OF (laminate_table);
END_ENTITY;
ENTITY percentage_laminate_table
SUBTYPE OF (zone_structural_makeup);
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 smeared_material_definition
SUBTYPE OF (zone_structural_makeup);
END_ENTITY;
ENTITY thickness_laminate_table
SUBTYPE OF (zone_structural_makeup);
END_ENTITY;
ENTITY zone_structural_makeup
SUPERTYPE OF (ONEOF ((
SMEARED_MATERIAL_DEFINITION
AND
THICKNESS_LAMINATE_TABLE),(
SMEARED_MATERIAL_DEFINITION
AND
PERCENTAGE_LAMINATE_TABLE),
THICKNESS_LAMINATE_TABLE,
PERCENTAGE_LAMINATE_TABLE,
SMEARED_MATERIAL_DEFINITION))
SUBTYPE OF (laminate_table);
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 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 predefined_picture_representation_item
SUBTYPE OF (picture_representation_item);
WHERE
WR1: SELF\representation_item.name IN pre_defined_picture_representation_types;
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 evaluation_product_definition
SUBTYPE OF (product_definition);
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 draped_defined_transformation
SUBTYPE OF (transformation_with_derived_angle);
END_ENTITY;
ENTITY laid_defined_transformation
SUBTYPE OF (transformation_with_derived_angle);
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; -- minor_orientation_basis : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
SELF\representation_item_relationship.related_representation_item : axis2_placement_3d; -- major_orientation_basis : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
major_orientation_basis : AXIS2_PLACEMENT_3D := SELF\representation_item_relationship.related_representation_item; -- RELATED_REPRESENTATION_ITEM : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
minor_orientation_basis : AXIS2_PLACEMENT_3D := SELF\representation_item_relationship.relating_representation_item; -- RELATING_REPRESENTATION_ITEM : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
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_path
SUBTYPE OF (compound_representation_item, geometric_representation_item);
SELF\compound_representation_item.item_element : point_path_members;
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 shape_feature_definition
SUBTYPE OF (feature_definition);
END_ENTITY;
ENTITY placed_feature
SUBTYPE OF (shape_aspect);
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 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 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 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 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 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 change_group
SUBTYPE OF (group);
END_ENTITY;
ENTITY change_element
ABSTRACT SUPERTYPE OF (ONEOF (
MODIFY_ELEMENT,
DELETE_ELEMENT,
ADD_ELEMENT))
SUBTYPE OF (group, characterized_object);
END_ENTITY;
ENTITY modify_element
SUBTYPE OF (change_element);
END_ENTITY;
ENTITY delete_element
SUBTYPE OF (change_element);
END_ENTITY;
ENTITY add_element
SUBTYPE OF (change_element);
END_ENTITY;
ENTITY change_element_sequence
SUBTYPE OF (group_relationship);
SELF\group_relationship.relating_group : change_element; -- previous : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
SELF\group_relationship.related_group : change_element; -- next : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
next : CHANGE_ELEMENT := SELF\group_relationship.related_group; -- RELATED_GROUP : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
previous : CHANGE_ELEMENT := SELF\group_relationship.relating_group; -- RELATING_GROUP : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY change_composition_relationship
SUBTYPE OF (group_relationship);
SELF\group_relationship.relating_group : change_group; -- composition : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
SELF\group_relationship.related_group : change_element; -- element : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
composition : CHANGE_GROUP := SELF\group_relationship.relating_group; -- RELATING_GROUP : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
element : CHANGE_ELEMENT := SELF\group_relationship.related_group; -- RELATED_GROUP : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY change_group_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : change_group;
item : change_relationship_select;
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 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 frozen_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF change_management_object;
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 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_protocol_definition;
status : label;
application_interpreted_model_schema_name : label;
application_protocol_year : year_number;
application : application_context;
END_ENTITY;
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY;
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
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_definition_context_role;
name : label;
description : OPTIONAL text;
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 applied_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET[1:?] OF effectivity_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 object_role;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY role_association;
role : object_role;
item_with_role : role_select;
END_ENTITY;
ENTITY dated_effectivity
SUBTYPE OF (effectivity);
effectivity_end_date : OPTIONAL date_time_or_event_occurrence;
effectivity_start_date : date_time_or_event_occurrence;
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_relationship;
name : label;
description : OPTIONAL text;
related_effectivity : effectivity;
relating_effectivity : effectivity;
END_ENTITY;
ENTITY lot_effectivity
SUBTYPE OF (effectivity);
effectivity_lot_id : identifier;
effectivity_lot_size : measure_with_unit;
END_ENTITY;
ENTITY serial_numbered_effectivity
SUBTYPE OF (effectivity);
effectivity_start_id : identifier;
effectivity_end_id : OPTIONAL identifier;
END_ENTITY;
ENTITY time_interval_based_effectivity
SUBTYPE OF (effectivity);
effectivity_period : time_interval;
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 assembly_bond_definition
SUBTYPE OF (shape_aspect);
UNIQUE
UR1: SELF\shape_aspect.name;
END_ENTITY;
ENTITY assembly_joint
SUBTYPE OF (component_feature_joint);
WHERE
WR1: acyclic_shape_aspect_relationship(SELF,
[SELF\shape_aspect_relationship.related_shape_aspect],
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'ASSEMBLY_JOINT');
END_ENTITY;
ENTITY component_mating_constraint_condition
SUBTYPE OF (shape_aspect);
UNIQUE
UR1: SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
END_ENTITY;
ENTITY connection_zone_based_assembly_joint
SUBTYPE OF (assembly_joint);
END_ENTITY;
ENTITY 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_terminal
SUBTYPE OF (component_feature);
END_ENTITY;
ENTITY make_from_feature_relationship
SUBTYPE OF (component_feature_relationship);
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 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_source
SUBTYPE OF (group);
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 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 physical_component_feature
SUBTYPE OF (component_feature);
END_ENTITY;
ENTITY physical_component_terminal
SUBTYPE OF (component_terminal,
physical_component_feature);
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 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 interfaced_group_component
SUBTYPE OF (assembly_group_component);
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 rectangular_array_placement_group_component
SUBTYPE OF (array_placement_group);
END_ENTITY;
ENTITY externally_defined_product_definition
SUPERTYPE OF (
LIBRARY_DEFINED_PRODUCT_DEFINITION)
SUBTYPE OF (product_definition, externally_defined_item);
END_ENTITY;
ENTITY library_defined_product_definition
SUBTYPE OF (externally_defined_product_definition);
DERIVE
library : external_source := SELF\externally_defined_item.source;
END_ENTITY;
ENTITY advanced_brep_shape_representation
SUBTYPE OF ( shape_representation );
WHERE
WR1 :
SIZEOF (
QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
WR2 :
SIZEOF (
QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0;
WR3 :
SIZEOF (
QUERY ( msb <*
QUERY ( it <* SELF.items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF (
QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0;
WR4 :
SIZEOF (
QUERY ( msb <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0;
WR5 :
SIZEOF (
QUERY ( brv <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF (
QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0;
WR6 :
SIZEOF (
QUERY ( mi <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
END_ENTITY ;
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
items : SET [1 : ?] OF external_identification_item;
END_ENTITY;
ENTITY circle
SUBTYPE OF (conic);
radius : positive_length_measure;
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 line
SUBTYPE OF (curve);
pnt : cartesian_point;
dir : vector;
WHERE
WR1: dir.dim = pnt.dim;
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_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 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 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 edge_curve
SUBTYPE OF(edge,geometric_representation_item);
edge_geometry : curve;
same_sense : BOOLEAN;
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 poly_loop
SUBTYPE OF (loop,geometric_representation_item);
polygon : LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY;
ENTITY vertex_point
SUBTYPE OF(vertex,geometric_representation_item);
vertex_geometry : point;
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_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 bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY;
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
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 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 uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY;
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY;
ENTITY bounded_curve
SUPERTYPE OF (ONEOF (
POLYLINE,
B_SPLINE_CURVE,
TRIMMED_CURVE,
BOUNDED_PCURVE,
BOUNDED_SURFACE_CURVE,
COMPOSITE_CURVE))
SUBTYPE OF (curve);
END_ENTITY;
ENTITY bounded_surface
SUPERTYPE OF (ONEOF (
B_SPLINE_SURFACE,
RECTANGULAR_TRIMMED_SURFACE,
CURVE_BOUNDED_SURFACE,
RECTANGULAR_COMPOSITE_SURFACE))
SUBTYPE OF (surface);
END_ENTITY;
ENTITY conic
SUPERTYPE OF (ONEOF (
CIRCLE,
ELLIPSE,
HYPERBOLA,
PARABOLA))
SUBTYPE OF (curve);
position: axis2_placement;
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 curve
SUPERTYPE OF (ONEOF (
LINE,
CONIC,
PCURVE,
SURFACE_CURVE,
OFFSET_CURVE_2D,
OFFSET_CURVE_3D,
CURVE_REPLICA))
SUBTYPE OF (geometric_representation_item);
END_ENTITY;
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY;
ENTITY ellipse
SUBTYPE OF (conic);
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
END_ENTITY;
ENTITY hyperbola
SUBTYPE OF (conic);
semi_axis : positive_length_measure;
semi_imag_axis : positive_length_measure;
END_ENTITY;
ENTITY oriented_surface
SUBTYPE OF (surface);
orientation : BOOLEAN;
END_ENTITY;
ENTITY parabola
SUBTYPE OF (conic);
focal_dist : length_measure;
WHERE
WR1: focal_dist <> 0.0;
END_ENTITY;
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY;
ENTITY point_on_curve
SUBTYPE OF (point);
basis_curve : curve;
point_parameter : parameter_value;
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 surface
SUPERTYPE OF (ONEOF (
ELEMENTARY_SURFACE,
SWEPT_SURFACE,
BOUNDED_SURFACE,
OFFSET_SURFACE,
SURFACE_REPLICA))
SUBTYPE OF (geometric_representation_item);
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 swept_surface
SUPERTYPE OF (ONEOF (
SURFACE_OF_LINEAR_EXTRUSION,
SURFACE_OF_REVOLUTION))
SUBTYPE OF (surface);
swept_curve : curve;
END_ENTITY;
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
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_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 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 manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF (QUERY (it <* SELF.items |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0;
WR2: SIZEOF (QUERY (it <* SELF.items |
SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0;
WR3: SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation))
AND
(SIZEOF(QUERY (mr_it <*
mi\mapped_item.mapping_source.mapped_representation.items |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF (mr_it)))) > 0 )))) = 0;
WR4: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (sh <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL']
* TYPEOF (sh)) = 1))) = 0))) = 0;
WR5: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0)))
= 0))) = 0;
WR6: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(msf_surface_check(fa\face_surface.face_geometry))))) = 0)))
= 0))) = 0;
WR7: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (bnds <* fa.bounds |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP']
* TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items|
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF
(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <*
elp_fbnds\path.edge_list |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] *
TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry))
= 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR10: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT (msf_curve_check (oe.edge_element\edge_curve.edge_geometry))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF (QUERY(sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list|
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF
(oe.edge_element.edge_start))
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
TYPEOF (oe.edge_element.edge_end)))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR12: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ((SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
AND
(SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1
)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
= 0))) = 0;
WR14: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry))
= 1))) = 0)))) = 0))) = 0))) = 0;
END_ENTITY;
ENTITY description_attribute;
attribute_value : text;
described_item : description_attribute_select;
END_ENTITY;
ENTITY id_attribute;
attribute_value : identifier;
identified_item : id_attribute_select;
END_ENTITY;
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
units : SET [1:?] OF unit;
END_ENTITY;
ENTITY descriptive_representation_item
SUPERTYPE OF (ONEOF (
TAGGED_TEXT_ITEM,
UNIFORM_RESOURCE_IDENTIFIER) )
SUBTYPE OF (representation_item);
description : text;
END_ENTITY;
ENTITY global_uncertainty_assigned_context
SUBTYPE OF (representation_context);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY;
ENTITY 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_item
SUPERTYPE OF (ONEOF(
BINARY_REPRESENTATION_ITEM,
COMPOUND_REPRESENTATION_ITEM,
VALUE_REPRESENTATION_ITEM,
BOOLEAN_REPRESENTATION_ITEM,
DATE_REPRESENTATION_ITEM,
DATE_TIME_REPRESENTATION_ITEM,
INTEGER_REPRESENTATION_ITEM,
LOGICAL_REPRESENTATION_ITEM,
RATIONAL_REPRESENTATION_ITEM,
REAL_REPRESENTATION_ITEM,
MAPPED_ITEM,
STYLED_ITEM));
name : label;
WHERE
WR1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY;
ENTITY representation_relationship;
name : label;
description : OPTIONAL text;
rep_1 : representation;
rep_2 : representation;
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 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_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_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_assessment_specification;
description : text;
END_ENTITY;
ENTITY data_quality_criterion_assessment_association;
criterion : data_quality_criterion;
assessment_specification : data_quality_assessment_specification;
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_report_request
ABSTRACT SUPERTYPE OF (ONEOF (
SUMMARY_REPORT_REQUEST,
DETAILED_REPORT_REQUEST));
description : text;
criterion_of_report_request : data_quality_criterion;
END_ENTITY;
ENTITY summary_report_request
SUBTYPE OF(data_quality_report_request);
summary_report_request_type : summary_report_type;
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;
WHERE
WR1 : SELF\detailed_report_request.detailed_report_request_type
<> INFERIOR_QUALITY_ELEMENT;
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 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 date_and_time;
date_component : date;
time_component : local_time;
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 date
SUPERTYPE OF (ONEOF (
CALENDAR_DATE,
ORDINAL_DATE,
WEEK_OF_YEAR_AND_DAY_DATE,
YEAR_MONTH));
year_component : year_number;
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_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_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 applied_organization_assignment
SUBTYPE OF (organization_assignment);
items : SET[1:?] OF organization_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 organization_assignment
ABSTRACT SUPERTYPE;
assigned_organization : organization;
role : organization_role;
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_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 name_attribute;
attribute_value : label;
named_item : name_attribute_select;
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 organization;
id : OPTIONAL identifier;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY organization_relationship;
name : label;
description : OPTIONAL text;
relating_organization : organization;
related_organization : organization;
END_ENTITY;
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET [1:?] OF organization;
description : OPTIONAL text;
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 personal_address
SUBTYPE OF (address);
people : SET [1:?] OF person;
description : OPTIONAL text;
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 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 data_quality_definition;
description : text;
END_ENTITY;
ENTITY data_quality_definition_representation_relationship;
description : text;
definition : data_quality_definition;
used_representation : used_quality_representation_select;
END_ENTITY;
ENTITY product_data_and_data_quality_relationship;
description : text;
product_data : product_definition;
data_quality : data_quality_definition;
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 software_for_data_quality_check;
description : text;
software_name : text;
software_version : text;
data_quality : data_quality_definition_representation_relationship;
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
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_with_judgement
SUBTYPE OF(data_quality_inspection_result);
judgement : BOOLEAN;
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_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);
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_report_measurement_association
SUBTYPE OF(representation_item_relationship);
SELF\representation_item_relationship.related_representation_item : data_quality_inspection_report;
SELF\representation_item_relationship.relating_representation_item : data_quality_measurement_requirement;
END_ENTITY;
ENTITY measure_representation_item
SUBTYPE OF (representation_item, measure_with_unit);
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 expanded_uncertainty
SUBTYPE OF (standard_uncertainty);
coverage_factor : REAL;
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))) < 2;
WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM'
IN TYPEOF(SELF\measure_qualification.qualified_measure));
END_ENTITY;
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
qualifiers : SET [1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY(temp <* qualifiers |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER'
IN TYPEOF(temp))) < 2;
END_ENTITY;
ENTITY qualitative_uncertainty
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : text;
END_ENTITY;
ENTITY precision_qualifier;
precision_value : INTEGER;
END_ENTITY;
ENTITY standard_uncertainty
SUPERTYPE OF (
EXPANDED_UNCERTAINTY)
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : REAL;
END_ENTITY;
ENTITY type_qualifier;
name : label;
END_ENTITY;
ENTITY uncertainty_qualifier
SUPERTYPE OF (ONEOF (
STANDARD_UNCERTAINTY,
QUALITATIVE_UNCERTAINTY));
measure_name : label;
description : text;
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_assessment_by_numerical_test
SUBTYPE OF(data_quality_assessment_specification);
threshold : shape_data_quality_value_limit_type_select;
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_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_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_lower_value_limit
SUBTYPE OF(shape_data_quality_value_limit);
WHERE
WR1 : SELF\qualified_representation_item.qualifiers[1].name = 'minimum';
END_ENTITY;
ENTITY shape_summary_request_with_representative_value
SUBTYPE OF(summary_report_request);
END_ENTITY;
ENTITY shape_data_quality_assessment_by_logical_test
SUBTYPE OF(data_quality_assessment_specification);
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_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 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_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 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 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 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 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 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 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 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_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 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; -- ISO 10303-59 error!
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_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_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 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 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 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 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_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 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 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 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_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 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 non_manifold_at_edge
SUBTYPE OF(inapt_topology);
SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
WHERE
WR1 : validate_measured_data_type(SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
WR2 : validate_inspected_elements_type(SELF,
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
WR3 : validate_locations_of_extreme_value_type(SELF,
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
WR4 : validate_accuracy_types(SELF,
[]);
END_ENTITY;
ENTITY non_manifold_at_vertex
SUBTYPE OF(inapt_topology);
SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
WHERE
WR1 : validate_measured_data_type(SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
WR2 : validate_inspected_elements_type(SELF,
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
WR3 : validate_locations_of_extreme_value_type(SELF,
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
WR4 : validate_accuracy_types(SELF,
[]);
END_ENTITY;
ENTITY 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 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 nearly_degenerate_geometry
ABSTRACT SUPERTYPE OF (ONEOF (
SMALL_AREA_SURFACE,
SHORT_LENGTH_CURVE,
ENTIRELY_NARROW_SURFACE))
SUBTYPE OF(inapt_geometry);
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 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 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 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 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 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 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_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 self_intersecting_geometry
ABSTRACT SUPERTYPE OF (ONEOF (
SELF_INTERSECTING_CURVE,
SELF_INTERSECTING_SURFACE))
SUBTYPE OF(inapt_geometry);
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_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 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 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 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 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 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 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 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 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 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 overlapping_geometry
ABSTRACT SUPERTYPE OF (ONEOF (
PARTLY_OVERLAPPING_CURVES,
PARTLY_OVERLAPPING_SURFACES))
SUBTYPE OF(inapt_geometry);
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_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 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_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_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_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_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_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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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_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_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_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_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 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 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 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 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 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 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 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 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 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 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_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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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_measurement_accuracy;
description : text;
range : shape_data_quality_value_limit_type_select;
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 compound_representation_item
SUPERTYPE OF (ONEOF(
POINT_AND_VECTOR,
POINT_PATH,
ROW_REPRESENTATION_ITEM,
TABLE_REPRESENTATION_ITEM))
SUBTYPE OF (representation_item);
item_element : compound_item_definition;
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_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_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_result
SUBTYPE OF(data_quality_inspection_result);
WHERE
WR1 : 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'SHAPE_DATA_QUALITY_CRITERION' IN TYPEOF
(SELF\data_quality_inspection_result.criterion_inspected);
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_inspection_result_accuracy_association;
applied_specific_accuracy : shape_measurement_accuracy;
shape_data_quality_result : shape_data_quality_inspection_result;
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);
inspected_elements : SET [1:?] OF inspected_shape_element_select;
measured_value : measured_value_select;
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 extreme_instance;
locations_of_extreme_value : SET [1:?] OF location_of_extreme_value_select;
measured_value : measured_value_select;
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 plane_angle_and_ratio_pair
SUBTYPE OF(founded_item);
plane_angle_value : plane_angle_measure;
ratio_value : ratio_measure;
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 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_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_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 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 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 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 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_representation_item;
UNIQUE
UR1 : definition;
END_ENTITY;
ENTITY chain_based_geometric_item_specific_usage
SUBTYPE OF (geometric_item_specific_usage,
chain_based_item_identified_representation_usage);
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 defined_constraint
ABSTRACT SUPERTYPE OF (
EQUAL_PARAMETER_CONSTRAINT)
SUBTYPE OF (explicit_constraint);
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 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_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_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 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 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 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 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 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 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 pdgc_with_dimension
SUBTYPE OF (point_distance_geometric_constraint);
distance_value : non_negative_length_measure;
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 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 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 cdgc_with_dimension
SUBTYPE OF (curve_distance_geometric_constraint);
distance_value : non_negative_length_measure;
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 sdgc_with_dimension
SUBTYPE OF (surface_distance_geometric_constraint);
distance_value : non_negative_length_measure;
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 rgc_with_dimension
SUBTYPE OF (radius_geometric_constraint);
radius_value : positive_length_measure;
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 clgc_with_dimension
SUBTYPE OF (curve_length_geometric_constraint);
length_value : positive_length_measure;
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 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 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 agc_with_dimension
SUBTYPE OF (angle_geometric_constraint);
angle_value : plane_angle_measure;
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 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 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 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 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 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_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 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 surface_patch_set
SUBTYPE OF (geometric_representation_item);
patches : SET[1:?] OF surface_patch;
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 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 cartesian_point
SUBTYPE OF (point);
coordinates : LIST [1:3] OF length_measure;
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 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 geometric_representation_context
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY;
ENTITY geometric_representation_item
SUPERTYPE OF (ONEOF(
POINT,
DIRECTION,
VECTOR,
PLACEMENT,
CARTESIAN_TRANSFORMATION_OPERATOR,
CURVE,
SURFACE,
EDGE_CURVE,
FACE_SURFACE,
POLY_LOOP,
VERTEX_POINT,
SOLID_MODEL,
BOOLEAN_RESULT,
SPHERE,
RIGHT_CIRCULAR_CONE,
RIGHT_CIRCULAR_CYLINDER,
TORUS,
BLOCK,
PRIMITIVE_2D,
RIGHT_ANGULAR_WEDGE,
VOLUME,
HALF_SPACE_SOLID,
HALF_SPACE_2D,
SHELL_BASED_SURFACE_MODEL,
FACE_BASED_SURFACE_MODEL,
SHELL_BASED_WIREFRAME_MODEL,
EDGE_BASED_WIREFRAME_MODEL,
GEOMETRIC_SET))
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 applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET[1:?] OF identification_item;
END_ENTITY;
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY;
ENTITY item_defined_transformation;
name : label;
description : OPTIONAL text;
transform_item_1 : representation_item;
transform_item_2 : representation_item;
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 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(SELF.mapping_origin,
SELF.mapped_representation.context_of_items);
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 feature_definition_with_connection_area
SUBTYPE OF (shape_feature_definition);
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 partial_document_with_structured_text_representation_assignment
SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
END_ENTITY;
ENTITY specification_definition
SUBTYPE OF (product_definition);
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; -- applied_area
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; -- Boss
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; -- boss_top
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; -- chamfer
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; -- chamfer_offset
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; -- circular_pattern
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; -- circular_closed_profile
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; -- closed_path_profile
ENTITY composite_hole
SUBTYPE OF (compound_feature);
WHERE
WR1: (SELF\characterized_object.description IN ['counterbore',
'countersunk']);
WR2: 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: (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; -- composite_hole
ENTITY compound_feature
SUBTYPE OF (feature_definition);
WHERE
WR1: 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: 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: (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: 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: (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: (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; -- compound_feature
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; -- direction_shape_representation
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; -- edge_round
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; -- externally_defined_feature_definition
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; -- face_shape_representation
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; -- feature_component_definition
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; -- feature_component_relationship
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; -- feature_pattern
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 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; -- flat_face
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 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; -- hole_bottom
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; -- linear_profile
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; -- location_shape_representation
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; -- marking
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; -- modified_pattern
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 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 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; -- outer_round
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; -- outside_profile
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; -- partial_circular_profile
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; -- path_feature_component
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; -- path_shape_representation
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; -- pattern_offset_membership
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; -- pattern_omit_membership
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 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; -- pocket
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; -- Pocket_bottom
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; -- profile_floor
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; -- protrusion
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; -- rectangular_closed_profile
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; -- rectangular_pattern
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; -- removal_volume
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; -- replicate_feature
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; -- revolved_profile
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; -- rib_top
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; -- rib_top_floor
ENTITY round_hole
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 = '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(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(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(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(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; -- round_hole
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; -- rounded_end
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; -- rounded_u_profile
ENTITY shape_defining_relationship
SUBTYPE OF (shape_aspect_relationship);
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; -- spherical_cap
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; -- Square_U_profile
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; -- step
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; -- slot
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; -- slot_end
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; -- taper
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; -- tee_profile
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; -- thread
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; -- thread_runout
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; -- transition_feature
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; -- turned_knurl
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; -- vee_profile
ENTITY expression_conversion_based_unit
SUBTYPE OF (context_dependent_unit, variable_semantics);
INVERSE
associated_variable_environment: environment FOR semantics;
END_ENTITY;
ENTITY dielectric_constant_measure_with_unit
SUBTYPE OF (ratio_measure_with_unit);
END_ENTITY;
ENTITY loss_tangent_measure_with_unit
SUBTYPE OF (ratio_measure_with_unit);
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 polar_complex_number_literal
SUBTYPE OF (generic_literal);
radius : REAL;
angle : REAL;
WHERE
WR1: radius >= 0;
WR2: { 0 <= angle < 2*PI };
END_ENTITY;
ENTITY scattering_parameter
SUBTYPE OF (polar_complex_number_literal);
WHERE
WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal ||
SELF\scattering_parameter))) = 0;
END_ENTITY;
ENTITY connected_edge_set
SUBTYPE OF (topological_representation_item);
ces_edges : SET [1:?] OF edge;
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 edge
SUPERTYPE OF (ONEOF (
EDGE_CURVE,
ORIENTED_EDGE,
SUBEDGE))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
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 face
SUPERTYPE OF (ONEOF (
FACE_SURFACE,
SUBFACE,
ORIENTED_FACE))
SUBTYPE OF (topological_representation_item);
bounds : SET[1:?] OF face_bound;
WHERE
WR1: NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF))));
WR2: SIZEOF(QUERY(temp <* bounds | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN
TYPEOF(temp))) <= 1;
END_ENTITY;
ENTITY face_bound
SUBTYPE OF(topological_representation_item);
bound : loop;
orientation : BOOLEAN;
END_ENTITY;
ENTITY face_outer_bound
SUBTYPE OF (face_bound);
END_ENTITY;
ENTITY loop
SUPERTYPE OF (ONEOF (
VERTEX_LOOP,
EDGE_LOOP,
POLY_LOOP))
SUBTYPE OF (topological_representation_item);
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 path
SUPERTYPE OF (ONEOF (
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 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);
END_ENTITY;
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY;
ENTITY vertex_loop
SUBTYPE OF (loop);
loop_vertex : vertex;
END_ENTITY;
ENTITY assembly_geometric_constraint
ABSTRACT SUPERTYPE OF (ONEOF (
BINARY_ASSEMBLY_CONSTRAINT,
FIXED_CONSTITUENT_ASSEMBLY_CONSTRAINT))
SUBTYPE OF (explicit_constraint);
END_ENTITY;-- assembly_geometric_constraint
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;-- binary_assembly_constraint
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;-- fixed_constituent_assembly_constraint
ENTITY parallel_assembly_constraint
SUBTYPE OF (binary_assembly_constraint,
parallel_geometric_constraint);
END_ENTITY;-- parallel_assembly_constraint
ENTITY parallel_assembly_constraint_with_dimension
SUBTYPE OF (parallel_assembly_constraint,
pgc_with_dimension);
END_ENTITY;-- parallel_assembly_constraint_with_dimension
ENTITY surface_distance_assembly_constraint_with_dimension
SUBTYPE OF (binary_assembly_constraint,
sdgc_with_dimension);
END_ENTITY;-- surface_distance_assembly_constraint_with_dimension
ENTITY angle_assembly_constraint_with_dimension
SUBTYPE OF (binary_assembly_constraint,
agc_with_dimension);
END_ENTITY;-- angle_assembly_constraint_with_dimension
ENTITY perpendicular_assembly_constraint
SUBTYPE OF (binary_assembly_constraint,
perpendicular_geometric_constraint);
END_ENTITY;-- perpendicular_assembly_constraint
ENTITY incidence_assembly_constraint
SUBTYPE OF (binary_assembly_constraint,
incidence_geometric_constraint);
END_ENTITY;-- incidence_assembly_constraint
ENTITY coaxial_assembly_constraint
SUBTYPE OF (binary_assembly_constraint,
coaxial_geometric_constraint);
END_ENTITY;-- coaxial_assembly_constraint
ENTITY tangent_assembly_constraint
SUBTYPE OF (binary_assembly_constraint,
tangent_geometric_constraint);
END_ENTITY;-- tangent_assembly_constraint
ENTITY kinematic_control;
controlled_mechanism : mechanism_representation;
contained_kinematic_programs : kinematic_analysis_definition;
END_ENTITY;
ENTITY prescribed_path
SUBTYPE OF (link_motion_representation_along_path);
controlling_joints : OPTIONAL SET [1 : 6] OF kinematic_joint;
END_ENTITY;
ENTITY kinematic_analysis_result;
analysed_mechanism : mechanism_representation; -- LK
result : kinematic_result;
(*
WHERE
WR1: ('KINEMATIC_ANALYSIS_CONTROL_AND_RESULT_SCHEMA.RESULTING_PATH' IN TYPEOF (result))
XOR
(SIZEOF (QUERY (result <* contained_kinematic_results |
(('KINEMATIC_ANALYSIS_CONTROL_AND_RESULT_SCHEMA.'+
'INTERPOLATED_CONFIGURATION_SEQUENCE' IN TYPEOF (result))
AND
(SIZEOF (QUERY (sequence <* result\
interpolated_configuration_sequence.interpolation |
(sequence.interpolation <> undefined ))) > 0)))) = 0);
*)
END_ENTITY;
ENTITY kinematic_analysis_consistency;
control : kinematic_control;
result : kinematic_analysis_result;
WHERE
WR1: control.controlled_mechanism :=: result.analysed_mechanism;
END_ENTITY;
ENTITY resulting_path
SUBTYPE OF (link_motion_representation_along_path);
controlling_joints : SET [1 : ?] OF kinematic_joint;
END_ENTITY;
ENTITY action_method;
name : label;
description : OPTIONAL text;
consequence : text;
purpose : text;
END_ENTITY;
ENTITY assembly_component_usage
SUPERTYPE OF (ONEOF (
NEXT_ASSEMBLY_USAGE_OCCURRENCE,
SPECIFIED_HIGHER_USAGE_OCCURRENCE,
PROMISSORY_USAGE_OCCURRENCE))
SUBTYPE OF (product_definition_usage);
reference_designator : OPTIONAL identifier;
END_ENTITY;
ENTITY next_assembly_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY;
ENTITY promissory_usage_occurrence
SUBTYPE OF (assembly_component_usage);
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 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 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 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_specification
SUBTYPE OF (product_identification, configurable_item);
END_ENTITY;
ENTITY product_definition_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product_definition : product_definition;
related_product_definition : product_definition;
END_ENTITY;
ENTITY property_definition;
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_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 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 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 instance_usage_context_assignment
SUBTYPE OF (product_definition_context);
items : SET [1:?] OF instance_usage_context_select;
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_method_relationship;
name : label;
description : OPTIONAL text;
relating_method : action_method;
related_method : action_method;
END_ENTITY;
ENTITY action_resource;
name : label;
description : OPTIONAL text;
usage : SET [1:?] OF supported_item;
kind : action_resource_type;
END_ENTITY;
ENTITY action_property_representation;
name : label;
description : text;
property : action_property;
representation : representation;
END_ENTITY;
ENTITY resource_property_representation;
name : label;
description : text;
property : resource_property;
representation : representation;
END_ENTITY;
ENTITY action_property;
name : label;
description : text;
definition : characterized_action_definition;
END_ENTITY;
ENTITY action_resource_requirement;
name : label;
description : text;
kind : resource_requirement_type;
operations : SET [1:?] OF characterized_action_definition;
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_definition_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
product_definitions : SET [1:?] OF process_product_association FOR process;
END_ENTITY;
ENTITY property_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
properties : SET [1:?] OF process_property_association FOR process;
END_ENTITY;
ENTITY requirement_for_action_resource
SUBTYPE OF (action_resource_requirement);
resources : SET [1:?] OF action_resource;
END_ENTITY;
ENTITY resource_property;
name : label;
description : text;
resource : characterized_resource_definition;
END_ENTITY;
ENTITY resource_requirement_type;
name : label;
description : text;
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 circular_area
SUBTYPE OF (primitive_2d);
centre: cartesian_point;
radius: 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 polygonal_area
SUBTYPE OF (primitive_2d);
bounds: LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY;
ENTITY primitive_2d
SUPERTYPE OF (ONEOF(
CIRCULAR_AREA,
ELLIPTIC_AREA,
RECTANGULAR_AREA,
POLYGONAL_AREA,
ELLIPTIC_AREA,
COMPLEX_AREA))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1 : SELF\geometric_representation_item.dim = 2;
END_ENTITY;
ENTITY rectangular_area
SUBTYPE OF (primitive_2d);
position: axis2_placement_2d;
x: positive_length_measure;
y: positive_length_measure;
END_ENTITY;
ENTITY boolean_result
SUBTYPE OF (geometric_representation_item);
operator : boolean_operator;
first_operand : boolean_operand;
second_operand : boolean_operand;
END_ENTITY;
ENTITY csg_solid
SUBTYPE OF (solid_model);
tree_root_expression : csg_select;
END_ENTITY;
ENTITY half_space_2d
SUBTYPE OF (geometric_representation_item);
base_curve: curve;
agreement_flag: BOOLEAN;
END_ENTITY;
ENTITY product_design_version_to_individual
SUBTYPE OF (product_definition_formation_relationship);
DERIVE
individual_product : PRODUCT_DEFINITION_FORMATION := SELF\product_definition_formation_relationship.related_product_definition_formation; -- RELATED_PRODUCT_DEFINITION_FORMATION : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
product_design_version : PRODUCT_DEFINITION_FORMATION := SELF\product_definition_formation_relationship.relating_product_definition_formation; -- RELATING_PRODUCT_DEFINITION_FORMATION : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY product_design_to_individual
SUBTYPE OF (product_relationship);
DERIVE
individual_product : PRODUCT := SELF\product_relationship.related_product; -- RELATED_PRODUCT : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
product_design : PRODUCT := SELF\product_relationship.relating_product; -- RELATING_PRODUCT : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY product_planned_to_realized
SUBTYPE OF (product_definition_formation_relationship);
DERIVE
planned_product : PRODUCT_DEFINITION_FORMATION := SELF\product_definition_formation_relationship.relating_product_definition_formation; -- RELATING_PRODUCT_DEFINITION_FORMATION : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
realized_product : PRODUCT_DEFINITION_FORMATION := SELF\product_definition_formation_relationship.related_product_definition_formation; -- RELATED_PRODUCT_DEFINITION_FORMATION : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY product_as_planned
SUBTYPE OF (product_definition_formation);
END_ENTITY;
ENTITY configuration_item_hierarchical_relationship
SUBTYPE OF (configuration_item_relationship);
END_ENTITY;
ENTITY configuration_item_revision_sequence
SUBTYPE OF (configuration_item_relationship);
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_item;
id : identifier;
name : label;
description : OPTIONAL text;
item_concept : product_concept;
purpose : OPTIONAL label;
END_ENTITY;
ENTITY configuration_item_relationship;
name : label;
description : OPTIONAL text;
relating_configuration_item : configuration_item;
related_configuration_item : configuration_item;
END_ENTITY;
ENTITY identification_assignment
ABSTRACT SUPERTYPE;
assigned_id : identifier;
role : identification_role;
END_ENTITY;
ENTITY product;
id : identifier;
name : label;
description : OPTIONAL text;
frame_of_reference : SET [1:?] OF product_context;
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_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_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 applied_action_assignment
SUBTYPE OF (action_assignment);
items : SET[1:?] OF action_items;
END_ENTITY;
ENTITY action_relationship;
name : label;
description : OPTIONAL text;
relating_action : action;
related_action : action;
END_ENTITY;
ENTITY action_status;
status : label;
assigned_action : executed_action;
END_ENTITY;
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY;
ENTITY action_assignment
ABSTRACT SUPERTYPE;
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 characterized_object;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY characterized_item_within_representation
SUBTYPE OF (characterized_object);
item : representation_item;
rep : representation;
UNIQUE
WR1: item, rep;
WHERE
WR2: rep IN using_representations(item);
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 UNIQUE chained_representation_link;
DERIVE
root : representation := nodes[1];
SELF\characterized_item_within_representation.rep : representation := nodes[HIINDEX(nodes)]; -- leaf : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
leaf : REPRESENTATION := SELF\characterized_item_within_representation.rep; -- REP : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
WHERE
WR1 : root :=: directed_link[1]\representation_relationship.rep_1;
WR2 : leaf :=: directed_link[HIINDEX(undirected_link)]\representation_relationship.rep_2;
WR3 : SIZEOF(nodes) :=: SIZEOF(undirected_link) + 1;
WR4 : (SIZEOF(QUERY(directed_link_element <* directed_link |(root :=: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(root :=: directed_link_element\representation_relationship.rep_2)))) = 1;
WR5 : (SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :=: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :=: directed_link_element\representation_relationship.rep_2)))) = 1;
WR6 : (SIZEOF(QUERY(directed_link_element <* directed_link |(root :<>: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(root :<>: directed_link_element\representation_relationship.rep_2))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :<>: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :<>: directed_link_element\representation_relationship.rep_2)))) = 2;
WR7 : NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(undirected_link[1])) OR
(root IN using_representations(undirected_link[1]));
WR8 : SIZEOF(undirected_link) = SIZEOF(directed_link);
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.derived_definition)) )) = 0;
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 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 csg_shape_representation
SUBTYPE OF ( shape_representation );
WHERE
WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
WR2 :
SIZEOF (
QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0;
WR3 :
SIZEOF (
QUERY ( mi <*
QUERY ( it <* SELF.items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
WR4 :
SIZEOF (
QUERY ( sr <*
QUERY ( it <* SELF.items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0;
WR5 :
SIZEOF (
QUERY ( it <* SELF.items| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0;
END_ENTITY ;
ENTITY 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 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 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 characterized_class
SUBTYPE OF (characterized_object, class);
END_ENTITY;
ENTITY class_system
SUBTYPE OF (group);
END_ENTITY;
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET[1:?] OF classification_item;
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 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 classification_assignment
ABSTRACT SUPERTYPE;
assigned_class : group;
role : classification_role;
END_ENTITY;
ENTITY known_source
SUBTYPE OF (external_source, pre_defined_item);
END_ENTITY;
ENTITY group_relationship;
name : label;
description : OPTIONAL text;
relating_group : group;
related_group : group;
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(USEDIN(derived_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1;
WR2: derived_definition.name = base_definition.name;
END_ENTITY;
ENTITY classification_role;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY applied_usage_right
SUBTYPE OF (applied_action_assignment);
SELF\applied_action_assignment.items : SET[1:?] OF ir_usage_item;
END_ENTITY;
ENTITY information_right
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY information_usage_right
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY right_to_usage_association
SUBTYPE OF (action_method_relationship);
SELF\action_method_relationship.relating_method : information_usage_right; -- right_usage : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
SELF\action_method_relationship.related_method : information_right; -- right_applied : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
right_applied : INFORMATION_RIGHT := SELF\action_method_relationship.related_method; -- RELATED_METHOD : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
right_usage : INFORMATION_USAGE_RIGHT := SELF\action_method_relationship.relating_method; -- RELATING_METHOD : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY usage_association
SUBTYPE OF (action_method_relationship);
SELF\action_method_relationship.relating_method : information_usage_right; -- relating : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
SELF\action_method_relationship.related_method : information_usage_right; -- related : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
DERIVE
related : INFORMATION_USAGE_RIGHT := SELF\action_method_relationship.related_method; -- RELATED_METHOD : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
relating : INFORMATION_USAGE_RIGHT := SELF\action_method_relationship.relating_method; -- RELATING_METHOD : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
END_ENTITY;
ENTITY applied_action_method_assignment
SUBTYPE OF (action_method_assignment);
items : SET[1:?] OF action_method_items;
END_ENTITY;
ENTITY action_method_assignment
ABSTRACT SUPERTYPE;
assigned_action_method : action_method;
role : action_method_role;
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 attribute_classification_assignment
ABSTRACT SUPERTYPE;
assigned_class : group;
attribute_name : label;
role : classification_role;
END_ENTITY;
ENTITY contract_type;
description : label;
END_ENTITY;
ENTITY document_type;
product_data_type : label;
END_ENTITY;
ENTITY property_definition_relationship;
name : label;
description : text;
relating_property_definition : property_definition;
related_property_definition : property_definition;
END_ENTITY;
ENTITY product_definition_formation_with_specified_source
SUBTYPE OF (product_definition_formation);
make_or_buy : source;
END_ENTITY;
ENTITY parametric_representation_context
SUBTYPE OF (representation_context);
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 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 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 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 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 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 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_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 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 constructive_geometry_representation
SUBTYPE OF (representation);
WHERE
WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3});
WR2: SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0;
WR3: SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0;
WR4: SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0;
END_ENTITY;
ENTITY constructive_geometry_representation_relationship
SUBTYPE OF (representation_relationship);
SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation;
SELF\representation_relationship.rep_2 : constructive_geometry_representation;
WHERE
WR1: (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items));
WR2: NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
END_ENTITY;
ENTITY advanced_face
SUBTYPE OF ( face_surface );
WHERE
WR1 :
SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1;
WR2 :
SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0;
WR3 :
SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0;
WR4 :
SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0;
WR5 :
SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0;
WR6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1);
WR7 :
SIZEOF (
QUERY ( vlp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0;
WR8 :
SIZEOF (
QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0;
WR9 :
SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (
QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0;
WR10 : (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF (
QUERY ( elp_fbnds <*
QUERY ( bnds <* bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3) )) = 0) )) = 0);
END_ENTITY ;
ENTITY curve_bounded_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
boundaries : SET [1:?] OF boundary_curve;
implicit_outer : BOOLEAN;
WHERE
WR1: (NOT implicit_outer) OR
(SIZEOF (QUERY (temp <* boundaries |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0);
WR2: (NOT(implicit_outer)) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface));
WR3: SIZEOF(QUERY(temp <* boundaries |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN
TYPEOF(temp))) <= 1;
WR4: SIZEOF(QUERY(temp <* boundaries |
(temp\composite_curve_on_surface.basis_surface [1] <>
SELF.basis_surface))) = 0;
END_ENTITY;
ENTITY curve_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 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 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 placement
SUPERTYPE OF (ONEOF (
AXIS1_PLACEMENT,
AXIS2_PLACEMENT_2D,
AXIS2_PLACEMENT_3D))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
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 polyline
SUBTYPE OF (bounded_curve);
points : LIST [2:?] OF cartesian_point;
END_ENTITY;
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
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 apex
SUBTYPE OF (derived_shape_aspect);
END_ENTITY;
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
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 extension
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
ENTITY geometric_alignment
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
END_ENTITY;
ENTITY geometric_intersection
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
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 perpendicular_to
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
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 tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
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 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 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 externally_defined_item;
item_id : source_item;
source : external_source;
END_ENTITY;
ENTITY dimensional_location_with_datum_feature
SUBTYPE OF (datum_feature, dimensional_location);
END_ENTITY;
ENTITY dimensional_size_with_datum_feature
SUBTYPE OF (datum_feature, dimensional_size);
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 dimensional_characteristic_representation;
dimension : dimensional_characteristic;
representation : shape_dimension_representation;
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;
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;
WHERE
WR1: applies_to.product_definitional = TRUE;
END_ENTITY;
ENTITY dimensional_size_with_path
SUBTYPE OF (dimensional_size);
path : shape_aspect;
END_ENTITY;
ENTITY directed_dimensional_location
SUBTYPE OF (dimensional_location);
END_ENTITY;
ENTITY shape_dimension_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF shape_dimension_representation_item;
WHERE
WR1: SIZEOF (QUERY (temp <* items | NOT ( NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (temp)) OR (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (temp)) OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF (temp))) ) )) = 0;
END_ENTITY;
ENTITY limits_and_fits;
form_variance : label;
zone_variance : label;
grade : label;
source : text;
END_ENTITY;
ENTITY plus_minus_tolerance;
range : tolerance_method_definition;
toleranced_dimension : dimensional_characteristic;
UNIQUE
UR1: toleranced_dimension;
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 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 terminator_symbol
SUBTYPE OF (annotation_symbol_occurrence);
annotated_curve : annotation_curve_occurrence;
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 draughting_annotation_occurrence
SUBTYPE OF (annotation_occurrence);
--modified wr7
WHERE
WR1: -- curve_has_curve_style:
(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: -- fill_area_has_fill_style:
(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: -- styled_fill_boundaries:
(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: -- symbol_has_symbol_style:
(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: -- allowable_symbol_representations:
(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: -- text_has_text_style:
(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: -- allowable_text:
(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',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_REFERENCE']) = 1);
WR8: -- text_not_nested:
(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: -- text_alignment_literals:
(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: -- text_alignment_composites:
(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: -- single_text_alignment:
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: -- single_text_font:
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: -- allowable_text_literals:
(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: -- styled_text_literal_curves:
(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: -- styled_composite_text_curves:
(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: -- curve_style_has_width:
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: -- tiling_constraints:
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: -- hatching_constraints:
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: -- text_style_constraint:
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: -- text_style_characteristics:
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_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 annotation_symbol_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : annotation_symbol_occurrence_item;
END_ENTITY;
ENTITY pre_defined_symbol
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY applied_presented_item
SUBTYPE OF (presented_item);
items : SET[1:?] OF presented_item_select;
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_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 draughting_title;
items : SET [1:?] OF draughting_titled_item;
language : label;
contents : text;
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 elementary_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1 : SIZEOF (QUERY (it <* SELF.items |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
TYPEOF(it)) = 1))) = 0;
WR2 : SIZEOF (QUERY (it <* SELF.items |
SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;
WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces |
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0
))) = 0
))) = 0;
WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN
TYPEOF(fcs\face_surface.face_geometry))
))) = 0
))) = 0
))) = 0;
WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
TYPEOF(oe.edge_element)))) = 0
))) = 0
))) = 0
))) = 0
))) = 0;
WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'] *
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 )
)) = 0
))) = 0
))) = 0
))) = 0
))) = 0;
WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start))
AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
TYPEOF(oe.edge_end))
))) = 0
))) = 0
))) = 0
))) = 0
))) = 0;
WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
(NOT (SIZEOF (oe\oriented_edge.edge_element\
edge_curve.edge_geometry\polyline.points) >= 3))
)) = 0
))) = 0
))) = 0
))) = 0
))) = 0;
WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF
(msb\manifold_solid_brep.outer)))
= 0;
WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids |
csh\oriented_closed_shell.orientation)) = 0))) = 0;
WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN
TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) |
NOT(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.
loop_vertex\vertex_point.vertex_geometry))
))) = 0))) = 0))) = 0))) =0;
END_ENTITY;
ENTITY 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 iso4217_currency
SUBTYPE OF (currency);
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 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 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 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 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 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 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 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 context_dependent_unit
SUBTYPE OF (named_unit);
name : 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 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 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 capacitance_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad);
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 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 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 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 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_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 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 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 conductance_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens);
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 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 electric_potential_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt);
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 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 energy_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule);
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 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 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_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 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 force_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton);
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 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 frequency_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz);
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 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 illuminance_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux);
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 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 inductance_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry);
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 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 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 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_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_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 magnetic_flux_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber);
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 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 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 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 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 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 power_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt);
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 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 pressure_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal);
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 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 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 resistance_unit
SUBTYPE OF(derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm);
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 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 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 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 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 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 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 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 composite_unit_shape_aspect
SUBTYPE OF (composite_shape_aspect);
END_ENTITY;
ENTITY cc_design_approval
SUBTYPE OF (approval_assignment);
items : SET[1:?] OF approved_item;
END_ENTITY;
ENTITY between_shape_aspect
SUBTYPE OF (continuous_shape_aspect);
END_ENTITY;
ENTITY continuous_shape_aspect
SUBTYPE OF (composite_shape_aspect);
END_ENTITY;
ENTITY composite_shape_aspect
SUPERTYPE OF (ONEOF (
ALL_AROUND_SHAPE_ASPECT,
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_group_shape_aspect
SUBTYPE OF (composite_shape_aspect);
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 contacting_feature
SUBTYPE OF (shape_aspect);
WHERE
WR1: SELF\shape_aspect.product_definitional = FALSE;
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_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_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_system
SUBTYPE OF (shape_aspect);
constituents : LIST[1:3] OF UNIQUE datum_reference_compartment;
UNIQUE
UR1: SELF\shape_aspect.of_shape,SELF\shape_aspect.name;
WHERE
WR1: SELF\shape_aspect.product_definitional = FALSE;
END_ENTITY;
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
INVERSE
target_basis_relationship : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN TYPEOF (sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY;
ENTITY 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 geometric_contact
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 2;
END_ENTITY;
ENTITY referenced_modified_datum
SUBTYPE OF (datum_reference);
modifier : limit_condition;
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 dimension_related_tolerance_zone_element;
related_dimension : dimensional_location;
related_element : tolerance_zone_definition;
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);
UNIQUE
UR1: name,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);
END_ENTITY;
ENTITY geometric_tolerance_relationship;
name : label;
description : text;
relating_geometric_tolerance : geometric_tolerance;
related_geometric_tolerance : 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_unit
SUBTYPE OF (geometric_tolerance);
unit_size : length_measure_with_unit;
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_defined_area_unit
SUBTYPE OF (geometric_tolerance_with_defined_unit);
area_type : area_unit_type;
second_unit_size : OPTIONAL length_measure_with_unit;
WHERE
WR1: NOT (EXISTS(second_unit_size) XOR (area_type = rectangular));
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;
END_ENTITY;
ENTITY modified_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
modifier : limit_condition;
END_ENTITY;
ENTITY non_uniform_zone_definition
SUBTYPE OF (tolerance_zone_definition);
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 runout_zone_definition
SUBTYPE OF (tolerance_zone_definition);
orientation : runout_zone_orientation;
END_ENTITY;
ENTITY runout_zone_orientation_reference_direction
SUBTYPE OF (runout_zone_orientation);
orientation_defining_relationship : shape_aspect_relationship;
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 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 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 line_profile_tolerance
SUBTYPE OF (geometric_tolerance);
END_ENTITY;
ENTITY position_tolerance
SUBTYPE OF (geometric_tolerance);
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 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 surface_profile_tolerance
SUBTYPE OF (geometric_tolerance);
END_ENTITY;
ENTITY angularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY circular_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY coaxiality_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY concentricity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY parallelism_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY perpendicularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY symmetry_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY total_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
END_ENTITY;
ENTITY unequally_disposed_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
displacement : length_measure_with_unit;
WHERE
WR1: ('NUMBER' IN TYPEOF (SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component)) AND (SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component > 0.0);
END_ENTITY;
ENTITY shape_aspect;
name : label;
description : OPTIONAL text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
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_definition_representation
SUBTYPE OF (property_definition_representation);
SELF\property_definition_representation.definition : property_definition;
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));
WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF\property_definition_representation.used_representation);
END_ENTITY;
ENTITY manifold_subsurface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF (QUERY (it <* SELF.items |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
TYPEOF(it)) = 1))) = 0;
WR2: SIZEOF (QUERY (it <* SELF.items |
SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;
WR3: SIZEOF (QUERY (mi <* QUERY (it <* items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN
TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)))) = 0;
WR4: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0;
WR5: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT( (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN
TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND
(SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT
advanced_face_properties(fac))) = 0)) OR
(SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0)
))) = 0;
WR6: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces | NOT
advanced_face_properties(fac))) = 0))) = 0;
WR7: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
TYPEOF(oe.edge_element)) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE' IN
TYPEOF(oe.edge_element)) ))) = 0
))) = 0
))) = 0
))) = 0;
WR8: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start))
AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
TYPEOF(oe.edge_end))
))) = 0
))) = 0
))) = 0
))) = 0;
WR9: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
( NOT (SIZEOF(QUERY (bnds <* fcs.bounds |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
TYPEOF(bnds.bound)) = 1 )
)) = 0)
))) = 0
))) = 0;
WR10: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' ] *
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 )
)) = 0
))) = 0
)))) = 0
))) = 0;
WR11: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
(NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
(NOT ((SIZEOF (QUERY (sc_ag <*
oe.edge_element\edge_curve.edge_geometry\
surface_curve.associated_geometry |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
TYPEOF(sc_ag)))) = 0)))
)) = 0
))) = 0
)))) = 0
))) = 0;
WR12: SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
(NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
(NOT (SIZEOF (oe\oriented_edge.edge_element\
edge_curve.edge_geometry\polyline.points) >= 3))
)) = 0
))) = 0
)))) = 0
))) = 0;
END_ENTITY;
ENTITY 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 externally_defined_colour
SUBTYPE OF (colour_specification,externally_defined_item);
END_ENTITY; -- externally_defined_colour
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_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_interection_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_interection_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_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 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 <* SELF.style_context | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR
(SIZEOF(QUERY(sc <* SELF.style_context |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc))
OR ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) ))
= SIZEOF(style_context));
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: -- only presentation_views or axis2_placements in
-- mechanical_design_geometric_presentation_area
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: -- only mechanical_design_geometric_presentation_representation
-- via camera_image_3d_with_scale or axis2_placements in
-- presentation_views
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)) |
-- search in all presentation_views for axis2_placements and
-- mapped_items and for the subtype of mapped_item
-- camera_image_3d_with_scale; the latter shall reference
-- a mechanical_design_geometric_presentation_representation;
-- the supertype mapped_item shall reference presentation_view.
NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source.
mapped_representation\representation.items |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT'
IN TYPEOF(it2))
OR
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
IN TYPEOF(it2)) AND NOT
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT (
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW'
IN TYPEOF
(it2\mapped_item.mapping_source.mapped_representation)))
OR
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))
AND NOT (
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) ))
))) = 0))) = 0;
WR3: (SIZEOF(QUERY(ps <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
((ps\presentation_size.size.size_in_x <= 0)
OR
(ps\presentation_size.size.size_in_y <= 0)))) = 0)
AND
(SIZEOF(QUERY(ais <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AREA_IN_SET.AREA') |
(SIZEOF(QUERY(ps <* USEDIN (ais,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
((ps\presentation_size.size.size_in_x <= 0)
OR
(ps\presentation_size.size.size_in_y <= 0)))) > 0))) = 0);
WR4: (SIZEOF(QUERY(ps <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1)
AND
(SIZEOF(QUERY(ps <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0)
OR
((SIZEOF(QUERY(ais <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AREA_IN_SET.AREA') |
(SIZEOF(QUERY(ps <* USEDIN (ais,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1)
AND
(SIZEOF(QUERY(ais <* USEDIN (SELF,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AREA_IN_SET.AREA') |
(SIZEOF(QUERY(ps <* USEDIN (ais,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_SIZE.UNIT') |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1));
END_ENTITY;
ENTITY mechanical_design_geometric_presentation_representation
SUBTYPE OF (representation);
SELF\representation.items : SET[1:?] OF mechanical_design_geometric_presentation_representation_items;
WHERE
WR1: SIZEOF(QUERY(mi <* QUERY(it <* SELF.items |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
IN TYPEOF(it))) | NOT (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SHAPE_REPRESENTATION',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION']
* TYPEOF(mi\mapped_item.mapping_source.mapped_representation))
= 1))) = 0;
WR2: SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it))) |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
IN TYPEOF(si\styled_item.item))) | NOT (
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item.
item\mapped_item.mapping_source.mapped_representation))) )) = 0;
WR3: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE']
* TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
WR4: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) |
NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'REPRESENTATION_ITEM',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION']
* TYPEOF(psbc\presentation_style_by_context.style_context))
= 1))) = 0))) = 0;
WR5: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE'
IN TYPEOF(pss)) | NOT
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(ps\point_style.marker_colour))
= 1)))) = 0))) = 0))) = 0;
WR6: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF(pss)) | NOT((SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(cs\curve_style.curve_colour)) = 1)
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0;
WR7: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_SIDE_STYLE' IN TYPEOF
(ssu\surface_style_usage.style)))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
NOT (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_PARAMETER_LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_CONTROL_GRID',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_SILHOUETTE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_SEGMENTATION_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_FILL_AREA',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_BOUNDARY']
* TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF
(sspl\surface_style_parameter_line.style_of_parameter_lines))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_colour)) = 1)
AND (
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF
(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(sspl\surface_style_parameter_line.
style_of_parameter_lines\curve_style.curve_font)) = 1))))
= 0))) = 0))) = 0))) = 0;
WR10: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_colour)) = 1)
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF
(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(sscg\surface_style_control_grid.
style_of_control_grid\curve_style.curve_font)) = 1))))
= 0))) = 0))) = 0))) = 0;
WR11: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) |
NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(sssh\surface_style_silhouette.
style_of_silhouette\curve_style.curve_colour)) = 1)
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF
(sssh\surface_style_silhouette.style_of_silhouette\curve_style.
curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(sssh\surface_style_silhouette.
style_of_silhouette\curve_style.curve_font)) = 1))))
= 0))) = 0))) = 0))) = 0;
WR12: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF
(sssc\surface_style_segmentation_curve.style_of_segmentation_curve))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_colour)) = 1)
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF
(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(sssc\surface_style_segmentation_curve.
style_of_segmentation_curve\curve_style.curve_font)) = 1))))
= 0))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'
IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <*
ssu\surface_style_usage.style\surface_side_style.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_COLOUR']
* TYPEOF(ssbd\surface_style_boundary.
style_of_boundary\curve_style.curve_colour)) = 1)
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary.
style_of_boundary\curve_style.curve_width))
AND (SIZEOF(
['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
* TYPEOF(ssbd\surface_style_boundary.
style_of_boundary\curve_style.curve_font)) = 1)))) = 0)))
= 0))) = 0))) = 0;
END_ENTITY;
ENTITY 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 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 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 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 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 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 beveled_sheet_representation
SUBTYPE OF (shape_representation);
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 flat_pattern_ply_representation_relationship
SUBTYPE OF (shape_representation_relationship);
WHERE
WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
(TYPEOF (SELF\representation_relationship.rep_1) *
TYPEOF (SELF\representation_relationship.rep_2));
WR2: SELF\representation_relationship.rep_1.
context_of_items\geometric_representation_context.
coordinate_space_dimension = 3;
END_ENTITY;
ENTITY shape_representation_relationship
SUBTYPE OF (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));
END_ENTITY;
ENTITY binary_representation_item
SUBTYPE OF (representation_item);
binary_value : BINARY;
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 external_identification_assignment
ABSTRACT SUPERTYPE
SUBTYPE OF (identification_assignment);
source : external_source;
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_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 (SELF.unit)) AND
item_in_context (SELF.size,
SELF.unit\representation.context_of_items)
)
OR
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET'
IN TYPEOF (SELF.unit)) AND
(SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas |
NOT item_in_context (SELF.size, ais.area\representation.
context_of_items) )) = 0));
END_ENTITY;
ENTITY area_in_set;
area : presentation_area;
in_set : presentation_set;
END_ENTITY;
ENTITY planar_box
SUBTYPE OF (planar_extent);
placement: axis2_placement;
END_ENTITY;
ENTITY abstract_variable
SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item);
END_ENTITY;
ENTITY atomic_formula
SUBTYPE OF (compound_representation_item);
END_ENTITY;
ENTITY attribute_assertion
SUBTYPE OF (fact_type, property_definition_representation, representation);
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 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 entity_assertion
SUBTYPE OF (fact_type);
END_ENTITY;
ENTITY enum_reference_prefix
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY extent
SUBTYPE OF (characterized_object);
END_ENTITY;
ENTITY fact_type
SUBTYPE OF (property_definition);
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 func
SUBTYPE OF (compound_representation_item);
END_ENTITY;
ENTITY global_assignment
SUBTYPE OF (representation_item_relationship);
END_ENTITY;
ENTITY ground_fact
SUBTYPE OF (atomic_formula);
END_ENTITY;
ENTITY literal_conjunction
SUBTYPE OF (simple_clause);
END_ENTITY;
ENTITY literal_disjunction
SUBTYPE OF (simple_clause);
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_superseded_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF rule_superseded_item;
END_ENTITY;
ENTITY rule_set
SUBTYPE OF (rule_software_definition);
END_ENTITY;
ENTITY rule_software_definition
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY rule_set_group
SUBTYPE OF (rule_software_definition);
END_ENTITY;
ENTITY rule_supersedence
SUBTYPE OF (rule_action);
END_ENTITY;
ENTITY scalar_variable
SUBTYPE OF (abstract_variable);
END_ENTITY;
ENTITY simple_clause
SUBTYPE OF (compound_representation_item);
END_ENTITY;
ENTITY symbol
SUBTYPE OF (representation_item);
END_ENTITY;
ENTITY representation_relationship_with_transformation
SUBTYPE OF (representation_relationship);
transformation_operator : transformation;
WHERE
WR1: SELF\representation_relationship.rep_1.context_of_items
:<>: SELF\representation_relationship.rep_2.context_of_items;
END_ENTITY;
ENTITY point
SUPERTYPE OF (ONEOF (
CARTESIAN_POINT,
POINT_ON_CURVE,
POINT_ON_SURFACE,
POINT_REPLICA,
DEGENERATE_PCURVE))
SUBTYPE OF (geometric_representation_item);
END_ENTITY;
ENTITY representation_item_relationship;
name : label;
description : OPTIONAL text;
relating_representation_item : representation_item;
related_representation_item : representation_item;
END_ENTITY;
ENTITY uncertainty_assigned_representation
SUBTYPE OF (representation);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY;
ENTITY context_dependent_shape_representation;
representation_relation : shape_representation_relationship;
represented_product_relation : product_definition_shape;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition);
WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY functionally_defined_transformation;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY general_property_relationship;
name : label;
description : OPTIONAL text;
relating_property : general_property;
related_property : general_property;
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 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 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_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_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 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 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 user_selected_shape_elements
SUBTYPE OF (user_selected_elements);
SELF\user_selected_elements.picked_items : SET [1:?] OF shape_representation_item;
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 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 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 double_offset_shelled_solid
SUBTYPE OF (shelled_solid);
thickness2 : length_measure;
WHERE
WR1: thickness2 <> 0;
WR2: SELF\shelled_solid.thickness <> thickness2;
END_ENTITY;
ENTITY sculptured_solid
SUBTYPE OF (modified_solid);
sculpturing_element : generalized_surface_select;
positive_side : BOOLEAN;
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 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_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_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_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_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_single_offset_chamfer
SUBTYPE OF (solid_with_chamfered_edges);
offset_distance : positive_length_measure;
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 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 track_blended_solid
ABSTRACT SUPERTYPE OF (
TRACK_BLENDED_SOLID_WITH_END_CONDITIONS)
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 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 data_environment;
name : label;
description : text;
elements : SET [1:?] OF property_definition_representation;
END_ENTITY;
ENTITY material_property_representation
SUBTYPE OF (property_definition_representation);
dependent_environment : data_environment;
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 application_context_element
SUPERTYPE OF (ONEOF (
PRODUCT_CONCEPT_CONTEXT,
PRODUCT_CONTEXT,
PRODUCT_DEFINITION_CONTEXT));
name : label;
frame_of_reference : application_context;
END_ENTITY;
ENTITY character_glyph_style_stroke
SUBTYPE OF (founded_item);
stroke_style : curve_style;
END_ENTITY;
ENTITY character_glyph_style_outline
SUBTYPE OF (founded_item);
outline_style : curve_style;
END_ENTITY;
ENTITY text_style
SUBTYPE OF (founded_item);
name : label;
character_appearance : character_style_select;
END_ENTITY;
ENTITY text_style_with_spacing
SUBTYPE OF (text_style);
character_spacing : character_spacing_select;
END_ENTITY;
ENTITY composite_text_with_extent
SUBTYPE OF (composite_text);
extent : planar_extent;
END_ENTITY;
ENTITY composite_text_with_delineation
SUBTYPE OF (composite_text);
delineation : text_delineation;
END_ENTITY;
ENTITY composite_text_with_blanking_box
SUBTYPE OF (composite_text);
blanking : planar_box;
END_ENTITY;
ENTITY defined_character_glyph
SUBTYPE OF(geometric_representation_item);
definition : defined_glyph_select;
placement : axis2_placement;
END_ENTITY;
ENTITY pre_defined_character_glyph
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_character_glyph
SUBTYPE OF (externally_defined_item);
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_extent
SUBTYPE OF (text_literal);
extent : planar_extent;
END_ENTITY;
ENTITY text_literal_with_delineation
SUBTYPE OF (text_literal);
delineation : text_delineation;
END_ENTITY;
ENTITY text_literal_with_blanking_box
SUBTYPE OF (text_literal);
blanking : planar_box;
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 draughting_pre_defined_text_font
SUBTYPE of (pre_defined_text_font);
WHERE
WR1: SELF.name[1:8] = 'ISO 3098';
END_ENTITY;
ENTITY externally_defined_text_font
SUBTYPE OF (externally_defined_item);
END_ENTITY;
ENTITY pre_defined_colour
SUBTYPE OF (pre_defined_item, colour);
END_ENTITY;
ENTITY pre_defined_text_font
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY fill_area_style_colour;
name : label;
fill_colour : colour;
END_ENTITY;
ENTITY invisibility;
invisible_items : SET [1:?] OF invisible_item;
END_ENTITY;
ENTITY over_riding_styled_item
SUBTYPE OF (styled_item);
over_ridden_style : styled_item;
END_ENTITY;
ENTITY presentation_style_assignment
SUBTYPE OF (founded_item);
styles : SET [1:?] OF presentation_style_select;
WHERE
WR1: SIZEOF (QUERY (style1 <* SELF.styles |
NOT (SIZEOF (QUERY (style2 <* (SELF.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 <* SELF.styles |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
TYPEOF(style1)
)) <= 2;
WR3: SIZEOF (QUERY (style1 <* SELF.styles |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND
(SIZEOF (QUERY (style2 <* (SELF.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 externally_defined_style
SUBTYPE OF (externally_defined_item, founded_item);
END_ENTITY;
ENTITY styled_item
SUBTYPE OF (representation_item);
styles : SET [1:?] OF presentation_style_assignment;
item : representation_item;
WHERE
WR1: (SIZEOF(SELF.styles) = 1)
XOR
(SIZEOF(QUERY(pres_style <* SELF.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));
END_ENTITY;
ENTITY annotation_occurrence
SUPERTYPE OF (ONEOF (
ANNOTATION_CURVE_OCCURRENCE,
ANNOTATION_FILL_AREA_OCCURRENCE,
ANNOTATION_TEXT_OCCURRENCE,
ANNOTATION_SYMBOL_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_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_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : annotation_text_occurrence_item;
END_ENTITY;
ENTITY annotation_curve_occurrence
SUBTYPE OF (annotation_occurrence);
SELF\styled_item.item : curve_or_curve_set;
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 curve_style
SUBTYPE OF (founded_item);
name : label;
curve_font : curve_font_or_scaled_curve_font_select;
curve_width : size_select;
curve_colour : colour;
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 <* SELF.characteristics |
SIZEOF( QUERY( c2 <* SELF.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 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 character_glyph_font_usage;
character : generic_character_glyph_symbol;
font : text_font;
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(SELF.character_box,
SELF\representation.context_of_items);
WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'
IN TYPEOF (SELF.box_height);
END_ENTITY;
ENTITY character_glyph_symbol_outline
SUBTYPE OF (character_glyph_symbol);
outlines : SET [1:?] OF annotation_fill_area;
WHERE
WR1: SELF.outlines <= SELF\representation.items;
END_ENTITY;
ENTITY character_glyph_symbol_stroke
SUBTYPE OF (character_glyph_symbol);
strokes : SET [1:?] OF curve;
WHERE
WR1: SELF.strokes <= SELF\representation.items;
END_ENTITY;
ENTITY generic_character_glyph_symbol
ABSTRACT SUPERTYPE
SUBTYPE OF (symbol_representation);
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 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 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 applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET[1:?] OF approval_item;
END_ENTITY;
ENTITY approval;
status : approval_status;
level : label;
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 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 boolean_representation_item
SUBTYPE OF (representation_item, boolean_literal);
END_ENTITY;
ENTITY date_representation_item
SUBTYPE OF (representation_item, date);
END_ENTITY;
ENTITY date_time_representation_item
SUBTYPE OF (representation_item, date_and_time);
END_ENTITY;
ENTITY integer_representation_item
SUBTYPE OF (representation_item, int_literal);
END_ENTITY;
ENTITY logical_representation_item
SUBTYPE OF (representation_item, logical_literal);
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 real_representation_item
SUBTYPE OF (representation_item, real_literal);
END_ENTITY;
ENTITY boolean_literal
SUBTYPE OF (simple_Boolean_expression, generic_literal);
the_value: BOOLEAN;
END_ENTITY;
ENTITY int_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value: INTEGER;
END_ENTITY;
ENTITY slash_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY real_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value: REAL;
END_ENTITY;
ENTITY binary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF(generic_expression);
operands: LIST [2:2] OF generic_expression;
END_ENTITY;
ENTITY logical_literal
SUBTYPE OF (generic_literal);
lit_value : LOGICAL;
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 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_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_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_intersection_curve
SUBTYPE of (implicit_planar_curve);
external_surface : surface;
END_ENTITY;
ENTITY implicit_projected_curve
SUBTYPE of (implicit_planar_curve);
external_curve : curve;
projection_direction : direction;
END_ENTITY;
ENTITY implicit_model_intersection_curve
SUBTYPE of (implicit_planar_curve);
intersected_model : surface_or_solid_model;
END_ENTITY;
ENTITY implicit_silhouette_curve
SUBTYPE of (implicit_planar_curve);
silhouetted_model : surface_or_solid_model;
view_direction : direction;
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 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 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 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 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 rigid_subsketch
SUBTYPE OF (subsketch);
END_ENTITY;
ENTITY time_interval;
id : identifier;
name : label;
description : OPTIONAL text;
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_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: NOT (EXISTS(secondary_bound) AND EXISTS(duration));
WR2: EXISTS(primary_bound) OR EXISTS(secondary_bound);
END_ENTITY;
ENTITY event_occurrence;
id : identifier;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY event_occurrence_relationship;
name : label;
description : OPTIONAL text;
relating_event : event_occurrence;
related_event : event_occurrence;
END_ENTITY;
ENTITY relative_event_occurrence
SUBTYPE OF (event_occurrence);
base_event : event_occurrence;
offset : time_measure_with_unit;
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 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_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 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 physical_component
SUBTYPE OF (assembly_component);
END_ENTITY;
ENTITY thermal_component
SUBTYPE OF (assembly_component);
END_ENTITY;
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
outer : closed_shell;
END_ENTITY;
ENTITY brep_with_voids
SUBTYPE OF (manifold_solid_brep);
voids : SET [1:?] OF oriented_closed_shell;
END_ENTITY;
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
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 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 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_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 evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
equivalent_point : cartesian_point;
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 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 open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY;
ENTITY product_definition_context_association;
definition : product_definition;
frame_of_reference : product_definition_context;
role : product_definition_context_role;
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 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_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 shape_aspect_relationship;
name : label;
description : OPTIONAL text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY item_identified_representation_usage;
name : label;
description : OPTIONAL text;
definition : item_identified_representation_usage_definition;
used_representation : representation;
identified_item : representation_item;
WHERE
WR1: SELF.used_representation IN using_representations(SELF.identified_item);
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 UNIQUE chained_representation_link;
DERIVE
root : representation := nodes[1];
SELF\item_identified_representation_usage.used_representation : representation := nodes[HIINDEX(nodes)]; -- leaf : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, an attribute with the new name is in the DERIVE clause
directed_link : LIST [1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
leaf : REPRESENTATION := SELF\item_identified_representation_usage.used_representation; -- USED_REPRESENTATION : This ATTRIBUTE was RENAMED in the EXPRESS E2 source, this is the new name implemented as DERIVE
WHERE
WR1 : root :=: directed_link[1]\representation_relationship.rep_1;
WR2 : leaf :=: directed_link[HIINDEX(undirected_link)]\representation_relationship.rep_2;
WR3 : SIZEOF(nodes) :=: SIZEOF(undirected_link) + 1;
WR4 : (SIZEOF(QUERY(directed_link_element <* directed_link |(root :=: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(root :=: directed_link_element\representation_relationship.rep_2)))) = 1;
WR5 : (SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :=: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :=: directed_link_element\representation_relationship.rep_2)))) = 1;
WR6 : (SIZEOF(QUERY(directed_link_element <* directed_link |(root :<>: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(root :<>: directed_link_element\representation_relationship.rep_2))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :<>: directed_link_element\representation_relationship.rep_1))) +
SIZEOF(QUERY(directed_link_element <* directed_link |(leaf :<>: directed_link_element\representation_relationship.rep_2)))) = 2;
WR7 : NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(undirected_link[1])) OR
(root IN using_representations(undirected_link[1]));
WR8 : SIZEOF(undirected_link) = SIZEOF(directed_link);
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 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 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 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 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 simple_string_expression
ABSTRACT SUPERTYPE OF (ONEOF (
STRING_LITERAL,
STRING_VARIABLE))
SUBTYPE OF (string_expression, simple_generic_expression);
END_ENTITY;
ENTITY SQL_mappable_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function);
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 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 elementary_space
SUBTYPE OF (maths_space, generic_literal);
space_id : elementary_space_enumerators;
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 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 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 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 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 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 maths_variable
SUBTYPE OF (generic_variable);
values_space : maths_space;
name : label;
WHERE
WR1: expression_is_constant(values_space);
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 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 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 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 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 instance_attribute_reference
SUBTYPE OF (variable_semantics);
attribute_name : attribute_identifier;
owning_instance : representation_item;
END_ENTITY;
ENTITY unbound_variational_parameter_semantics
SUBTYPE OF (variable_semantics);
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 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 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 auxiliary_geometric_representation_item
SUBTYPE OF (geometric_representation_item,
variational_representation_item);
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_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 environment;
syntactic_representation: generic_variable;
semantics: variable_semantics;
END_ENTITY;
ENTITY variable_semantics
ABSTRACT SUPERTYPE;
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 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 sphere
SUBTYPE OF (geometric_representation_item);
radius : positive_length_measure;
centre : point;
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 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 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 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 characteristic_data_table_header
SUBTYPE OF (general_property);
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_decomposition
SUBTYPE OF (general_property_relationship);
END_ENTITY;
ENTITY characteristic_type
SUBTYPE OF (group);
END_ENTITY;
ENTITY null_representation_item
SUBTYPE OF (representation_item);
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 row_representation_item
SUBTYPE OF(compound_representation_item);
SELF\compound_representation_item.item_element : list_representation_item;
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 externally_defined_general_property
SUBTYPE OF (general_property, externally_defined_item);
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 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 tagged_text_item
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY tagged_text_format
SUBTYPE OF (representation_context);
END_ENTITY;
ENTITY uniform_resource_identifier
SUBTYPE OF (descriptive_representation_item);
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 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 generic_literal
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
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; -- shape_aspect_relationship_representation_association
ENTITY representative_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: unique_in_product_definition (SELF) OR unique_in_shape_aspect (SELF);
END_ENTITY; -- representative_shape_representation
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; -- free_kinematic_motion_representation
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; -- constrained_kinematic_motion_representation
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_sequence
SUBTYPE OF (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 interpolated_configuration_segment
SUBTYPE OF (founded_item);
state : mechanism_state_representation;
t_parameter : parameter_value;
interpolation : interpolation_type;
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 item_link_motion_relationship
SUBTYPE OF (link_motion_relationship);
SELF\representation_relationship.rep_1 : shape_representation;
item : geometric_representation_item;
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 link_motion_representation_along_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 geometric_representation_context_with_parameter
SUBTYPE OF (geometric_representation_context);
parameter_unit : OPTIONAL unit;
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;
-- WR2 - parameters are increasing
-- WR3 - different end positions
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_defined_by_curves
SUBTYPE OF (kinematic_path);
SELF\kinematic_path.segments : LIST [1:?] OF curve_based_path_with_orientation;
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 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_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 point_to_point_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code := discontinuous;
END_ENTITY;
ENTITY circular_path
SUBTYPE OF (path_node);
via_point : cartesian_point;
END_ENTITY;
ENTITY linear_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code := continuous;
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 exclusive_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category);
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 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 product_class
SUBTYPE OF (product_concept,characterized_object);
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 applied_group_assignment
SUBTYPE OF (group_assignment);
items : SET[1:?] OF groupable_item;
END_ENTITY;
ENTITY conditional_concept_feature
SUBTYPE OF (product_concept_feature);
condition : concept_feature_relationship_with_condition;
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 concept_feature_operator;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY configurable_item
SUBTYPE OF (configuration_item);
item_concept_feature : SET[1:?] OF product_concept_feature_association;
END_ENTITY;
ENTITY physical_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY;
ENTITY physical_element_usage
SUBTYPE OF (breakdown_element_usage);
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 product_definition_element_relationship
SUBTYPE OF (group);
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 functional_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY;
ENTITY functional_element_usage
SUBTYPE OF (breakdown_element_usage);
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 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 effectivity_context_assignment
ABSTRACT SUPERTYPE;
assigned_effectivity_assignment : effectivity_assignment;
role : effectivity_context_role;
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 vector
SUBTYPE OF (geometric_representation_item);
orientation : direction;
magnitude : length_measure;
WHERE
WR1 : magnitude >= 0.0;
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 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 non_manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF (QUERY (it <* SELF.items |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1)))
= 0;
WR2: SIZEOF (QUERY (it <* SELF.items |
SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0;
WR3: SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation))
AND
(SIZEOF(QUERY (mr_it <*
mi\mapped_item.mapping_source.mapped_representation.items |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL'
IN TYPEOF (mr_it)))) > 0 )))) = 0;
WR4: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1)))
= 0))) = 0))) = 0;
WR5: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf))
OR
(nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0)))
= 0))) = 0;
WR6: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces |
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF
(o_fa\oriented_face.face_element))
OR
(nmsf_surface_check
(o_fa\oriented_face.face_element\face_surface.face_geometry)))))
= 0))) = 0))) = 0;
WR7: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (bnds <* fa.bounds |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP']
* TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items|
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF
(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <*
elp_fbnds\path.edge_list |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] *
TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry))
= 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR10: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list|
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF
(oe.edge_element.edge_start))
AND
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
TYPEOF (oe.edge_element.edge_end)))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR12: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ((SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
AND
(SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1
)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
= 0))) = 0;
WR14: SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
fbsm\face_based_surface_model.fbsm_faces |
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry))
= 1))) = 0)))) = 0))) = 0))) = 0;
END_ENTITY;
ENTITY faceted_brep_shape_representation
SUBTYPE OF ( shape_representation );
WHERE
WR1 :
SIZEOF (
QUERY ( it <* items| NOT ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
WR2 :
SIZEOF (
QUERY ( it <* items| ( SIZEOF ([ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0;
WR3 :
SIZEOF (
QUERY ( fbrep <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF (
QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0;
WR4 :
SIZEOF (
QUERY ( fbrep <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF (
QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF (
QUERY ( bnds <* fcs.bounds| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0;
WR5 :
SIZEOF (
QUERY ( msb <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0;
WR6 :
SIZEOF (
QUERY ( brv <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF (
QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0;
WR7 :
SIZEOF (
QUERY ( mi <*
QUERY ( it <* items| ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
END_ENTITY ;
ENTITY 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 half_space_solid
SUBTYPE OF(geometric_representation_item);
base_surface : surface;
agreement_flag : BOOLEAN;
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 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 b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
knot_multiplicities : LIST [2:?] OF INTEGER;
knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
WR1: constraints_param_b_spline(degree, upper_index_on_knots,
upper_index_on_control_points,
knot_multiplicities, knots);
WR2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY;
ENTITY b_spline_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 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 degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
select_outer : BOOLEAN;
WHERE
WR1: major_radius < minor_radius;
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 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 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 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 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_representation_type;
name : label;
represented_document : document;
END_ENTITY;
ENTITY external_class_library
SUBTYPE OF (external_source);
END_ENTITY;
ENTITY externally_defined_class
SUBTYPE OF (class, externally_defined_item);
END_ENTITY;
ENTITY applied_name_assignment
SUBTYPE OF (name_assignment);
item : name_item;
END_ENTITY;
ENTITY pre_defined_item;
name : label;
END_ENTITY;
ENTITY applied_contract_assignment
SUBTYPE OF (contract_assignment);
items : SET[1:?] OF contract_item;
END_ENTITY;
ENTITY contract;
name : label;
purpose : text;
kind : contract_type;
END_ENTITY;
ENTITY contract_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_contract : contract;
related_contract : contract;
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 applied_security_classification_assignment
SUBTYPE OF (security_classification_assignment);
items : SET [1:?] OF security_classification_item;
END_ENTITY;
ENTITY applied_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET [1 : ?] OF action_request_item;
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 document_product_association;
name : label;
description : OPTIONAL text;
relating_document : document;
related_product : product_or_formation_or_definition;
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_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 product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET [1:?] OF document;
END_ENTITY;
ENTITY applied_time_interval_assignment
SUBTYPE OF (time_interval_assignment);
items : SET[0:?] OF time_interval_item;
END_ENTITY;
ENTITY externally_defined_marker
SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
END_ENTITY;
ENTITY externally_defined_terminator_symbol
SUBTYPE OF (externally_defined_symbol);
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_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 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 vector_style
SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
END_ENTITY;
ENTITY solid_curve_font
SUBTYPE OF (pre_defined_curve_font);
END_ENTITY;
ENTITY user_defined_curve_font
SUBTYPE OF (curve_style_font, mapped_item);
END_ENTITY;
ENTITY curve_style_font
SUBTYPE OF (founded_item);
name : label;
pattern_list : LIST [1:?] OF curve_style_font_pattern;
END_ENTITY;
ENTITY draughting_pre_defined_curve_font
SUBTYPE OF (pre_defined_curve_font);
WHERE
WR1: SELF.name IN
['continuous',
'chain',
'chain double dash',
'dashed',
'dotted'];
END_ENTITY;
ENTITY point_style
SUBTYPE OF (founded_item);
name : label;
marker : marker_select;
marker_size : size_select;
marker_colour : colour;
END_ENTITY;
ENTITY pre_defined_curve_font
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY pre_defined_marker
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_symbol
SUBTYPE OF (externally_defined_item);
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 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 draughting_callout
SUPERTYPE OF (ONEOF (
DATUM_FEATURE_CALLOUT,
DATUM_TARGET_CALLOUT,
DIMENSION_CURVE_DIRECTED_CALLOUT,
DRAUGHTING_ELEMENTS,
GEOMETRICAL_TOLERANCE_CALLOUT,
LEADER_DIRECTED_CALLOUT,
PROJECTION_DIRECTED_CALLOUT,
STRUCTURED_DIMENSION_CALLOUT)
ANDOR (
SURFACE_CONDITION_CALLOUT) )
SUBTYPE OF (geometric_representation_item);
contents : SET [1:?] OF draughting_callout_element;
WHERE
WR1: (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
(SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
(SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF)));
END_ENTITY;
ENTITY 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 projection_curve
SUBTYPE OF (annotation_curve_occurrence);
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_relationship;
name : label;
description : text;
relating_annotation_occurrence : annotation_occurrence;
related_annotation_occurrence : annotation_occurrence;
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 angular_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY;
ENTITY curve_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY;
ENTITY datum_feature_callout
SUBTYPE OF (draughting_callout);
END_ENTITY;
ENTITY datum_target_callout
SUBTYPE OF (draughting_callout);
END_ENTITY;
ENTITY diameter_dimension
SUBTYPE OF (dimension_curve_directed_callout);
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_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 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 geometrical_tolerance_callout
SUBTYPE OF (draughting_callout);
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 linear_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY;
ENTITY ordinate_dimension
SUBTYPE OF (projection_directed_callout);
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 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 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 context_dependent_invisibility
SUBTYPE OF (invisibility);
presentation_context : invisibility_context;
END_ENTITY;
ENTITY externally_defined_curve_font
SUBTYPE OF (externally_defined_item);
END_ENTITY;
ENTITY externally_defined_hatch_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
ENTITY externally_defined_tile_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
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 <* SELF.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_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_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 symbol_colour;
colour_of_symbol : colour;
END_ENTITY;
ENTITY symbol_style
SUBTYPE OF (founded_item);
name : label;
style_of_symbol : symbol_style_select;
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 <* SELF.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_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 composite_text
SUBTYPE OF (geometric_representation_item);
collected_text : SET[2:?] of text_or_character;
WHERE
WR1: acyclic_composite_text( SELF, SELF.collected_text);
END_ENTITY;
ENTITY composite_text_with_associated_curves
SUBTYPE OF (composite_text);
associated_curves : SET[1:?] of curve;
END_ENTITY;
ENTITY defined_symbol
SUBTYPE OF(geometric_representation_item);
definition : defined_symbol_select;
target : symbol_target;
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 text_literal_with_associated_curves
SUBTYPE OF (text_literal);
associated_curves : SET[1:?] of curve;
END_ENTITY;
ENTITY text_reference
ABSTRACT SUPERTYPE
SUBTYPE OF(representation_item);
END_ENTITY;
ENTITY presentation_view
SUBTYPE OF (presentation_representation);
END_ENTITY;
ENTITY presented_item
ABSTRACT SUPERTYPE;
END_ENTITY;
ENTITY presentation_set;
INVERSE
areas : SET [1:?] OF area_in_set FOR in_set;
END_ENTITY;
ENTITY presented_item_representation;
presentation : presentation_representation_select;
item : presented_item;
END_ENTITY;
ENTITY external_source_relationship;
name : label;
description : OPTIONAL text;
relating_source : external_source;
related_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 connected_face_sub_set
SUBTYPE OF (connected_face_set);
parent_face_set : connected_face_set;
END_ENTITY;
ENTITY subedge
SUBTYPE OF (edge);
parent_edge : edge;
END_ENTITY;
ENTITY subface
SUBTYPE OF (face);
parent_face : face;
WHERE
WR1: NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) +
list_to_set(list_face_loops(parent_face))));
END_ENTITY;
ENTITY colour;
END_ENTITY;
ENTITY colour_specification
SUBTYPE OF (colour);
name : label;
END_ENTITY;
ENTITY draughting_pre_defined_colour
SUBTYPE OF (pre_defined_colour);
WHERE
WR1: SELF.name IN
['red',
'green',
'blue',
'yellow',
'magenta',
'cyan',
'black',
'white'];
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_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 pre_defined_surface_side_style
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY pre_defined_tile
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_tile
SUBTYPE OF (externally_defined_item);
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 <* SELF.styles |
SIZEOF(QUERY( style2 <* SELF.styles - style1 |
TYPEOF(style1) = TYPEOF(style2)
)) > 0
)) = 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_rendering;
rendering_method : shading_surface_method;
surface_colour : colour;
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(SELF.direction_counts) = 1)
XOR
(TYPEOF(SELF.direction_counts[1]) <>
TYPEOF(SELF.direction_counts[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_usage
SUBTYPE OF (founded_item);
side : surface_side;
style : surface_side_style_select;
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 presentation_layer_assignment;
name : label;
description : text;
assigned_items : SET [1:?] OF layered_item;
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 background_colour
SUBTYPE OF (colour);
presentation : area_or_view;
UNIQUE
UR1: presentation;
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 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 planar_extent
SUBTYPE OF (geometric_representation_item);
size_in_x : length_measure;
size_in_y : length_measure;
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 : (* only presentation_views or axis2_placements in
mechanical_design_shaded_presentation_area *)
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 : (* only mechanical_design_shaded_presentation_representation
via camera_image_3d_with_scale or axis2_placements in
presentation_views *)
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)) |
(* search in all presentation_views for axis2_placements and
mapped_items and for the subtype of mapped_item,
camera_image_3d_with_scale; the latter shall reference
a mechanical_design_geometric_presentation_representation;
the supertype mapped_item shall reference presentation_view. *)
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: (* Presentation_size shall be a positive rectangle for area and set.
Check for this presentation_area subtype first. *)
(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
(* check secondly for presentation_set, via area_in_set *)
(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)) |
(* after having collected all presentation_set, check their sizes *)
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: (* Drawing space shall be defined in 2D.
Check for this presentation_area subtype first. *)
(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
(* check secondly for presentation_set, via area_in_set *)
(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)) |
(* after having collected all presentation_set, check their
dimension *)
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 : (* valid types of camera_models
get for all presentation_areas their presentation_views *)
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)) |
(* search in all presentation_views for
mapped_items and for the subtype of mapped_item,
camera_image_3d_with_scale; the latter shall reference
a camera_usage that shall have as its mapping_origin either
camera_model_d3, camera_model_d3_with_hlhsr, or
camera_model_with_light_sources. *)
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; (* mechanical_design_shaded_presentation_area *)
ENTITY mechanical_design_shaded_presentation_representation
SUBTYPE OF (representation);
SELF\representation.items : SET[1:?] OF mechanical_design_shaded_presentation_representation_items;
WHERE
WR1: (* for all mapped_items check that only
shape_representations and
mechanical_design_shaded_presentation_representations
are referenced *)
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: (* for all styled_item.item check that in case they are
mapped_items that they are shape_representations *)
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: (* for all styled_items get their styles via
presentation_style_assignment.styles and check for valid
style types *)
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: (* for all styled_items get those assigned styles that
are presentation_style_by_contexts and ensure that
these reference only representation_items and
representations as valid contexts *)
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: (* for all styled_items get all assigned point_styles
and ensure that marker_select, marker_size and
marker_colour are valid *)
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: (* for all styled_items get all assigned curve_styles
and ensure that curve_width, curve_font and
curve_colour are valid *)
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: (* for all styled_items get all assigned surface_style_usages
and ensure that its style is a surface_side_style *)
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: (* for all styled_items get all assigned surface_style_usages
and the surface_side_styles that they reference, and ensure
that the styles referenced by those surface_side_styles
are among the valid subset *)
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: (* for all surface_style_fill_areas that are referenced by
any surface_side_styles ensure that they are valid
with respect to their colour representation *)
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: (* for all surface_style_parameter_lines that are referenced by
any surface_side_styles ensure that they are valid
with respect to the applied curve_style, which may include
rendering *)
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: (* for all surface_style_control_grids that are referenced by
any surface_side_styles ensure that they are valid
with respect to the applied curve_style, which may include
rendering *)
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: (* for all surface_style_silhouettes that are referenced by
any surface_side_styles ensure that they are valid
with respect to the applied curve_style, which may include
rendering *)
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: (* for all surface_style_segmentation_curves that are referenced by
any surface_side_styles ensure that they are valid
with respect to the applied curve_style, which may include
rendering *)
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: (* for all surface_style_boundaries that are referenced by
any surface_side_styles ensure that they are valid
with respect to the applied curve_style, which may include
rendering *)
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: (* for all surface_style_renderings that are referenced by
any surface_side_styles ensure that the colour
representation is valid *)
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 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 boundary_curve
SUBTYPE OF (composite_curve_on_surface);
WHERE
WR1: SELF\composite_curve.closed_curve;
END_ENTITY;
ENTITY geometric_set
SUBTYPE OF (geometric_representation_item);
elements : SET [1:?] OF geometric_set_select;
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 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 geometric_curve_set
SUBTYPE OF (geometric_set);
WHERE
WR1: SIZEOF(QUERY(temp <* SELF\geometric_set.elements |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0;
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 week_of_year_and_day_date
SUBTYPE OF (date);
week_component : week_in_year_number;
day_component : OPTIONAL day_in_week_number;
END_ENTITY;
ENTITY year_month
SUBTYPE OF (date);
month_component : month_in_year_number;
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_variable
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
INVERSE
interpretation :
environment FOR syntactic_representation;
END_ENTITY;
ENTITY multiple_arity_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF(generic_expression);
operands: LIST [2:?] OF generic_expression;
END_ENTITY;
ENTITY simple_generic_expression
ABSTRACT SUPERTYPE OF (ONEOF (
GENERIC_LITERAL,
GENERIC_VARIABLE))
SUBTYPE OF (generic_expression);
END_ENTITY;
ENTITY unary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF(generic_expression);
operand: generic_expression;
END_ENTITY;
ENTITY variable
ABSTRACT SUPERTYPE OF (ONEOF (
NUMERIC_VARIABLE,
BOOLEAN_VARIABLE,
STRING_VARIABLE))
SUBTYPE OF(generic_variable);
END_ENTITY;
ENTITY and_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY;
ENTITY binary_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (
XOR_EXPRESSION,
EQUALS_EXPRESSION))
SUBTYPE OF (boolean_expression, binary_generic_expression);
END_ENTITY;
ENTITY binary_function_call
ABSTRACT SUPERTYPE
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY binary_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 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_variable
SUBTYPE OF (simple_Boolean_expression, variable);
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 defined_function
ABSTRACT SUPERTYPE OF ((ONEOF (
NUMERIC_DEFINED_FUNCTION,
STRING_DEFINED_FUNCTION,
BOOLEAN_DEFINED_FUNCTION))
ANDOR
SQL_MAPPABLE_DEFINED_FUNCTION);
END_ENTITY;
ENTITY div_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY equals_expression
SUBTYPE OF (binary_boolean_expression);
END_ENTITY;
ENTITY expression
ABSTRACT SUPERTYPE OF (ONEOF (
NUMERIC_EXPRESSION,
BOOLEAN_EXPRESSION,
STRING_EXPRESSION))
SUBTYPE OF (generic_expression);
END_ENTITY;
ENTITY int_numeric_variable
SUBTYPE OF (numeric_variable);
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 minus_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY mod_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY mult_expression
SUBTYPE OF (multiple_arity_numeric_expression);
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_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 not_expression
SUBTYPE OF (unary_Boolean_expression);
SELF\unary_generic_expression.operand: boolean_expression;
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: LOGICAL := is_int_expr (SELF);
sql_mappable: LOGICAL := 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 or_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY;
ENTITY plus_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY;
ENTITY power_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY real_numeric_variable
SUBTYPE OF (numeric_variable);
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_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (
LITERAL_NUMBER,
NUMERIC_VARIABLE))
SUBTYPE OF (numeric_expression, simple_generic_expression);
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_numeric_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand : numeric_expression;
END_ENTITY;
ENTITY xor_expression
SUBTYPE OF (binary_boolean_expression);
SELF\binary_generic_expression.operands:
LIST [2:2] OF boolean_expression;
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 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 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 -- LK
kinematic_link_representation_association FOR rep_1;
END_ENTITY;
ENTITY linear_flexible_link_representation
SUBTYPE OF (kinematic_link_representation);
END_ENTITY;
ENTITY rigid_link_representation
SUBTYPE OF (kinematic_link_representation);
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 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 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 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 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
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_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 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 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 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 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 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 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_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 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_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 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_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_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 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_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 homokinetic_pair
SUBTYPE OF (universal_pair);
WHERE
WR1: NOT EXISTS(SELF.input_skew_angle);
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_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 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 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 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_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 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 sliding_surface_pair
SUBTYPE OF (surface_pair);
END_ENTITY;
ENTITY rolling_surface_pair
SUBTYPE OF (surface_pair);
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 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_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 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 sliding_curve_pair
SUBTYPE OF (planar_curve_pair);
END_ENTITY;
ENTITY rolling_curve_pair
SUBTYPE OF (planar_curve_pair);
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_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 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_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 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 product_definition_relationship_kinematics
SUBTYPE OF (property_definition);
SELF\property_definition.definition : product_definition_relationship;
UNIQUE
UR1 : definition;
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 context_dependent_kinematic_link_representation;
representation_relation : kinematic_link_representation_association;
represented_product_relation : product_definition_relationship_kinematics;
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 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 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 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 revolute_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : revolute_pair;
actual_rotation : plane_angle_measure ;
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 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 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 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 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 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 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 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 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; (*
:= convert_plane_angle_for_pair_from_radian
(SELF\pair_value.applies_to_pair,
(- actual_displacement /
SELF\pair_value.applies_to_pair\
rack_and_pinion_pair.pinion_radius)); *)
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 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 unconstrained_pair_value
SUBTYPE OF (pair_value);
SELF\pair_value.applies_to_pair : unconstrained_pair;
actual_placement : axis2_placement_3d;
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_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 rotation_about_direction
SUBTYPE OF (geometric_representation_item); -- LK
direction_of_axis : direction;
rotation_angle : plane_angle_measure;
WHERE
WR1: SIZEOF (direction_of_axis.direction_ratios) = 3;
END_ENTITY;
ENTITY edge_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
ebwm_boundary : SET [1:?] OF connected_edge_set;
END_ENTITY;
ENTITY face_based_surface_model
SUBTYPE OF (geometric_representation_item);
fbsm_faces : SET [1:?] OF connected_face_set;
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 faceted_brep
SUBTYPE OF (manifold_solid_brep);
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 applied_certification_assignment
SUBTYPE OF (certification_assignment);
items : SET[1:?] OF certification_item;
END_ENTITY;
ENTITY certification;
name : label;
purpose : text;
kind : certification_type;
END_ENTITY;
ENTITY certification_type;
description : label;
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 identification_role;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY language
SUBTYPE OF (group);
WHERE
WR1: SELF\group.name <> '';
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 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 applied_organizational_project_assignment
SUBTYPE OF (organizational_project_assignment);
items : SET[1:?] OF project_item;
END_ENTITY;
ENTITY security_classification;
name : label;
purpose : text;
security_level : security_classification_level;
END_ENTITY;
ENTITY security_classification_level;
name : label;
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 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 versioned_action_request;
id : identifier;
version : 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 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 document_relationship;
name : label;
description : OPTIONAL text;
relating_document : document;
related_document : document;
END_ENTITY;
ENTITY time_interval_role;
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 action_directive;
name : label;
description : OPTIONAL text;
analysis : text;
comment : text;
requests : SET [1:?] OF versioned_action_request;
END_ENTITY;
ENTITY directed_action
SUBTYPE OF (executed_action);
directive : action_directive;
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 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))))=1;
WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY;
ENTITY draughting_callout_relationship;
name : label;
description : text;
relating_draughting_callout : draughting_callout;
related_draughting_callout : draughting_callout;
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_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 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))))=1;
WR2: SIZEOF(SELF\draughting_callout.contents) >=2;
END_ENTITY;
ENTITY curve_style_rendering;
rendering_method : shading_curve_method;
rendering_properties : surface_rendering_properties;
END_ENTITY;
ENTITY surface_rendering_properties;
rendered_colour : colour;
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_with_properties
SUBTYPE OF (surface_style_rendering);
properties : SET [1:2] OF rendering_properties_select;
WHERE
WR1: (HIINDEX(SELF.properties) = 1)
XOR
(TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2]));
END_ENTITY;
ENTITY surface_style_transparent;
transparency : REAL;
WHERE
WR1: {0.0 <= transparency <= 1.0};
END_ENTITY;
ENTITY outer_boundary_curve
SUBTYPE OF (boundary_curve);
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 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 vertex_shell
SUBTYPE OF (topological_representation_item);
vertex_shell_extent : vertex_loop;
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 abs_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY acos_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY asin_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY atan_function
SUBTYPE OF (binary_function_call);
END_ENTITY;
ENTITY cos_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY exp_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY integer_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY ;
ENTITY log_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY log10_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY log2_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY maximum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY;
ENTITY minimum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY;
ENTITY minus_function
SUBTYPE OF (unary_function_call);
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 real_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY ;
ENTITY sin_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY square_root_function
SUBTYPE OF (unary_function_call);
END_ENTITY;
ENTITY tan_function
SUBTYPE OF (unary_function_call);
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 int_value_function
SUBTYPE OF (value_function);
END_ENTITY;
ENTITY length_function
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand: string_expression;
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 value_function
SUPERTYPE OF (
INT_VALUE_FUNCTION)
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand: string_expression;
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_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_tree_structure
SUBTYPE OF (kinematic_topology_directed_structure);
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_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_loop
SUBTYPE OF (edge_loop);
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_joint;
END_ENTITY;
ENTITY oriented_joint
SUBTYPE OF (oriented_edge);
SELF\oriented_edge.edge_element : kinematic_joint;
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 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; -- LK
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 attribute_value_assignment
ABSTRACT SUPERTYPE;
attribute_name : label;
attribute_value : attribute_type;
role : attribute_value_role;
END_ENTITY;
ENTITY applied_event_occurrence_assignment
SUBTYPE OF (event_occurrence_assignment);
items : SET[1:?] OF event_occurrence_item;
END_ENTITY;
ENTITY event_occurrence_assignment
ABSTRACT SUPERTYPE;
assigned_event_occurrence : event_occurrence;
role : event_occurrence_role;
END_ENTITY;
ENTITY organizational_project_assignment
ABSTRACT SUPERTYPE;
assigned_organizational_project : organizational_project;
role : organizational_project_role;
END_ENTITY;
ENTITY organizational_project_role;
name : label;
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_relationship;
name : label;
description : OPTIONAL text;
relating_organizational_project : organizational_project;
related_organizational_project : organizational_project;
END_ENTITY;
ENTITY founded_item
SUPERTYPE OF (ONEOF(
character_glyph_style_outline,
character_glyph_style_stroke,
curve_style,
curve_style_font,
curve_style_font_and_scaling,
curve_style_font_pattern,
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 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 binary_literal
SUBTYPE OF (generic_literal);
lit_value : BINARY;
END_ENTITY;
ENTITY maths_enum_literal
SUBTYPE OF (generic_literal);
lit_value : maths_enum_atom;
END_ENTITY;
ENTITY real_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST [1:?] OF REAL;
END_ENTITY;
ENTITY integer_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST [1:?] OF INTEGER;
END_ENTITY;
ENTITY atom_based_literal
SUBTYPE OF (generic_literal);
lit_value : atom_based_value;
END_ENTITY;
ENTITY maths_tuple_literal
SUBTYPE OF (generic_literal);
lit_value : LIST OF maths_value;
END_ENTITY;
ENTITY extended_tuple_space
SUBTYPE OF (maths_space, generic_literal);
base : product_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 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 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 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 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 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 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 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 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 elementary_function
SUBTYPE OF (maths_function, generic_literal);
func_id : elementary_function_enumerators;
END_ENTITY;
ENTITY restriction_function
SUBTYPE OF (maths_function, unary_generic_expression);
SELF\unary_generic_expression.operand : maths_space;
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 explicit_table_function
ABSTRACT SUPERTYPE OF (ONEOF (
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 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 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 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 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 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 complex_number_literal
SUBTYPE OF (generic_literal);
real_part : REAL;
imag_part : REAL;
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 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 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 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_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 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 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 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 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 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 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_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 volume
SUBTYPE OF (geometric_representation_item);
WHERE
WR1 : SELF\geometric_representation_item.dim = 3;
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 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 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 linearized_table_function
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 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 imported_point_function
SUBTYPE OF (maths_function, generic_literal);
geometry : point;
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 action_resource_type;
name : label;
END_ENTITY;
ENTITY action_method_role;
name : label;
description : OPTIONAL text;
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 runout_zone_orientation;
angle : plane_angle_measure_with_unit;
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])),
SELF.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 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 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 indirectly_selected_elements
SUBTYPE OF (user_selected_elements);
indirectly_picked_items : SET[1:?] OF representation_item;
END_ENTITY;
ENTITY user_selected_elements
SUBTYPE OF (representation_item);
picked_items : SET[1:?] OF representation_item;
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 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 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 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_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_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_slot
ABSTRACT SUPERTYPE OF ((ONEOF (
SOLID_WITH_TRAPEZOIDAL_SECTION_SLOT,
SOLID_WITH_TEE_SECTION_SLOT))
AND (ONEOF (
SOLID_WITH_STRAIGHT_SLOT,
SOLID_WITH_CURVED_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_hole
ABSTRACT SUPERTYPE OF (
SOLID_WITH_STEPPED_ROUND_HOLE)
SUBTYPE OF (solid_with_depression);
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_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 concept_feature_relationship_with_condition
SUBTYPE OF (concept_feature_relationship);
conditional_operator : concept_feature_operator;
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 effectivity_context_role;
name : label;
description : OPTIONAL text;
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 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 document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY;
ENTITY one_direction_repeat_factor
SUBTYPE OF (geometric_representation_item);
repeat_factor : vector;
END_ENTITY;
ENTITY two_direction_repeat_factor
SUBTYPE OF (one_direction_repeat_factor);
second_repeat_factor : vector;
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 attribute_value_role;
name : label;
description : OPTIONAL text;
END_ENTITY;
ENTITY event_occurrence_role;
name : label;
description : OPTIONAL text;
END_ENTITY;
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_is_1d_array
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 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 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_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_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 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.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));
('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HALF_SPACE_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression)) : RETURN(TRUE);
OTHERWISE : RETURN(FALSE);
END_CASE;
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 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 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 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 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.0) OR (mag_v2 = 0.0)) THEN
theta := 0.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 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_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 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 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_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 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_product_definition_relationship (relation : product_definition_relationship; relatives : SET [1:?] OF product_definition; 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 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 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
-- For each element in the set, find the using_items recursively
REPEAT i := 1 TO HIINDEX(next_items);
-- Check for loop in data model, i.e. one of the next_items
-- occurred earlier in the set of check_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 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
(* For a composite_curve_on_surface the basis_surface is the intersection
of the basis_surfaces of all the segments. *)
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 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 list_to_array(lis : LIST [0:?] OF GENERIC : T;
low,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 make_array_of_array(lis : LIST[1:?] OF LIST [1:?] OF GENERIC : T;
low1, u1, low2, 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 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 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 constraints_rectangular_composite_surface
(s : rectangular_composite_surface) : BOOLEAN;
(* Check the surface types *)
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 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
(* a swept_surface shall have a valid sweeping curve
*)
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
(* an offset_surface shall not self-intersect and shall
reference a valid surface
*)
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
(* a surface_replica shall have a valid parent surface
*)
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
(* a b_spline_surface shall not self-intersect
*)
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 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
(* conics and lines are valid curve types
*)
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
(* a curve_replica shall reference a valid curve
*)
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
(* an offset_curve_3d shall not self-intersect and
shall reference a valid curve; a polyline is not a
valid basis_curve
*)
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
(* a pcurve shall reference a valid curve and a valid
basis_surface
*)
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
(* a surface_curve references a curve_3d and one or
two pcurves or one or two surfaces or one of
each; all of these references shall be valid
*)
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN
(* if the curve reference is correct, check also the rest
*)
IF msf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF
(cv\surface_curve.associated_geometry);
(* do for one or two associated_geometrys:
*)
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
(* a polyline shall have at least 3 points
*)
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 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
-- For each element in the set, add the
-- representations of that element.
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 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_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 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 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 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 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 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 the size of inspected_elements is not equal to the size of
-- type_list, then return false.
IF(SIZEOF(sdiri[i].inspected_elements) <>
SIZEOF(type_list)) THEN
RETURN(FALSE);
END_IF;
-- check all elements in the type_list
-- for each element of inspected_elements.
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 the size of locations_of_extreme_value is not equal to
-- the size of type_list, then return false.
IF(SIZEOF(sdei[i].extreme_instances[j].
locations_of_extreme_value) <>
SIZEOF(type_list)) THEN
RETURN(FALSE);
END_IF;
t_type_list := type_list;
-- check all elements of the type_list
-- for each element of locations_of_extreme_value.
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_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;
-- STEP-2
-- check whether the collected types include all the type names
-- in the type list given as an input argument of this function
-- and they do not include any other type names.
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;
-- STEP-4
-- check whether the collected types include all the type
-- names in the type list given as an input argument of
-- this function and they do not include any other type names.
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 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 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 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 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 ([ ]); -- in this case the subtype shall not contain
-- any variable (see IP1 in generic_expression)
END_FUNCTION; -- used_variables
FUNCTION compatible_spaces(sp1, sp2 : maths_space) : BOOLEAN;
LOCAL
types1 : SET OF STRING := stripped_typeof (sp1);
types2 : SET OF STRING := stripped_typeof (sp2);
lgcl : LOGICAL := UNKNOWN;
m, n : INTEGER;
s1, 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;
-- Should be unreachable.
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;
-- Should be unreachable.
RETURN (TRUE);
END_IF;
IF subspace_of_es(sp1,es_integers) THEN -- Note that sp1 finite already handled.
IF subspace_of_es(sp2,es_integers) THEN -- Note that sp2 finite already handled.
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 -- Note that sp1 finite already handled.
IF subspace_of_es(sp2,es_reals) THEN -- Note that sp2 finite already handled.
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 -- Note sp1 finite already handled.
IF subspace_of_es(sp2,es_complex_numbers) THEN -- Note sp2 finite already handled.
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;
-- Should be unreachable.
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;
-- Should be unreachable.
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;
-- Should be unreachable.
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;
-- Should be unreachable.
RETURN (TRUE);
END_IF;
-- Should be unreachable.
RETURN (TRUE);
END_FUNCTION; -- compatible_spaces
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; -- stripped_typeof
FUNCTION member_of(val : GENERIC:G;
spc : maths_space) : LOGICAL;
-- Trivial function introduced to avoid NIST Fedex compiler error
FUNCTION fedex(val : AGGREGATE OF GENERIC:X;
i : INTEGER) : GENERIC:X;
RETURN (val[i]);
END_FUNCTION; -- fedex
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, cum : LOGICAL;
vspc, 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); -- The centre has no direction.
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);
-- cum := cum AND member_of (fedex (v, i), sspc);
-- See note above for explanation of fedex()
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]);
-- cum := cum AND member_of (fedex (v, i), factors[i]);
-- See note above for explanation of fedex()
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));
-- cum := cum AND member_of (fedex (v, i), factor_space (sspc, i));
-- See note above for explanation of fedex()
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; -- member_of
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; -- simplify_maths_value
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; -- restore_unary
FUNCTION restore_binary(expr : binary_generic_expression;
opd1, opd2 : generic_expression) : generic_expression;
expr.operands[1] := opd1;
expr.operands[2] := opd2;
RETURN (expr);
END_FUNCTION; -- restore_binary
FUNCTION restore_mulary(expr : multiple_arity_generic_expression;
ops : LIST OF generic_expression) : generic_expression;
expr.operands := ops;
RETURN (expr);
END_FUNCTION; -- restore_mulary
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; -- make_number_literal;
LOCAL
types : SET OF STRING := stripped_typeof (expr);
v1, v2 : maths_value;
vlist : LIST OF maths_value := [];
op1, op2 : generic_expression;
oplist : LIST OF generic_expression := [];
opnds : LIST [2:?] OF generic_expression;
n, 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); -- No simpler expression available
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 (?); -- Unreachable
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; -- simplify_generic_expression
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; -- make_int_literal
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; -- make_real_literal
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; -- convert_to_maths_value
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, zmin, 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; -- simplify_maths_space
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; -- make_finite_integer_interval
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; -- make_finite_space
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; -- make_uniform_product_space
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; -- make_listed_product_space
FUNCTION expression_is_constant(expr : generic_expression) : BOOLEAN;
RETURN (bool(SIZEOF (free_variables_of (expr)) = 0));
END_FUNCTION; -- expression_is_constant
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; -- bool
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; -- free_variables_of
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; -- no_cyclic_space_reference
FUNCTION make_extended_tuple_space(base : product_space;
extender : maths_space) : extended_tuple_space;
RETURN (extended_tuple_space (base, extender)
|| maths_space ()
|| generic_expression()
|| generic_literal ()
|| simple_generic_expression() );
END_FUNCTION; -- make_extended_tuple_space
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; -- any_space_satisfies
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; -- make_function_space
FUNCTION simplify_function_application(expr : function_application) : maths_value;
FUNCTION ctmv(x : GENERIC:G) : maths_value;
RETURN (convert_to_maths_value(x));
END_FUNCTION; -- local abbreviation for convert_to_maths_value function
PROCEDURE parts( c : complex_number_literal;
VAR x, y : REAL);
x := c.real_part; y := c.imag_part;
END_PROCEDURE; -- parts
FUNCTION makec(x, y : REAL) : complex_number_literal;
RETURN (make_complex_number_literal(x,y));
END_FUNCTION; -- local abbreviation for make_complex_number_literal 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; -- good_t
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, v1, v2, v3 : maths_value;
vlist : LIST OF maths_value := [];
gexpr : generic_expression;
pairs : SET [1:?] OF LIST [2:2] OF maths_value;
boo : BOOLEAN;
lgc, cum : LOGICAL;
j, k, n : INTEGER;
p, q, r, s, t, u : REAL;
str, st2 : STRING;
bin, bi2 : BINARY;
tpl, 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_if_i : combined with ef_if
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_if_r : combined with ef_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_if_c : combined with ef_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_if_s : combined with ef_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_if_b : combined with ef_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 : -- This can have multiple outputs, but the expression only
-- denotes the first.
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_if_t : combined with ef_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 : -- (mem + vlist) effectively converts list to set
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; -- simplify_function_application
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; -- convert_to_maths_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;
-- Unreachable, as there is no other possible value for input_repack.
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; -- derive_function_domain
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; -- derive_finite_function_domain
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; -- list_selected_components
FUNCTION one_tuples_of(spc : maths_space) : tuple_space;
RETURN (make_uniform_product_space (spc, 1));
END_FUNCTION; -- one_tuples_of
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; -- domain_from
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; -- no_cyclic_domain_reference
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; -- convert_to_operands_prcmfn
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; -- parallel_composed_function_domain_check
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; -- parallel_composed_function_composability_check
FUNCTION assoc_product_space(ts1, ts2 : tuple_space) : tuple_space;
LOCAL
types1 : SET OF STRING := stripped_typeof (ts1);
types2 : SET OF STRING := stripped_typeof (ts2);
up1, up2 : uniform_product_space := make_uniform_product_space(the_reals,1);
lp1, lp2, lps : listed_product_space := the_zero_tuple_space;
et1, et2, ets : extended_tuple_space := the_tuples;
use_up1, use_up2, use_lp1, 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
-- Unreachable when this function was written.
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
-- Unreachable when this function was written.
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
-- Avoid compiler confusion by breaking into two lines.
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
-- Avoid compiler confusion by breaking into two lines.
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
-- No subtype is available to represent this cartesian product.
RETURN (?);
END_IF;
ELSE
IF use_lp2 THEN
factors := lp2.factors;
REPEAT i := 1 TO SIZEOF (factors);
IF et1.extender <> factors[i] THEN
-- No subtype available to represent this cartesian product.
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
-- Next line may assign indeterminate (?) to tspace.
tspace := assoc_product_space(et1, et2.base);
ELSE
-- No subtype available to represent this cartesian product.
RETURN (?);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (tspace);
END_FUNCTION; -- assoc_product_space
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; -- make_elementary_space
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; -- derive_elementary_function_domain
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; -- make_real_interval_from_min
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; -- make_finite_real_interval
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
-- In the case of an extended_tuple_space, the minimum dimension is returned.
RETURN (space_dimension (tspace\extended_tuple_space.base));
END_IF;
-- Should be unreachable
RETURN (?);
END_FUNCTION; -- space_dimension
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]);
-- This path could return the indeterminate value if the list is empty.
-- This is the correct result for this case.
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; -- factor1
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; -- repackage
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; -- shape_of_array
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; -- factor_space
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_is_array
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; -- composable_sequence
FUNCTION function_is_2d_table(func : maths_function) : BOOLEAN;
LOCAL
temp : maths_space;
pspace : product_space;
itvl1, 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_is_2d_table
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; -- subspace_of_es
FUNCTION es_subspace_of_es(es1, 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; -- es_subspace_of_es
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;
-- Must be a generic_expression which doesn't simplify and which is not a
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 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 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 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 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; -- has_values_space
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; -- space_is_continuum
FUNCTION subspace_of(space1, 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, cum : LOGICAL;
es_val : elementary_space_enumerators;
bnd1, bnd2 : REAL;
n : INTEGER;
sp1, sp2 : maths_space;
prgn1, 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;
-- Note that the cases (spc2=the_generics) and (spc1=spc2) have been handled.
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;
-- Should be unreachable.
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; -- subspace_of
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; -- min_exists
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; -- real_min
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; -- max_exists
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; -- min_included
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; -- real_max
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; -- max_included
FUNCTION enclose_cregion_in_pregion(crgn : cartesian_complex_number_region;
centre : complex_number_literal)
: polar_complex_number_region;
-- Find equivalent direction in range -PI < a <= PI.
FUNCTION angle(a : REAL) : REAL;
REPEAT WHILE a > PI; a := a - 2.0*PI; END_REPEAT;
REPEAT WHILE a <= -PI; a := a + 2.0*PI; END_REPEAT;
RETURN (a);
END_FUNCTION;
-- Determine whether a real is strictly within a real interval
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;
-- Include direction in minmax collection
PROCEDURE angle_minmax( ab, a : REAL;
a_in : BOOLEAN;
VAR amin, amax : REAL;
VAR amin_in, 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;
-- Include distance in max collection
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;
-- Include distance in min collection
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, yitv : real_interval;
is_xmin, is_xmax, is_ymin, is_ymax : BOOLEAN;
xmin, xmax, ymin, ymax, xc, yc : REAL := 0.0;
xmin_in, xmax_in, ymin_in, ymax_in : BOOLEAN := FALSE;
rmin, rmax : REAL := -1.0;
amin : REAL := 4.0;
amax : REAL := -4.0;
rmax_exists, outside : BOOLEAN := TRUE;
rmin_in, rmax_in, amin_in, amax_in : BOOLEAN := FALSE;
ab, a, r : REAL := 0.0;
incl : BOOLEAN;
ritv : real_interval;
aitv : finite_real_interval;
minclo, 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 (?); -- No enclosing polar region exists (requires whole plane)
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 -- Consider lower left corner
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 -- Centre at lower left corner
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 -- Consider points near (xmin, -infinity)
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 -- Consider points near (xmin, +infinity)
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 -- Consider lower right corner
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 -- Centre at lower right corner
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 -- Consider points near (+infinity, ymin)
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 -- Consider points near (-infinity, ymin)
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 -- Consider upper right corner
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 -- Centre at lower left corner
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 -- Consider points near (xmax, +infinity)
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 -- Consider points near (xmax, -infinity)
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 -- Consider upper left corner
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 -- Centre at lower right corner
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 -- Consider points near (-infinity, ymax)
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 -- Consider points near (+infinity, ymax)
angle_minmax(ab,0.0,(yc=ymax) AND ymax_in,amin,amax,amin_in,amax_in);
END_IF;
END_IF;
IF outside THEN -- Change direction origin from ab back to zero
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; -- enclose_cregion_in_pregion
FUNCTION atan2(y, 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; -- atan2
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; -- make_polar_complex_number_region
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
-- a+2.0*PI > aitv.min automatically!
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, yc, xmin, xmax, ymin, ymax : REAL := 0.0;
ritv, xitv, yitv : real_interval;
aitv : finite_real_interval;
xmin_exists, xmax_exists, ymin_exists, ymax_exists : BOOLEAN;
xmin_in, xmax_in, ymin_in, ymax_in : BOOLEAN := FALSE;
a, r : REAL := 0.0;
a_in : BOOLEAN := FALSE;
min_clo, 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 (?); -- No finite boundaries exist
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; -- enclose_pregion_in_cregion
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; -- make_real_interval_to_max
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; -- make_cartesian_complex_number_region
FUNCTION enclose_pregion_in_pregion(prgn : polar_complex_number_region;
centre : complex_number_literal)
: polar_complex_number_region;
-- Find equivalent direction in range -PI < a <= PI.
FUNCTION angle(a : REAL) : REAL;
REPEAT WHILE a > PI; a := a - 2.0*PI; END_REPEAT;
REPEAT WHILE a <= -PI; a := a + 2.0*PI; END_REPEAT;
RETURN (a);
END_FUNCTION;
-- Find proper limits for direction interval
PROCEDURE angle_range(VAR amin, 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;
-- Determine whether a direction is strictly within a direction interval
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;
-- Find min and max and related inclusion booleans among four candidates,
-- using a base direction chosen to ensure the algebraic comparisons are valid.
PROCEDURE find_aminmax( ab,a0,a1,a2,a3 : REAL;
in0,in1,in2,in3 : BOOLEAN;
VAR amin,amax : REAL;
VAR amin_in,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, ritv : real_interval;
aitp, aitv : finite_real_interval;
xp, yp, xc, yc, rmax, rmin, amin, amax, rc, acp, apc : REAL := 0.0;
rmax_in, rmin_in, amin_in, amax_in : BOOLEAN := FALSE;
rmxp, rmnp, x, y, r, a, ab, r0, a0, r1, a1, r2, a2, r3, a3 : REAL := 0.0;
in0, in1, in2, in3, inn : BOOLEAN := FALSE;
minclo, 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
-- annulus or disk, with or without slot or puncture
inn := NOT max_included(aitp); -- slot exists;
a := angle(aitp.min); -- slot direction
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
-- slotted case
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 -- in the slot
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 -- Special cases when aligned with slot
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 -- direction range < 2*PI
-- Compute data for corners with respect to xc,yc
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;
-- Find rmax
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;
-- Find rmin
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 -- use nearest point on line segment
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 -- try nearest point on line segment
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;
-- Find amin and amax, initially with respect to base direction ab.
IF rc >= rmxp THEN -- outside outer circle
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)); -- reference direction
find_aminmax(ab,a0,a1,a2,a3,in0,in1,in2,in3,amin,amax,amin_in,amax_in);
ELSE
-- Using base direction midway in prgn, compute all directions using
-- values which ensure a3 < a2 and a0 < a1 algebraically.
ab := angle(0.5*(aitp.min+aitp.max)); -- reference direction
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
-- Cannot see out
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 -- Not max_exists(ritp)
IF (rc > rmnp) AND strictly_in(apc,aitp) THEN
RETURN (?); -- No pregion exists. (Would require whole plane.)
END_IF;
IF aitp.max - aitp.min = 2.0*PI THEN
-- complement of disk, with or without slot
a := angle(aitp.min); -- slot direction
IF rc > rmnp THEN -- already excluded if not aligned with slot
IF max_included(aitp) THEN
RETURN (?); -- No pregion exists. (Would require whole plane.)
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 -- Special cases when aligned with slot
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 -- direction range < 2*PI
-- Compute data for corners with respect to xc,yc (two at infinity)
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;
-- Find rmin
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 -- use nearest point on aitp.min ray
rmin := rc*SIN(ABS(a)); rmin_in := min_included(aitp);
END_IF;
a := apc-aitp.max;
r := rc*COS(a);
IF rmnp < r THEN -- try nearest point on aitp.max ray
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;
-- Find amin and amax
ab := angle(0.5*(aitp.min+aitp.max)); -- reference direction
IF rc > rmnp THEN
find_aminmax(ab,a0,a1,a2,a3,in0,in1,in2,in3,amin,amax,amin_in,amax_in);
ELSE
-- Using base direction midway in prgn, compute all directions using
-- values which ensure a3 < a2 and a0 < a1 algebraically.
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
-- Cannot see out
amin := -PI; amin_in := FALSE;
amax := PI; amax_in := TRUE;
IF (rmin = 0.0) AND rmin_in THEN
RETURN (?); -- No pregion exists. (Would require whole plane.)
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; -- enclose_pregion_in_pregion
FUNCTION equal_maths_spaces(spc1, spc2 : maths_space) : LOGICAL;
LOCAL
spc1types : SET OF STRING := stripped_typeof(spc1);
spc2types : SET OF STRING := stripped_typeof(spc2);
set1, set2 : SET OF maths_value;
cum : LOGICAL := TRUE;
base : maths_space;
expnt : INTEGER;
factors : LIST OF maths_space;
factors2 : LIST OF maths_space;
fs1, 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
-- Members may have different but equivalent representations and in
-- different orders. May also have disguised repeats in same set of members.
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
-- Quadrants and half spaces have two representations
RETURN (equal_cregion_pregion(spc1,spc2));
END_IF;
IF ('POLAR_COMPLEX_NUMBER_REGION' IN spc1types) AND
('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc2types) THEN
-- Quadrants and half spaces have two representations
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
-- Safety check. Should be unreachable.
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;
-- Remaining cases too complex.
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
-- Safety check. Should be unreachable.
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;
-- Remaining cases too complex.
RETURN (UNKNOWN);
END_IF;
cum := cum AND equal_maths_spaces(fs1.range_argument,fs2.range_argument);
RETURN (cum);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- equal_maths_spaces
FUNCTION equal_cregion_pregion(crgn : cartesian_complex_number_region;
prgn : polar_complex_number_region) : LOGICAL;
LOCAL
arng, amin, xc, yc : REAL;
aitv, xitv, 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 -- quadrant to upper right
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 -- quadrant to upper left
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 -- quadrant to lower left
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 -- quadrant to lower right
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 -- upper half space
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 -- left half space
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 -- lower half space
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 -- right half space
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; -- equal_cregion_pregion
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; -- space_is_singleton
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; -- singleton_member_of
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; -- definite_integral_expr_check
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 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_is_table
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; -- compare_basis_and_coef
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 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; -- partial_derivative_check
FUNCTION derive_definite_integral_domain(igrl : definite_integral_function)
: tuple_space;
-- Internal utility function:
FUNCTION process_product_space(spc : product_space;
idx, 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; -- process_product_space
-- Resume body of derive_definite_integral_domain 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; -- derive_definite_integral_domain
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; -- definite_integral_check
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; -- remove_first
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, 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;
-- Unreachable, as no other subtypes of explicit_table_function are permissible
-- without first modifying this function to account for them.
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; -- derive_function_range
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; -- derive_finite_function_range
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; -- derive_elementary_function_range
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 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_is_1d_table
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])));
-- The index function is evaluated at (base+shape[i]) when determining the
-- upper search bound for entries of the last row or column, respectively.
END_FUNCTION; -- check_sparse_index_domain;
FUNCTION check_sparse_index_to_loc(index_range, loc_domain : tuple_space) : BOOLEAN;
LOCAL
temp : maths_space;
idx_rng_itvl, 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; -- check_sparse_index_to_loc
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; -- check_sparse_loc_range;
FUNCTION extract_factors(tspace : tuple_space;
m, 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; -- extract_factors
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. Note that the
-- RULE compatible_dimension ensures that the context_of_items
-- is of type geometric_representation_context and has
-- the same dimension_count for all values of x.
-- 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(?);
-- mark error by returning indeterminate result
END_IF;
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; -- make_elementary_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; -- convert_to_operands
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; -- convert_to_operand
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; -- convert_to_literal
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; -- make_boolean_literal
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; -- make_string_literal
FUNCTION make_logical_literal(lit_value : LOGICAL) : logical_literal;
RETURN (logical_literal (lit_value)
|| generic_literal()
|| simple_generic_expression()
|| generic_expression() );
END_FUNCTION; -- make_logical_literal
FUNCTION make_binary_literal(lit_value : BINARY) : binary_literal;
RETURN (binary_literal (lit_value)
|| generic_literal()
|| simple_generic_expression()
|| generic_expression() );
END_FUNCTION; -- make_binary_literal
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; -- make_maths_enum_literal
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; -- make_atom_based_literal
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; -- make_maths_tuple_literal
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); -- Should be unreachable
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_applicability
FUNCTION make_complex_number_literal(rpart, ipart : REAL) : complex_number_literal;
RETURN (complex_number_literal (rpart, ipart)
|| generic_literal()
|| simple_generic_expression()
|| generic_expression() );
END_FUNCTION; -- make_complex_number_literal
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)) -- derived
|| generic_expression() );
END_FUNCTION; -- make_function_application
FUNCTION equal_maths_values(val1, val2 : maths_value) : LOGICAL;
FUNCTION mem_of_vs(val1, 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; -- mem_of_vs
LOCAL
types1, types2 : SET OF STRING;
list1, 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; -- equal_maths_values
FUNCTION equal_maths_functions(fun1, 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; -- equal_maths_functions
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, 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;
-- Variables subject to a quantifier do not participate in this kind of
-- substitution process.
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);
-- This technique will not work on subtypes of quantifier_expression
-- which derive their operands from other attributes!
END_IF;
END_REPEAT;
RETURN (expr); -- operands modified!
END_IF;
IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
op1 := expr\unary_generic_expression.operand;
expr\unary_generic_expression.operand := substitute(op1, vars, vals);
-- This technique will not work on subtypes of unary_generic_expression
-- which derive their operands from other attributes!
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);
-- This technique will not work on subtypes of binary_generic_expression
-- which derive their operands from other attributes!
END_IF;
IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
-- Subtype of multiple_arity_generic_expression which derives its operands.
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);
-- This technique will not work on subtypes of multiple_arity_generic_
-- expression which derive their operands from other attributes!
END_REPEAT;
END_IF;
RETURN (expr);
END_FUNCTION; -- substitute
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)) ); -- derived
END_FUNCTION; -- make_parallel_composed_function
FUNCTION compatible_es_values(esval1, esval2 : elementary_space_enumerators) : BOOLEAN;
LOCAL
esval1_is_numeric, 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; -- compatible_es_values
FUNCTION compatible_intervals(sp1, sp2 : maths_space) : BOOLEAN;
LOCAL
amin, 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; -- compatible_intervals
FUNCTION compatible_complex_number_regions(sp1, sp2 : maths_space) : BOOLEAN;
LOCAL
typenames : SET OF string := stripped_typeof (sp1);
crgn1, crgn2 : cartesian_complex_number_region;
prgn1, prgn2, prgn1c2, prgn2c1 : polar_complex_number_region;
sp1_is_crgn, 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
-- Improper usage: Default response is to assume compatibility.
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
-- Improper usage: Default response is to assume compatibility.
RETURN (TRUE);
END_IF;
END_IF;
IF sp1_is_crgn AND sp2_is_crgn THEN
-- two cartesian regions
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
-- two polar regions with common centre
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;
-- Deal with direction ambiguity by 2 pi.
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; -- compatible_complex_number_regions
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);
-- Determine the bag of representation_items that reference
-- item
ELSE y := QUERY(z <* USEDIN (item , '') |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z));
-- Ensure that the bag is not empty
IF SIZEOF(y) > 0 THEN
-- For each element in the bag
REPEAT i := 1 TO HIINDEX(y);
-- Check to see it is an item in the input cntxt.
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 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 := ?;
(* When function is called with invalid data a NULL result is returned *)
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 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 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 build_axes(axis, ref_direction : direction) :
LIST [3:3] OF direction;
LOCAL
d1, 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 first_proj_axis(z_axis, 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 cross_product (arg1, arg2 : direction) : vector;
LOCAL
mag : REAL;
res : direction;
v1,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 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 dot_product(arg1, arg2 : direction) : REAL;
LOCAL
scalar : REAL;
vec1, vec2: direction;
ndim : INTEGER;
END_LOCAL;
IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN
scalar := ?;
(* When function is called with invalid data an indeterminate result
is returned *)
ELSE
IF (arg1.dim <> arg2.dim) THEN
scalar := ?;
(* When function is called with invalid data an indeterminate result
is returned *)
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 vector_difference(arg1, arg2 : vector_or_direction) : vector;
LOCAL
result : vector;
res, vec1, vec2 : direction;
mag, mag1, 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 base_axis(dim : INTEGER; axis1, axis2, axis3 : direction) :
LIST [2:3] OF
direction;
LOCAL
u : LIST [2:3] OF direction;
factor : REAL;
d1, 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 second_proj_axis(z_axis, x_axis, 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 acyclic_mapped_representation
(mi : mapped_item) : BOOLEAN;
LOCAL
rms : SET OF representation_map;
mis : SET OF mapped_item;
rs1, 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);
-- Determine the set of representation_map that reference the parent_set
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);
-- check mis members for instance equal with mi. If so then there is a cycle
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 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 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 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 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 boolean_choose (b : boolean;
choice1, choice2 : generic : item) : generic : item;
IF b THEN
RETURN (choice1);
ELSE
RETURN (choice2);
END_IF;
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 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
-- find the set of representation_map in which the local_results are used
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;
-- find the set of mapped_item
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 same manner
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 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 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 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;
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],nodes[i+1]), (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],nodes[i+1]), (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],nodes[i+1]), (i - 1));
ELSE
RETURN(?);
END_IF;
END;
OTHERWISE : RETURN(?);
END_CASE;
END_REPEAT;
RETURN(directed_link);
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);
(* Return FALSE if the parent is the same curve_replica, otherwise,
call function again with the parents own parent_curve. *)
ELSE
RETURN(acyclic_curve_replica(rep,
parent\curve_replica.parent_curve));
END_IF;
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);
(* Return FALSE if the parent is the same point_replica, otherwise,
call function again with the parents own parent_pt. *)
ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt));
END_IF;
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);
(* Return FALSE if the parent is the same surface_replica, otherwise,
call function again with the parents own parent_surface. *)
ELSE RETURN(acyclic_surface_replica(rep,
parent\surface_replica.parent_surface));
END_IF;
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 aspect_ratio (p : planar_box) : positive_ratio_measure;
IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN
RETURN (p.size_in_x / p.size_in_y);
ELSE
RETURN (?);
END_IF;
END_FUNCTION;
FUNCTION 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 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 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 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 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 validate_countersink_radii
(cskhole : solid_with_stepped_round_hole_and_conical_transitions)
: BOOLEAN;
LOCAL
i,j : INTEGER;
n : INTEGER := 1 +
cskhole\solid_with_stepped_round_hole.segments;
smaller, larger : positive_length_measure;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions);
-- First check whether transition i applies to the entry of the hole or
-- the exit of a through hole - those cases only need to be checked for
-- the sign of the cone apex angle.
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
-- For all remaining transitions, check that the cone base radius
-- lies in the range of validity.
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 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); -- no match between any vertices of edges 1 and 2
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); -- no match is found.
END_IF;
END_IF;
END_REPEAT;
RETURN(TRUE); -- all edges have now been successfully checked.
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 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 the curve is a trimmed_curve
IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE')
IN TYPEOF (crv)) THEN
-- if a line, parabola, or hyperbola is being trimmed, then valid
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);
-- otherwise, recursively check basis_curve
ELSE RETURN (valid_basis_curve_in_2d_wireframe
(crv\trimmed_curve.basis_curve));
END_IF;
ELSE
-- recursively check the offset_curve basis curve
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
-- recursively check the curve_replica parent curve
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
-- recursively check the composite_curve segments
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 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) -- case of one basis surface
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 -- case of two basis surfaces
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 := ?;
-- both basis surfaces are planes, their intersection curve
-- is a line, and no unique plane is defined
ELSE -- only one of the two basis surfaces is a plane
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_relative_direction_2points
(cp1, cp2 : cartesian_point) : direction;
LOCAL
d1, d2, d3, 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
-- construct components of vector and compute its magnitude
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); -- direction is indeterminate in this case
END_IF;
result := dummy_gri || direction([d1, d2, d3]);
END;
END_IF;
RETURN(result);
END_FUNCTION;
FUNCTION check_curve_planarity (checked_curve: curve) : BOOLEAN;
LOCAL
crv : curve := checked_curve;
i,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 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 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 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 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 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 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 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 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 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 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 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);
(* A surface model is composed of OPEN_ and CLOSED_SHELLs. *)
END_IF;
END_REPEAT;
RETURN(result);
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 is_int_expr (arg: numeric_expression) : LOGICAL;
LOCAL
i: INTEGER := 0;
END_LOCAL;
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; -- is_int_expr
FUNCTION make_numeric_set(start, 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 invalidate_vrep_item(item : representation_item)
: BOOLEAN;
LOCAL
reps : SET[1:?] OF representation := using_representations(item);
ri : 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); -- parameter not attached to an instance attribute
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;
ri := QUERY(q <* reps[i]\representation.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREE_FORM_CONSTRAINT' IN TYPEOF(q));
IF SIZEOF(QUERY(r <* ri |
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);
--next line is previous
-- IF (reps <> using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]))
--is this intent?
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;
ri := QUERY(q <* reps[i]\representation.items |
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_GEOMETRIC_CONSTRAINT' IN TYPEOF(q));
IF SIZEOF(QUERY(r <* ri |
item IN r\explicit_geometric_constraint.reference_elements)) = 0
THEN
RETURN(TRUE);
END_IF;
END_REPEAT;
END;
END_IF;
RETURN(FALSE); -- no invalid cases have been found
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 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 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_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 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 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_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 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]]);
-- ERROR constituent is vacant --
ELSE IF (SIZEOF (constituent) = 0 ) THEN RETURN ([]);
-- extraction of related assembly_component_relationships --
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
-- extraction of a set of parents --
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 ([]);
-- try again --
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 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 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
-- find shape_representation representing the product_definitions
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
-- find shape_representation representing the shape_aspect
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 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 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
(* a swept_surface shall have a valid sweeping curve
*)
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
(* an offset_surface shall not self-intersect and shall
reference a valid surface
*)
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
(* a surface_replica shall have a valid parent surface
*)
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
(* a b_spline_surface shall not self-intersect
*)
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
(* 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
(* conics and lines are valid curve types
*)
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
(* a curve_replica shall reference a valid curve
*)
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
(* an offset_curve_3d shall not self-intersect and
shall reference a valid curve; a polyline is not a
valid basis_curve
*)
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
(* a pcurve shall reference a valid curve and a valid
basis_surface
*)
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
(* a surface_curve references a curve_3d and one or
two pcurves or one or two surfaces or one of
each; all of these references shall be valid
*)
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN
(* if the curve reference is correct, check also the rest
*)
IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF
(cv\surface_curve.associated_geometry);
(* do for one or two associated_geometrys:
*)
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
(* a polyline shall have at least 3 points
*)
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 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);
(* Return FALSE if the parent is the same solid_replica, otherwise,
call function again with the parents own parent_solid. *)
ELSE RETURN(acyclic_solid_replica(rep,
parent\solid_replica.parent_solid));
END_IF;
END_FUNCTION;
FUNCTION constraints_param_b_spline(degree, up_knots, up_cp : INTEGER;
knot_mult : LIST OF INTEGER;
knots : LIST OF parameter_value) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
k, 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_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 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 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_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_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 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 is_acyclic (arg: generic_expression): BOOLEAN;
RETURN (acyclic (arg, []));
END_FUNCTION ; -- is_acyclic
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; -- acyclic
FUNCTION is_SQL_mappable (arg: expression) : LOGICAL;
LOCAL
i: INTEGER;
END_LOCAL;
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; -- is_SQL_mappable
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 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_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 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 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 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 convert_spatial_to_ypr_rotation (pair : kinematic_pair;
rotation : spatial_rotation)
: ypr_rotation;
LOCAL
axis : direction;
angle : plane_angle_measure; -- rotation angle in application
-- specific units
conv_angle : plane_angle_measure; -- rotation angle in radians
ya, pa, ra : plane_angle_measure; -- yaw, pitch, and roll angle
ucf : REAL; -- unit conversion factor
dx, dy, dz : REAL; -- components of direction vector
s_a, c_a : REAL; -- sine and cosine of rotation angle
rotmat : ARRAY [1 : 3] OF
ARRAY [1 : 3] OF REAL; -- rotation matrix
cm1 : REAL;
s_y, c_y : REAL;
s_r, 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
-- axis parallel to x-axis - use x-axis as roll axis
IF (dx > 0.0) THEN
RETURN ([0.0, 0.0, ya]);
ELSE
RETURN ([0.0, 0.0, ra]);
END_IF;
ELSE
-- axis parallel to z-axis - use z-axis as yaw axis
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
-- |pa| = PI/2
BEGIN
IF (rotmat[1][3] = 1.0) THEN
pa := 0.5 * PI;
ELSE
pa := -0.5 * PI;
END_IF;
-- In this case, only the sum or difference of roll and yaw angles
-- is relevant and can be evaluated from the matrix.
-- According to IP `rectangular pitch angle' for ypr_rotation,
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 ypr_index (ypr : ypr_enumeration) : INTEGER;
CASE ypr OF
yaw : RETURN (1);
pitch : RETURN (2);
roll : RETURN (3);
END_CASE;
RETURN (?);
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);
(* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *)
END_IF;
END_REPEAT;
RETURN(result);
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 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
-- item invalid if item does not belong to the types that may have a class_system
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
-- item invalid if item does not belong to the types that may have a characterized_class
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 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 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 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.items) TO HIINDEX(aia.items);
item:= aia.items[i];
IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_GENERAL_PROPERTY']*TYPEOF(item))=0) THEN
-- item invalid if item does not belong to versionable types
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
ELSE -- case where aia does not convey a version id
RETURN(TRUE);
END_IF;
END_FUNCTION;
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 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'
)) > 0)
)) > 0;
END_RULE;
RULE component_class_for_assembly_select FOR
(composite_assembly_sequence_definition,
next_assembly_usage_occurrence,
product_related_product_category);
LOCAL
i,j,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 ply_reference FOR
(ply_laminate_sequence_definition,
next_assembly_usage_occurrence,
product_related_product_category);
LOCAL
i,j,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 compatible_dimension FOR
(cartesian_point,
direction,
representation_context,
geometric_representation_context);
WHERE
-- ensure that the count of coordinates of each cartesian_point
-- matches the coordinate_space_dimension of each geometric_context in
-- which it is geometrically founded
WR1: SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY
(y <* geometric_representation_context | item_in_context(x,y) AND
(HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0;
-- ensure that the count of direction_ratios of each direction
-- matches the coordinate_space_dimension of each geometric_context in
-- which it is geometrically founded
WR2: SIZEOF(QUERY(x <* direction | SIZEOF( QUERY
(y <* geometric_representation_context | item_in_context(x,y) AND
(HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension)))
> 0 )) = 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 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 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 transition_feature_life_cycle FOR
(transition_feature);
WHERE
WR1: SIZEOF (QUERY (tf <* transition_feature |
NOT (tf.of_shape.definition.frame_of_reference.life_cycle_stage =
'manufacturing planning'))) = 0;
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 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 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_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_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 draughting_model_items_constraint FOR (draughting_model);
WHERE
-- logic - there should be 0 items, which are annotation_occurrences and which are not draughting_annotation_occurrences
WR1: SIZEOF(QUERY(dm <* draughting_model |
NOT(SIZEOF(QUERY(it1 <* dm\representation.items |
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1))
AND
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1)))
)) = 0)
)) = 0;
WR2: SIZEOF(QUERY(dm <* draughting_model |
NOT(SIZEOF(QUERY(it1 <* dm\representation.items |
(('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1))
AND
NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1)))
)) = 0)
)) = 0;
END_RULE;
RULE unique_datum_system FOR
(datum_system);
LOCAL
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(datum_system);
REPEAT j := 1 TO SIZEOF(datum_system);
IF (i <> j) THEN
IF datum_system[i]\datum_system.constituents =
datum_system[j]\datum_system.constituents THEN
pass := FALSE;
END_IF;
END_IF;
END_REPEAT;
END_REPEAT;WHERE
WR1: pass;
END_RULE;
RULE 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 tolerance_zone_form_name_constraint for (tolerance_zone_form);
LOCAL
names : SET OF STRING :=
[ 'within a circle',
'between two concentric circles',
'between two equidistant curves',
'within a cylinder',
'between two coaxial cylinders',
'between two equidistant surfaces',
'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 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 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 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 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' ) ); --tt found real problem here
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 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 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_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 unique_dimensional_location_constraint for (product_definition_shape, dimensional_location);
LOCAL
ssa : SET OF shape_aspect := [];
bdl : BAG OF dimensional_location := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF (product_definition_shape) WHILE pass;
bdl := [];
ssa := bag_to_set(USEDIN(product_definition_shape[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT.' + 'OF_SHAPE'));
REPEAT i := 1 to SIZEOF (dimensional_location) WHILE pass;
IF (dimensional_location[i]\shape_aspect_relationship.relating_shape_aspect IN ssa) AND
(dimensional_location[i]\shape_aspect_relationship.name <> '') THEN
bdl := bdl + dimensional_location[i];
END_IF;
END_REPEAT;
IF (SIZEOF(bag_to_set(bdl)) <> SIZEOF(bdl)) THEN pass := FALSE;
END_IF;
END_REPEAT;
WHERE
WR1 : pass;
END_RULE;
RULE dimensioning_data_requires_document FOR (applied_document_reference, product_definition_context_association, role_association);
LOCAL
adr : SET OF applied_document_reference := (QUERY(adr <* applied_document_reference |
(adr\document_reference.assigned_document\document.kind\document_type.product_data_type = 'Standards Document') AND
((adr\document_reference.assigned_document\document.id = 'ASME Y14.41-2003') OR
(adr\document_reference.assigned_document\document.id = 'ASME Y14.5M-1994') OR
(adr\document_reference.assigned_document\document.id = 'ISO 1101: 2004'))));
pdca : SET OF product_definition_context_association := (QUERY(pdca <* product_definition_context_association |
(pdca\product_definition_context_association.role\product_definition_context_role.name = 'additional context') AND
(pdca\product_definition_context_association.frame_of_reference\application_context_element.name = 'Geometric Dimensioning and Tolerancing Product Specification')));
ra : SET OF role_association := (QUERY(ra <* role_association |
ra\role_association.role\object_role.name = 'dimensioning standard'));
ra1 : SET OF role_association := [];
pdpdca : SET OF product_definition := [];
pdadr : SET OF product_definition := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(pdca);
pdpdca := pdpdca + pdca[i]\product_definition_context_association.definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(adr);
ra1 := bag_to_set(USEDIN(adr[i],'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
IF (ra1 * ra) <> ra1 THEN
pass := FALSE;
END_IF;
REPEAT j := 1 to HIINDEX(adr[i]\applied_document_reference.items);
IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(adr[i]\applied_document_reference.items[j]) THEN
pdadr := pdadr + adr[i]\applied_document_reference.items[j];
END_IF;
END_REPEAT;
END_REPEAT;
WHERE
WR1 : pass;
WR2 : pdpdca = pdadr;
END_RULE;
RULE 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 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_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 machining_feature_life_cycle FOR
(instanced_feature);
WHERE
WR1: SIZEOF (QUERY (mf <* instanced_feature |
NOT (mf.of_shape.definition.frame_of_reference.life_cycle_stage =
'manufacturing planning'))) = 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 unique_shape_aspect_constraint for (product_definition_shape, shape_aspect);
LOCAL
bsa : BAG OF shape_aspect := [];
pass : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF (product_definition_shape) WHILE pass;
bsa := QUERY(sa <* USEDIN(product_definition_shape[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT.' + 'OF_SHAPE') | sa\shape_aspect.name <> '');
IF (SIZEOF(bag_to_set(bsa)) <> SIZEOF(bsa)) THEN pass := FALSE;
END_IF;
END_REPEAT;
WHERE
WR1 : pass;
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 ply_stock_material_select FOR
(product_related_product_category,
make_from_usage_option);
LOCAL
i,j,k,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 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 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 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_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_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 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 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 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 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 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 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 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_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 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 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 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;
(* E2: SUBTYPE_CONSTRAINT representation_item_subtypes FOR REPRESENTATION_ITEM; *)
(* E2: SUBTYPE_CONSTRAINT currency_subtypes FOR CURRENCY; *)
(* E2: SUBTYPE_CONSTRAINT cm_group_assignment_subtypes FOR GROUP_ASSIGNMENT; *)
(* E2: SUBTYPE_CONSTRAINT pos_compound_representation_item_subtypes FOR COMPOUND_REPRESENTATION_ITEM; *)
(* E2: SUBTYPE_CONSTRAINT cm_group_subtypes FOR GROUP; *)
(* E2: SUBTYPE_CONSTRAINT pos_product_definition_subtypes FOR PRODUCT_DEFINITION; *)
(* E2: SUBTYPE_CONSTRAINT primitive_2d_subtypes FOR PRIMITIVE_2D; *)
(* E2: SUBTYPE_CONSTRAINT c_compound_representation_item_subtypes FOR COMPOUND_REPRESENTATION_ITEM; *)
(* E2: SUBTYPE_CONSTRAINT des_draughting_callout_subtypes FOR DRAUGHTING_CALLOUT; *)
(* E2: SUBTYPE_CONSTRAINT machining_feature_definition_subtypes FOR FEATURE_DEFINITION; *)
(* E2: SUBTYPE_CONSTRAINT aa_representation_item_subtypes FOR REPRESENTATION_ITEM; *)
(* E2: SUBTYPE_CONSTRAINT ttr_descriptive_representation_item_subtypes FOR DESCRIPTIVE_REPRESENTATION_ITEM; *)
(*** 2003=>1994 conversion: insert a rule to control if instances are legal according to USE/REF clauses ***)
RULE validate_dependently_instantiable_entity_data_types FOR
(abstracted_expression_function,action_method_role,action_resource_type,application_defined_function,atom_based_literal,attribute_value_role,b_spline_basis,b_spline_function,basic_sparse_matrix,binary_literal,camera_model_d2,cartesian_complex_number_region,cartesian_transformation_operator,complex_number_literal,concept_feature_relationship,concept_feature_relationship_with_condition,constant_function,definite_integral_expression,definite_integral_function,document_usage_constraint,edge_blended_solid,effectivity_context_role,elementary_function,event_occurrence_role,explicit_procedural_representation_item_relationship,explicit_table_function,expression_denoted_function,extended_tuple_space,externally_listed_data,finite_function,founded_item,function_application,function_space,general_linear_function,homogeneous_linear_function,imported_curve_function,imported_point_function,imported_surface_function,imported_volume_function,indirectly_selected_elements,integer_tuple_literal,linearized_table_function,listed_data,local_time,maths_enum_literal,maths_function,maths_tuple_literal,modified_solid_with_placed_configuration,one_direction_repeat_factor,oriented_open_shell,oriented_path,parallel_composed_function,partial_derivative_expression,partial_derivative_function,polar_complex_number_region,procedural_representation,procedural_representation_sequence,product_definition_effectivity,quantifier_expression,rationalize_function,real_tuple_literal,reindexed_array_function,repackaging_function,restriction_function,runout_zone_orientation,selector_function,series_composed_function,solid_with_depression,solid_with_hole,solid_with_pocket,solid_with_protrusion,solid_with_shape_element_pattern,solid_with_slot,swept_area_solid,symbol_target,two_direction_repeat_factor,user_selected_elements,view_volume,volume --<list this first and all subsequent relevant referencedentity data types here>
);
LOCAL
number_of_input_instances : INTEGER;
previous_in_chain : LIST OF GENERIC := [];
set_of_input_types : SET OF STRING := [];
all_instances : SET OF GENERIC := [];
END_LOCAL;
all_instances := all_instances + abstracted_expression_function + action_method_role + action_resource_type + application_defined_function + atom_based_literal + attribute_value_role + b_spline_basis + b_spline_function + basic_sparse_matrix + binary_literal + camera_model_d2 + cartesian_complex_number_region + cartesian_transformation_operator + complex_number_literal + concept_feature_relationship + concept_feature_relationship_with_condition + constant_function + definite_integral_expression + definite_integral_function + document_usage_constraint + edge_blended_solid + effectivity_context_role + elementary_function + event_occurrence_role + explicit_procedural_representation_item_relationship + explicit_table_function + expression_denoted_function + extended_tuple_space + externally_listed_data + finite_function + founded_item + function_application + function_space + general_linear_function + homogeneous_linear_function + imported_curve_function + imported_point_function + imported_surface_function + imported_volume_function + indirectly_selected_elements + integer_tuple_literal + linearized_table_function + listed_data + local_time + maths_enum_literal + maths_function + maths_tuple_literal + modified_solid_with_placed_configuration + one_direction_repeat_factor + oriented_open_shell + oriented_path + parallel_composed_function + partial_derivative_expression + partial_derivative_function + polar_complex_number_region + procedural_representation + procedural_representation_sequence + product_definition_effectivity + quantifier_expression + rationalize_function + real_tuple_literal + reindexed_array_function + repackaging_function + restriction_function + runout_zone_orientation + selector_function + series_composed_function + solid_with_depression + solid_with_hole + solid_with_pocket + solid_with_protrusion + solid_with_shape_element_pattern + solid_with_slot + swept_area_solid + symbol_target + two_direction_repeat_factor + user_selected_elements + view_volume + volume;--<make a union of all implicit populations of the FOR-clause>
number_of_input_instances := SIZEOF(all_instances);
(* Collect all type strings of all FOR instances into one set. *)
REPEAT i:=1 TO number_of_input_instances;
set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
END_REPEAT;
WHERE
WR1: dependently_instantiated(all_instances, set_of_input_types,
previous_in_chain);
END_RULE;
FUNCTION dependently_instantiated(
set_of_input_instances : SET OF GENERIC:igen;
set_of_input_types : SET OF STRING;
previous_in_chain : LIST OF GENERIC:cgen): BOOLEAN;
(*'dependently_instantiated' To test whether all instances in the
input set_of_input_instances are referenced by independently
instantiable instances. If so, this function returns true.
Set_of_input_types includes the type strings for all input instances.
The instances in previous_in_chain are used to detect cyclic
references during recursive calls to this function. The parameter
lists already tested instances in a chain of references.
*)
LOCAL
number_of_input_instances : INTEGER;
number_of_referring_instances : INTEGER;
bag_of_referring_instances : BAG OF GENERIC:igen := [];
dependently_instantiated_flag : BOOLEAN;
previous_in_chain_plus : LIST OF GENERIC:cgen := [];
result : BOOLEAN := true;
set_of_types : SET OF STRING := [];
END_LOCAL;
IF EXISTS(set_of_input_instances) THEN
number_of_input_instances := SIZEOF(set_of_input_instances);
(* Add the declared type of bag_of_referring_instances to the set of
types of the REFERENCEd instances for the subset comparison later.
*)
set_of_input_types := set_of_input_types + 'GENERIC';
REPEAT i:=1 TO number_of_input_instances;
(* Determine all references to the current input instance. *)
bag_of_referring_instances := USEDIN (set_of_input_instances[i] , '');
IF EXISTS(bag_of_referring_instances) THEN
number_of_referring_instances := SIZEOF(bag_of_referring_instances);
dependently_instantiated_flag := false;
REPEAT j:=1 TO number_of_referring_instances;
(* Determine the type strings of the current referencing instance.
*)
set_of_types := TYPEOF(bag_of_referring_instances[j]);
(* If the referencing instance is of one of the types of the
only dependently instantiable select items, the current input
instance may still be invalidly instantiated.
Otherwise it is OK, and the next input instance is tested.
*)
IF set_of_types <= set_of_input_types THEN -- subset operator
(* The referring instance is of one of the restricted types.
However, it may itself be referred to by a valid instance;
then also the current instance would be valid.
Thus, call this function recursively with the referring
instance as input.
To avoid an infinite loop in case a set of instances
reference each other in a closed loop, test first whether
the current referencing instance is in the list of
previously processed chain members.
*)
IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN
previous_in_chain_plus := previous_in_chain +
set_of_input_instances[i];
IF dependently_instantiated([bag_of_referring_instances[j]],
set_of_input_types,
previous_in_chain_plus) THEN
dependently_instantiated_flag := true;
ESCAPE; -- dependently instantiated; next input instance
ELSE
(* Not dependently instantiated: go to next referring
instance. *)
SKIP;
END_IF;
END_IF;
ELSE
dependently_instantiated_flag := true;
ESCAPE; -- dependently instantiated; take next input instance
END_IF;
END_REPEAT;
IF NOT dependently_instantiated_flag THEN
RETURN(false);
END_IF;
ELSE
RETURN(false); -- not referenced at all => invalidly instantiated
END_IF;
END_REPEAT;
ELSE
RETURN(false); -- no input
END_IF;
RETURN(true);
END_FUNCTION; -- end dependently_instantiated
END_SCHEMA;