(* This is the EXPRESS AIM long form for ISO/IS 10303-232. This document is ISO TC 184/SC4/WG3 N1063. Created by: Glen Ziolko Date : 2001-11-15 *) SCHEMA technical_data_packaging; CONSTANT dummy_gri : geometric_representation_item := representation_item('') || geometric_representation_item(); dummy_tri : topological_representation_item := representation_item('') || topological_representation_item(); END_CONSTANT; TYPE action_item = SELECT (configuration_effectivity, document_file, product_definition, product_definition_with_associated_documents, product_definition_relationship, product_definition_formation, representation); END_TYPE; -- action_item TYPE action_request_item = SELECT (product_definition, product_definition_formation, product_definition_relationship, property_definition); END_TYPE; -- action_request_item TYPE ahead_or_behind = ENUMERATION OF (ahead, exact, behind); END_TYPE; -- ahead_or_behind TYPE amount_of_substance_measure = REAL; END_TYPE; -- amount_of_substance_measure TYPE approval_item = SELECT (action, applied_action_assignment, applied_certification_assignment, applied_effectivity_assignment, certification, configuration_effectivity, configuration_item, contract, document_file, product_definition, product_definition_formation, product_definition_relationship, property_definition, versioned_action_request); END_TYPE; -- approval_item TYPE approved_item = SELECT (drawing_revision, drawing_sheet_revision); END_TYPE; -- approved_item TYPE area_measure = REAL; END_TYPE; -- area_measure TYPE area_or_view = SELECT (presentation_area, presentation_view); END_TYPE; -- area_or_view TYPE axis2_placement = SELECT (axis2_placement_2d, axis2_placement_3d); END_TYPE; -- axis2_placement TYPE b_spline_curve_form = ENUMERATION OF (polyline_form, circular_arc, elliptic_arc, parabolic_arc, hyperbolic_arc, unspecified); END_TYPE; -- b_spline_curve_form 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; -- b_spline_surface_form TYPE boolean_operand = SELECT (solid_model, half_space_solid, csg_primitive, boolean_result); END_TYPE; -- boolean_operand TYPE boolean_operator = ENUMERATION OF (union, intersection, difference); END_TYPE; -- boolean_operator TYPE celsius_temperature_measure = REAL; END_TYPE; -- celsius_temperature_measure TYPE central_or_parallel = ENUMERATION OF (central, parallel); END_TYPE; -- central_or_parallel TYPE certification_item = SELECT (product_definition_formation_relationship); END_TYPE; -- certification_item TYPE character_style_select = SELECT (character_glyph_style_stroke, character_glyph_style_outline, text_style_for_defined_font); END_TYPE; -- character_style_select TYPE characterized_action_definition = SELECT (action, action_method, action_relationship); END_TYPE; -- characterized_action_definition TYPE characterized_definition = SELECT (characterized_object, characterized_product_definition, shape_definition); END_TYPE; -- characterized_definition TYPE characterized_product_definition = SELECT (product_definition, product_definition_relationship); END_TYPE; -- characterized_product_definition TYPE classification_item = SELECT (action_status, approval, descriptive_representation_item, product_definition); END_TYPE; -- classification_item TYPE compound_item_definition = SELECT (list_representation_item); END_TYPE; -- compound_item_definition TYPE configuration_design_item = SELECT (product_definition, product_definition_formation); END_TYPE; -- configuration_design_item TYPE context_dependent_measure = REAL; END_TYPE; -- context_dependent_measure TYPE contract_item = SELECT (action, product_definition, product_definition_formation, product_definition_with_associated_documents, property_definition); END_TYPE; -- contract_item TYPE count_measure = NUMBER; END_TYPE; -- count_measure TYPE csg_primitive = SELECT (sphere, block, right_angular_wedge, torus, right_circular_cone, right_circular_cylinder); END_TYPE; -- csg_primitive TYPE csg_select = SELECT (boolean_result, csg_primitive); END_TYPE; -- csg_select TYPE curve_font_or_scaled_curve_font_select = SELECT (curve_style_font_select); END_TYPE; -- curve_font_or_scaled_curve_font_select TYPE curve_on_surface = SELECT (pcurve, surface_curve, composite_curve_on_surface); END_TYPE; -- curve_on_surface TYPE curve_or_render = SELECT (curve_style, curve_style_rendering); END_TYPE; -- curve_or_render TYPE curve_style_font_select = SELECT (curve_style_font, pre_defined_curve_font); END_TYPE; -- curve_style_font_select TYPE date_and_time_item = SELECT (action, applied_action_assignment, applied_contract_assignment, applied_security_classification_assignment, approval_person_organization, certification, contract, event_occurrence, organizational_project, product_definition, product_definition_formation, representation, security_classification, versioned_action_request); END_TYPE; -- date_and_time_item TYPE date_item = SELECT (action, applied_action_assignment, applied_contract_assignment, applied_security_classification_assignment, approval_person_organization, certification, contract, event_occurrence, organizational_project, product_definition, product_definition_formation, representation, security_classification, versioned_action_request); END_TYPE; -- date_item TYPE date_time_or_event_occurrence = SELECT (date_time_select, event_occurrence); END_TYPE; -- date_time_or_event_occurrence TYPE date_time_select = SELECT (date, local_time, date_and_time); END_TYPE; -- date_time_select TYPE day_in_month_number = INTEGER; WHERE wr1: ((1 <= SELF) AND (SELF <= 31)); END_TYPE; -- day_in_month_number TYPE defined_glyph_select = SELECT (pre_defined_character_glyph, externally_defined_character_glyph); END_TYPE; -- defined_glyph_select TYPE defined_symbol_select = SELECT (externally_defined_symbol); END_TYPE; -- defined_symbol_select TYPE derived_property_select = SELECT (property_definition, action_property); END_TYPE; -- derived_property_select 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; -- description_attribute_select TYPE descriptive_measure = STRING; END_TYPE; -- descriptive_measure TYPE dimension_count = INTEGER; WHERE wr1: (SELF > 0); END_TYPE; -- dimension_count TYPE direction_count_select = SELECT (u_direction_count, v_direction_count); END_TYPE; -- direction_count_select TYPE document_reference_item = SELECT (action, action_method, alternate_product_relationship, applied_document_reference, assembly_component_usage_substitute, descriptive_representation_item, document_file, document_relationship, executed_action, externally_defined_symbol_and_placement, make_from_usage_option, make_from_usage_option_with_reference_designator, next_assembly_usage_occurrence, product, product_definition, product_definition_formation, product_definition_formation_relationship, product_definition_occurrence_relationship, product_definition_relationship, product_definition_with_associated_documents, promissory_usage_occurrence, property_definition, quantified_assembly_component_usage, shape_aspect, shape_aspect_relationship, specified_higher_usage_occurrence, versioned_action_request); END_TYPE; -- document_reference_item TYPE draughting_callout_element = SELECT (annotation_text_occurrence, annotation_curve_occurrence); END_TYPE; -- draughting_callout_element TYPE draughting_titled_item = SELECT (drawing_revision, drawing_sheet_revision); END_TYPE; -- draughting_titled_item TYPE effectivity_context_item = SELECT (organization, product_definition_formation); END_TYPE; -- effectivity_context_item TYPE effectivity_item = SELECT (product_definition, product_definition_formation, product_definition_relationship); END_TYPE; -- effectivity_item TYPE electric_current_measure = REAL; END_TYPE; -- electric_current_measure TYPE event_occurrence_item = SELECT (organizational_project); END_TYPE; -- event_occurrence_item TYPE external_identification_item = SELECT (document_file, product_definition); END_TYPE; -- external_identification_item TYPE fill_style_select = SELECT (fill_area_style_colour); END_TYPE; -- fill_style_select TYPE font_select = SELECT (pre_defined_text_font, externally_defined_text_font); END_TYPE; -- font_select TYPE founded_item_select = SELECT (founded_item, representation_item); END_TYPE; -- founded_item_select TYPE geometric_set_select = SELECT (point, curve, surface); END_TYPE; -- geometric_set_select TYPE hour_in_day = INTEGER; WHERE wr1: ((0 <= SELF) AND (SELF < 24)); END_TYPE; -- hour_in_day TYPE id_attribute_select = SELECT (action, address, product_category, property_definition, shape_aspect, shape_aspect_relationship, application_context, group, organizational_project, representation); END_TYPE; -- id_attribute_select TYPE identification_item = SELECT (application_context, applied_document_reference, applied_document_usage_constraint_assignment, approval_status, document_file, organization, product, product_definition, product_definition_formation, security_classification_level, shape_aspect_relationship); END_TYPE; -- identification_item TYPE identifier = STRING; END_TYPE; -- identifier TYPE invisible_item = SELECT (styled_item, representation); END_TYPE; -- invisible_item TYPE knot_type = ENUMERATION OF (uniform_knots, quasi_uniform_knots, piecewise_bezier_knots, unspecified); END_TYPE; -- knot_type TYPE label = STRING; END_TYPE; -- label TYPE language_item = SELECT (representation); END_TYPE; -- language_item TYPE layered_item = SELECT (presentation_representation, representation_item); END_TYPE; -- layered_item TYPE length_measure = REAL; END_TYPE; -- length_measure TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; END_TYPE; -- list_of_reversible_topology_item TYPE list_representation_item = LIST [1:?] OF representation_item; END_TYPE; -- list_representation_item TYPE luminous_intensity_measure = REAL; END_TYPE; -- luminous_intensity_measure TYPE marker_select = SELECT (marker_type); END_TYPE; -- marker_select TYPE marker_type = ENUMERATION OF (dot, x, plus, asterisk, ring, square, triangle); END_TYPE; -- marker_type TYPE mass_measure = REAL; END_TYPE; -- mass_measure TYPE measure_value = SELECT (length_measure, mass_measure, time_measure, electric_current_measure, thermodynamic_temperature_measure, celsius_temperature_measure, amount_of_substance_measure, luminous_intensity_measure, plane_angle_measure, solid_angle_measure, area_measure, volume_measure, ratio_measure, parameter_value, numeric_measure, context_dependent_measure, descriptive_measure, positive_length_measure, positive_plane_angle_measure, positive_ratio_measure, count_measure); END_TYPE; -- measure_value TYPE message = STRING; END_TYPE; -- message TYPE minute_in_hour = INTEGER; WHERE wr1: ((0 <= SELF) AND (SELF <= 59)); END_TYPE; -- minute_in_hour TYPE month_in_year_number = INTEGER; WHERE wr1: ((1 <= SELF) AND (SELF <= 12)); END_TYPE; -- month_in_year_number 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; -- name_attribute_select TYPE numeric_measure = NUMBER; END_TYPE; -- numeric_measure TYPE organization_item = SELECT (action, applied_action_assignment, applied_contract_assignment, applied_identification_assignment, configuration_item, contract, document_file, event_occurrence, organizational_project, product, product_definition, product_definition_formation, security_classification, versioned_action_request); END_TYPE; -- organization_item TYPE organizational_project_item = SELECT (action, product_concept); END_TYPE; -- organizational_project_item TYPE parameter_value = REAL; END_TYPE; -- parameter_value TYPE pcurve_or_surface = SELECT (pcurve, surface); END_TYPE; -- pcurve_or_surface TYPE person_and_organization_item = SELECT (action, applied_action_assignment, applied_contract_assignment, applied_identification_assignment, configuration_item, contract, document_file, event_occurrence, organizational_project, product, product_definition, product_definition_formation, security_classification, versioned_action_request); END_TYPE; -- person_and_organization_item TYPE person_organization_select = SELECT (person, organization, person_and_organization); END_TYPE; -- person_organization_select TYPE plane_angle_measure = REAL; END_TYPE; -- plane_angle_measure TYPE positive_length_measure = length_measure; WHERE wr1: (SELF > 0); END_TYPE; -- positive_length_measure TYPE positive_plane_angle_measure = plane_angle_measure; WHERE wr1: (SELF > 0); END_TYPE; -- positive_plane_angle_measure TYPE positive_ratio_measure = ratio_measure; WHERE wr1: (SELF > 0); END_TYPE; -- positive_ratio_measure TYPE preferred_surface_curve_representation = ENUMERATION OF (curve_3d, pcurve_s1, pcurve_s2); END_TYPE; -- preferred_surface_curve_representation TYPE presentable_text = STRING; END_TYPE; -- presentable_text TYPE presentation_representation_select = SELECT (presentation_representation, presentation_set); END_TYPE; -- presentation_representation_select TYPE presentation_size_assignment_select = SELECT (presentation_view, presentation_area, area_in_set); END_TYPE; -- presentation_size_assignment_select TYPE presentation_style_select = SELECT (point_style, curve_style, surface_style_usage, fill_area_style, text_style, externally_defined_style); END_TYPE; -- presentation_style_select TYPE presented_item_item = SELECT (product_definition_formation); END_TYPE; -- presented_item_item TYPE product_or_formation_or_definition = SELECT (product, product_definition_formation, product_definition); END_TYPE; -- product_or_formation_or_definition TYPE ratio_measure = REAL; END_TYPE; -- ratio_measure TYPE rendering_properties_select = SELECT (surface_style_reflectance_ambient, surface_style_transparent); END_TYPE; -- rendering_properties_select TYPE represented_definition = SELECT (general_property, property_definition, property_definition_relationship, shape_aspect, shape_aspect_relationship); END_TYPE; -- represented_definition TYPE reversible_topology = SELECT (reversible_topology_item, list_of_reversible_topology_item, set_of_reversible_topology_item); END_TYPE; -- reversible_topology TYPE reversible_topology_item = SELECT (edge, path, face, face_bound, closed_shell, open_shell); END_TYPE; -- reversible_topology_item TYPE role_select = SELECT (action_assignment, action_request_assignment, approval_assignment, approval_date_time, certification_assignment, contract_assignment, document_reference, effectivity_assignment, security_classification_assignment); END_TYPE; -- role_select TYPE second_in_minute = REAL; WHERE wr1: ((0 <= SELF) AND (SELF <= 60)); END_TYPE; -- second_in_minute TYPE security_classification_item = SELECT (document_file, product_definition, product_definition_formation, product_definition_relationship, property_definition); END_TYPE; -- security_classification_item TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; END_TYPE; -- set_of_reversible_topology_item TYPE shading_curve_method = ENUMERATION OF (constant_colour, linear_colour); END_TYPE; -- shading_curve_method TYPE shading_surface_method = ENUMERATION OF (constant_shading, colour_shading, dot_shading, normal_shading); END_TYPE; -- shading_surface_method TYPE shape_definition = SELECT (product_definition_shape, shape_aspect, shape_aspect_relationship); END_TYPE; -- shape_definition TYPE shell = SELECT (vertex_shell, wire_shell, open_shell, closed_shell); END_TYPE; -- shell TYPE si_prefix = ENUMERATION OF (exa, peta, tera, giga, mega, kilo, hecto, deca, deci, centi, milli, micro, nano, pico, femto, atto); END_TYPE; -- si_prefix 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; -- si_unit_name TYPE size_select = SELECT (positive_length_measure, measure_with_unit, descriptive_measure); END_TYPE; -- size_select TYPE solid_angle_measure = REAL; END_TYPE; -- solid_angle_measure TYPE source = ENUMERATION OF (made, bought, not_known); END_TYPE; -- source TYPE source_item = SELECT (identifier, message); END_TYPE; -- source_item TYPE style_context_select = SELECT (group, representation, representation_item, presentation_set); END_TYPE; -- style_context_select TYPE supported_item = SELECT (action_directive, action, action_method); END_TYPE; -- supported_item TYPE surface_boundary = SELECT (boundary_curve, degenerate_pcurve); END_TYPE; -- surface_boundary TYPE surface_model = SELECT (shell_based_surface_model, face_based_surface_model); END_TYPE; -- surface_model TYPE surface_side = ENUMERATION OF (positive, negative, both); END_TYPE; -- surface_side TYPE surface_side_style_select = SELECT (surface_side_style); END_TYPE; -- surface_side_style_select 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; -- surface_style_element_select TYPE text = STRING; END_TYPE; -- text TYPE text_alignment = label; END_TYPE; -- text_alignment TYPE text_or_character = SELECT (annotation_text, annotation_text_character, defined_character_glyph, composite_text, text_literal); END_TYPE; -- text_or_character TYPE text_path = ENUMERATION OF (left, right, up, down); END_TYPE; -- text_path TYPE thermodynamic_temperature_measure = REAL; END_TYPE; -- thermodynamic_temperature_measure TYPE time_measure = REAL; END_TYPE; -- time_measure TYPE transformation = SELECT (item_defined_transformation, functionally_defined_transformation); END_TYPE; -- transformation TYPE transition_code = ENUMERATION OF (discontinuous, continuous, cont_same_gradient, cont_same_gradient_same_curvature); END_TYPE; -- transition_code TYPE trimming_preference = ENUMERATION OF (cartesian, parameter, unspecified); END_TYPE; -- trimming_preference TYPE trimming_select = SELECT (cartesian_point, parameter_value); END_TYPE; -- trimming_select TYPE u_direction_count = INTEGER; WHERE wr1: (SELF > 1); END_TYPE; -- u_direction_count TYPE unit = SELECT (named_unit, derived_unit); END_TYPE; -- unit TYPE v_direction_count = INTEGER; WHERE wr1: (SELF > 1); END_TYPE; -- v_direction_count TYPE value_qualifier = SELECT (precision_qualifier, type_qualifier); END_TYPE; -- value_qualifier TYPE vector_or_direction = SELECT (vector, direction); END_TYPE; -- vector_or_direction TYPE volume_measure = REAL; END_TYPE; -- volume_measure TYPE wireframe_model = SELECT (shell_based_wireframe_model, edge_based_wireframe_model); END_TYPE; -- wireframe_model TYPE year_number = INTEGER; END_TYPE; -- year_number ENTITY action; name : label; description : OPTIONAL text; chosen_method : action_method; DERIVE id : identifier := get_id_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- action ENTITY action_assignment ABSTRACT SUPERTYPE; assigned_action : action; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- action_assignment ENTITY action_directive; name : label; description : OPTIONAL text; analysis : text; comment : text; requests : SET [1:?] OF versioned_action_request; END_ENTITY; -- action_directive ENTITY action_method; name : label; description : OPTIONAL text; consequence : text; purpose : text; END_ENTITY; -- action_method ENTITY action_method_with_associated_documents SUBTYPE OF (action_method); documents : SET [1:?] OF document; END_ENTITY; -- action_method_with_associated_documents ENTITY action_property; name : label; description : text; definition : characterized_action_definition; END_ENTITY; -- action_property ENTITY action_property_representation; name : label; description : text; property : action_property; representation : representation; END_ENTITY; -- action_property_representation ENTITY action_relationship; name : label; description : OPTIONAL text; relating_action : action; related_action : action; END_ENTITY; -- action_relationship ENTITY action_request_assignment ABSTRACT SUPERTYPE; assigned_action_request : versioned_action_request; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- action_request_assignment 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,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- action_request_solution ENTITY action_request_status; status : label; assigned_request : versioned_action_request; END_ENTITY; -- action_request_status ENTITY action_resource; name : label; description : OPTIONAL text; usage : SET [1:?] OF supported_item; kind : action_resource_type; END_ENTITY; -- action_resource ENTITY action_resource_relationship; name : label; description : OPTIONAL text; relating_resource : action_resource; related_resource : action_resource; END_ENTITY; -- action_resource_relationship ENTITY action_resource_type; name : label; END_ENTITY; -- action_resource_type ENTITY action_status; status : label; assigned_action : executed_action; END_ENTITY; -- action_status 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; -- address ENTITY advanced_brep_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP', 'TECHNICAL_DATA_PACKAGING.FACETED_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3: (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb) | (NOT ( SIZEOF(QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ('TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fcs))) )) = 0)) )) = 0)) )) = 0); wr4: (SIZEOF(QUERY ( msb <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | ('TECHNICAL_DATA_PACKAGING.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)) )) = 0); wr5: (SIZEOF(QUERY ( brv <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT ('TECHNICAL_DATA_PACKAGING.' + 'ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source. mapped_representation))) )) = 0); END_ENTITY; -- advanced_brep_shape_representation ENTITY advanced_face SUBTYPE OF (face_surface); WHERE wr1 : (SIZEOF(['TECHNICAL_DATA_PACKAGING.ELEMENTARY_SURFACE', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_SURFACE', 'TECHNICAL_DATA_PACKAGING.SWEPT_SURFACE'] * TYPEOF( face_geometry)) = 1); wr2 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (NOT ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element))) )) = 0)) )) = 0); wr3 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.SURFACE_CURVE', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE'] * TYPEOF(oe. edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0); wr4 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe\edge.edge_start)) AND ( 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(oe\ edge.edge_start\vertex_point.vertex_geometry)) AND ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe\edge. edge_end)) AND ('TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | ('TECHNICAL_DATA_PACKAGING.ORIENTED_PATH' IN TYPEOF( elp_fbnds.bound)) )) = 0); wr6 : ((NOT ('TECHNICAL_DATA_PACKAGING.SWEPT_SURFACE' IN TYPEOF( face_geometry))) OR (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE'] * TYPEOF( face_geometry\swept_surface.swept_curve)) = 1)); wr7 : (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('TECHNICAL_DATA_PACKAGING.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([ 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP', 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP'] * TYPEOF(bnd.bound)) = 1)) )) = 0); wr9 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (('TECHNICAL_DATA_PACKAGING.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 ( 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(sc_ag))) )) = 0))) )) = 0)) )) = 0); wr10: (((NOT ('TECHNICAL_DATA_PACKAGING.SWEPT_SURFACE' IN TYPEOF( face_geometry))) OR (NOT ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (('TECHNICAL_DATA_PACKAGING.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; -- advanced_face 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; -- alternate_product_relationship ENTITY amount_of_substance_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component)); END_ENTITY; -- amount_of_substance_measure_with_unit ENTITY amount_of_substance_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 1) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- amount_of_substance_unit ENTITY annotation_curve_occurrence SUBTYPE OF (annotation_occurrence); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(SELF\styled_item. item)); END_ENTITY; -- annotation_curve_occurrence ENTITY annotation_occurrence SUPERTYPE OF (ONEOF (annotation_point_occurrence, annotation_curve_occurrence,annotation_text_occurrence)) SUBTYPE OF (styled_item); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF)); END_ENTITY; -- annotation_occurrence ENTITY annotation_point_occurrence SUBTYPE OF (annotation_occurrence); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.POINT' IN TYPEOF(SELF\styled_item. item)); END_ENTITY; -- annotation_point_occurrence ENTITY annotation_text SUBTYPE OF (mapped_item); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(SELF\ mapped_item.mapping_target)); wr2: ('TECHNICAL_DATA_PACKAGING.TEXT_STRING_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation)); wr3: ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF)); END_ENTITY; -- annotation_text ENTITY annotation_text_character SUBTYPE OF (mapped_item); alignment : text_alignment; WHERE wr1: ('TECHNICAL_DATA_PACKAGING.CHARACTER_GLYPH_SYMBOL' IN TYPEOF( SELF\mapped_item.mapping_source.mapped_representation)); wr2: ('TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(SELF\ mapped_item.mapping_target)); wr3: ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF)); END_ENTITY; -- annotation_text_character ENTITY annotation_text_occurrence SUBTYPE OF (annotation_occurrence); WHERE wr1: (SIZEOF(['TECHNICAL_DATA_PACKAGING.TEXT_LITERAL', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT_CHARACTER', 'TECHNICAL_DATA_PACKAGING.DEFINED_CHARACTER_GLYPH', 'TECHNICAL_DATA_PACKAGING.COMPOSITE_TEXT'] * TYPEOF(SELF\ styled_item.item)) > 0); END_ENTITY; -- annotation_text_occurrence 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,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- application_context ENTITY application_context_element SUPERTYPE OF (ONEOF (library_context,product_concept_context, product_context,product_definition_context)); name : label; frame_of_reference : application_context; END_ENTITY; -- application_context_element ENTITY application_context_relationship; name : label; description : OPTIONAL text; relating_context : application_context; related_context : application_context; END_ENTITY; -- application_context_relationship ENTITY application_protocol_definition; status : label; application_interpreted_model_schema_name : label; application_protocol_year : year_number; application : application_context; END_ENTITY; -- application_protocol_definition ENTITY applied_action_assignment SUBTYPE OF (action_assignment); items : SET [1:?] OF action_item; END_ENTITY; -- applied_action_assignment ENTITY applied_action_request_assignment SUBTYPE OF (action_request_assignment); items : SET [1:?] OF action_request_item; END_ENTITY; -- applied_action_request_assignment ENTITY applied_approval_assignment SUBTYPE OF (approval_assignment); items : SET [1:?] OF approval_item; END_ENTITY; -- applied_approval_assignment ENTITY applied_certification_assignment SUBTYPE OF (certification_assignment); items : SET [1:?] OF certification_item; END_ENTITY; -- applied_certification_assignment ENTITY applied_classification_assignment SUBTYPE OF (classification_assignment); items : SET [1:?] OF classification_item; END_ENTITY; -- applied_classification_assignment ENTITY applied_contract_assignment SUBTYPE OF (contract_assignment); items : SET [1:?] OF contract_item; END_ENTITY; -- applied_contract_assignment ENTITY applied_date_and_time_assignment SUBTYPE OF (date_and_time_assignment); items : SET [1:?] OF date_and_time_item; END_ENTITY; -- applied_date_and_time_assignment ENTITY applied_date_assignment SUBTYPE OF (date_assignment); items : SET [1:?] OF date_item; END_ENTITY; -- applied_date_assignment ENTITY applied_document_reference SUBTYPE OF (document_reference); items : SET [1:?] OF document_reference_item; END_ENTITY; -- applied_document_reference ENTITY applied_document_usage_constraint_assignment SUBTYPE OF (document_usage_constraint_assignment); items : SET [1:?] OF document_reference_item; END_ENTITY; -- applied_document_usage_constraint_assignment ENTITY applied_effectivity_assignment SUBTYPE OF (effectivity_assignment); items : SET [1:?] OF effectivity_item; END_ENTITY; -- applied_effectivity_assignment ENTITY applied_effectivity_context_assignment SUBTYPE OF (effectivity_context_assignment); items : SET [1:?] OF effectivity_context_item; END_ENTITY; -- applied_effectivity_context_assignment ENTITY applied_event_occurrence_assignment SUBTYPE OF (event_occurrence_assignment); items : SET [1:?] OF event_occurrence_item; END_ENTITY; -- applied_event_occurrence_assignment ENTITY applied_external_identification_assignment SUBTYPE OF (external_identification_assignment); items : SET [1:?] OF external_identification_item; END_ENTITY; -- applied_external_identification_assignment ENTITY applied_identification_assignment SUBTYPE OF (identification_assignment); items : SET [1:?] OF identification_item; END_ENTITY; -- applied_identification_assignment ENTITY applied_organization_assignment SUBTYPE OF (organization_assignment); items : SET [1:?] OF organization_item; END_ENTITY; -- applied_organization_assignment ENTITY applied_organizational_project_assignment SUBTYPE OF (organizational_project_assignment); items : SET [1:?] OF organizational_project_item; END_ENTITY; -- applied_organizational_project_assignment ENTITY applied_person_and_organization_assignment SUBTYPE OF (person_and_organization_assignment); items : SET [1:?] OF person_and_organization_item; END_ENTITY; -- applied_person_and_organization_assignment ENTITY applied_presented_item SUBTYPE OF (presented_item); items : SET [1:?] OF presented_item_item; END_ENTITY; -- applied_presented_item ENTITY applied_security_classification_assignment SUBTYPE OF (security_classification_assignment); items : SET [1:?] OF security_classification_item; END_ENTITY; -- applied_security_classification_assignment ENTITY approval; status : approval_status; level : label; END_ENTITY; -- approval ENTITY approval_assignment ABSTRACT SUPERTYPE; assigned_approval : approval; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- approval_assignment ENTITY approval_date_time; date_time : date_time_select; dated_approval : approval; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- approval_date_time ENTITY approval_person_organization; person_organization : person_organization_select; authorized_approval : approval; role : approval_role; END_ENTITY; -- approval_person_organization ENTITY approval_relationship; name : label; description : OPTIONAL text; relating_approval : approval; related_approval : approval; END_ENTITY; -- approval_relationship ENTITY approval_role; role : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- approval_role ENTITY approval_status; name : label; END_ENTITY; -- approval_status ENTITY area_dependent_annotation_representation SUBTYPE OF (presentation_representation); WHERE wr1: (SIZEOF(QUERY ( item <* SELF\representation.items | (NOT ( SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'ANNOTATION_OCCURRENCE', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT'] * TYPEOF(item)) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( item <* SELF\representation.items | ( 'TECHNICAL_DATA_PACKAGING.ANNOTATION_OCCURRENCE' IN TYPEOF( item)) )) >= 1); END_ENTITY; -- area_dependent_annotation_representation ENTITY area_in_set; area : presentation_area; in_set : presentation_set; END_ENTITY; -- area_in_set ENTITY area_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.AREA_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- area_measure_with_unit ENTITY area_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 2) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- area_unit 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; -- assembly_component_usage 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; -- assembly_component_usage_substitute ENTITY assembly_component_usage_substitute_with_ranking SUBTYPE OF (assembly_component_usage_substitute); ranking : INTEGER; ranking_rationale : text; END_ENTITY; -- assembly_component_usage_substitute_with_ranking ENTITY axis1_placement SUBTYPE OF (placement); axis : OPTIONAL direction; DERIVE z : direction := NVL(normalise(axis),dummy_gri || direction([0,0,1])); WHERE wr1: (SELF\geometric_representation_item.dim = 3); END_ENTITY; -- axis1_placement 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; -- axis2_placement_2d 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)); END_ENTITY; -- axis2_placement_3d 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: (('TECHNICAL_DATA_PACKAGING.UNIFORM_CURVE' IN TYPEOF(SELF)) OR ('TECHNICAL_DATA_PACKAGING.QUASI_UNIFORM_CURVE' IN TYPEOF( SELF)) OR ('TECHNICAL_DATA_PACKAGING.BEZIER_CURVE' IN TYPEOF(SELF)) OR ( 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(SELF))); END_ENTITY; -- b_spline_curve 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; -- b_spline_curve_with_knots 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: (('TECHNICAL_DATA_PACKAGING.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR ('TECHNICAL_DATA_PACKAGING.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR ('TECHNICAL_DATA_PACKAGING.BEZIER_SURFACE' IN TYPEOF(SELF)) OR ( 'TECHNICAL_DATA_PACKAGING.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF))); END_ENTITY; -- b_spline_surface 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; -- b_spline_surface_with_knots ENTITY background_colour SUBTYPE OF (colour); presentation : area_or_view; UNIQUE ur1 : presentation; END_ENTITY; -- background_colour ENTITY bezier_curve SUBTYPE OF (b_spline_curve); END_ENTITY; -- bezier_curve ENTITY bezier_surface SUBTYPE OF (b_spline_surface); END_ENTITY; -- bezier_surface 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; -- block ENTITY boolean_result SUBTYPE OF (geometric_representation_item); operator : boolean_operator; first_operand : boolean_operand; second_operand : boolean_operand; END_ENTITY; -- boolean_result ENTITY boundary_curve SUBTYPE OF (composite_curve_on_surface); WHERE wr1: SELF\composite_curve.closed_curve; END_ENTITY; -- boundary_curve ENTITY bounded_curve SUPERTYPE OF (ONEOF (polyline,b_spline_curve,trimmed_curve, bounded_pcurve,bounded_surface_curve,composite_curve)) SUBTYPE OF (curve); END_ENTITY; -- bounded_curve ENTITY bounded_pcurve SUBTYPE OF (pcurve, bounded_curve); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE' IN TYPEOF(SELF\pcurve .reference_to_curve.items[1])); END_ENTITY; -- bounded_pcurve ENTITY bounded_surface SUPERTYPE OF (ONEOF (b_spline_surface,rectangular_trimmed_surface, curve_bounded_surface,rectangular_composite_surface)) SUBTYPE OF (surface); END_ENTITY; -- bounded_surface ENTITY bounded_surface_curve SUBTYPE OF (surface_curve, bounded_curve); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE' IN TYPEOF(SELF\ surface_curve.curve_3d)); END_ENTITY; -- bounded_surface_curve ENTITY box_domain; corner : cartesian_point; xlength : positive_length_measure; ylength : positive_length_measure; zlength : positive_length_measure; WHERE wr1: (SIZEOF(QUERY ( item <* USEDIN(SELF,'') | (NOT ( 'TECHNICAL_DATA_PACKAGING.BOXED_HALF_SPACE' IN TYPEOF(item))) )) = 0); END_ENTITY; -- box_domain ENTITY boxed_half_space SUBTYPE OF (half_space_solid); enclosure : box_domain; END_ENTITY; -- boxed_half_space ENTITY brep_with_voids SUBTYPE OF (manifold_solid_brep); voids : SET [1:?] OF oriented_closed_shell; END_ENTITY; -- brep_with_voids 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; -- calendar_date ENTITY camera_image SUBTYPE OF (mapped_item); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.CAMERA_USAGE' IN TYPEOF(SELF\ mapped_item.mapping_source)); wr2: ('TECHNICAL_DATA_PACKAGING.PLANAR_BOX' IN TYPEOF(SELF\ mapped_item.mapping_target)); wr3: ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF)); END_ENTITY; -- camera_image 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: ('TECHNICAL_DATA_PACKAGING.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: ((('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_2D') IN TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement)) AND (NOT (('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_3D') IN TYPEOF(SELF\mapped_item. mapping_target\planar_box.placement)))); END_ENTITY; -- camera_image_3d_with_scale ENTITY camera_model SUPERTYPE OF (ONEOF (camera_model_d3)) SUBTYPE OF (geometric_representation_item); WHERE wr1: ((SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ITEM_DEFINED_TRANSFORMATION.' + 'TRANSFORM_ITEM_1')) + SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'REPRESENTATION_MAP.MAPPING_ORIGIN'))) > 0); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'STYLED_ITEM.ITEM')) = 0); END_ENTITY; -- camera_model ENTITY camera_model_d3 SUBTYPE OF (camera_model); view_reference_system : axis2_placement_3d; perspective_of_volume : view_volume; WHERE wr1: ((dot_product(SELF.view_reference_system.p[3],SELF. perspective_of_volume.view_window.placement.p[3]) = 1) AND ( SELF.view_reference_system.location.coordinates[3] = SELF. perspective_of_volume.view_window.placement.location. coordinates[3])); wr2: (SELF\geometric_representation_item.dim = 3); END_ENTITY; -- camera_model_d3 ENTITY camera_model_d3_with_hlhsr SUBTYPE OF (camera_model_d3); hidden_line_surface_removal : BOOLEAN; END_ENTITY; -- camera_model_d3_with_hlhsr ENTITY camera_model_with_light_sources SUBTYPE OF (camera_model_d3); sources : SET [1:?] OF light_source; END_ENTITY; -- camera_model_with_light_sources ENTITY camera_usage SUBTYPE OF (representation_map); WHERE wr1: (NOT ('TECHNICAL_DATA_PACKAGING.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF\representation_map.mapped_representation))); wr2: ('TECHNICAL_DATA_PACKAGING.CAMERA_MODEL' IN TYPEOF(SELF\ representation_map.mapping_origin)); END_ENTITY; -- camera_usage ENTITY cartesian_point SUBTYPE OF (point); coordinates : LIST [1:3] OF length_measure; END_ENTITY; -- cartesian_point 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); WHERE wr1: (scl > 0); END_ENTITY; -- cartesian_transformation_operator 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; -- cartesian_transformation_operator_2d 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; -- cartesian_transformation_operator_3d ENTITY certification; name : label; purpose : text; kind : certification_type; END_ENTITY; -- certification ENTITY certification_assignment ABSTRACT SUPERTYPE; assigned_certification : certification; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- certification_assignment ENTITY certification_type; description : label; END_ENTITY; -- certification_type ENTITY character_glyph_style_outline; outline_style : curve_style; END_ENTITY; -- character_glyph_style_outline ENTITY character_glyph_style_stroke; stroke_style : curve_style; END_ENTITY; -- character_glyph_style_stroke ENTITY character_glyph_symbol SUBTYPE OF (symbol_representation); character_box : planar_extent; baseline_ratio : ratio_measure; DERIVE box_height : length_measure := character_box.size_in_y; WHERE wr1: ((0 <= baseline_ratio) AND (baseline_ratio <= 1)); wr2: item_in_context(SELF.character_box,SELF\representation. context_of_items); wr3: ('TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF( SELF.box_height)); END_ENTITY; -- character_glyph_symbol ENTITY characterized_object; name : label; description : OPTIONAL text; END_ENTITY; -- characterized_object ENTITY circle SUBTYPE OF (conic); radius : positive_length_measure; END_ENTITY; -- circle ENTITY class SUBTYPE OF (group); END_ENTITY; -- class ENTITY class_system SUBTYPE OF (group); END_ENTITY; -- class_system ENTITY classification_assignment ABSTRACT SUPERTYPE; assigned_class : group; role : classification_role; END_ENTITY; -- classification_assignment ENTITY classification_role; name : label; description : OPTIONAL text; END_ENTITY; -- classification_role ENTITY closed_shell SUBTYPE OF (connected_face_set); END_ENTITY; -- closed_shell ENTITY colour; END_ENTITY; -- colour ENTITY colour_rgb SUBTYPE OF (colour_specification); red : REAL; green : REAL; blue : REAL; WHERE wr1: ((0 <= red) AND (red <= 1)); wr2: ((0 <= green) AND (green <= 1)); wr3: ((0 <= blue) AND (blue <= 1)); END_ENTITY; -- colour_rgb ENTITY colour_specification SUBTYPE OF (colour); name : label; END_ENTITY; -- colour_specification 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; -- composite_curve 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; -- composite_curve_on_surface 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: ('TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE' IN TYPEOF( parent_curve)); END_ENTITY; -- composite_curve_segment 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; -- composite_text ENTITY compound_representation_item SUBTYPE OF (representation_item); item_element : compound_item_definition; END_ENTITY; -- compound_representation_item 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,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- configuration_design ENTITY configuration_effectivity SUBTYPE OF (product_definition_effectivity); configuration : configuration_design; UNIQUE ur1 : configuration, usage, id; WHERE wr1: ('TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_USAGE' IN TYPEOF( SELF\product_definition_effectivity.usage)); END_ENTITY; -- configuration_effectivity ENTITY configuration_item; id : identifier; name : label; description : OPTIONAL text; item_concept : product_concept; purpose : OPTIONAL label; END_ENTITY; -- configuration_item ENTITY conic SUPERTYPE OF (ONEOF (circle,ellipse,hyperbola,parabola)) SUBTYPE OF (curve); position : axis2_placement; END_ENTITY; -- conic ENTITY conical_surface SUBTYPE OF (elementary_surface); radius : length_measure; semi_angle : plane_angle_measure; WHERE wr1: (radius >= 0); END_ENTITY; -- conical_surface ENTITY connected_edge_set SUBTYPE OF (topological_representation_item); ces_edges : SET [1:?] OF edge; END_ENTITY; -- connected_edge_set ENTITY connected_face_set SUPERTYPE OF (ONEOF (closed_shell,open_shell)) SUBTYPE OF (topological_representation_item); cfs_faces : SET [1:?] OF face; END_ENTITY; -- connected_face_set 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: ('TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition)); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); wr3: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- context_dependent_shape_representation ENTITY context_dependent_unit SUBTYPE OF (named_unit); name : label; END_ENTITY; -- context_dependent_unit ENTITY contract; name : label; purpose : text; kind : contract_type; END_ENTITY; -- contract ENTITY contract_assignment ABSTRACT SUPERTYPE; assigned_contract : contract; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- contract_assignment ENTITY contract_relationship; id : identifier; name : label; description : OPTIONAL text; relating_contract : contract; related_contract : contract; END_ENTITY; -- contract_relationship ENTITY contract_type; description : label; END_ENTITY; -- contract_type ENTITY conversion_based_unit SUBTYPE OF (named_unit); name : label; conversion_factor : measure_with_unit; END_ENTITY; -- conversion_based_unit ENTITY coordinated_universal_time_offset; hour_offset : INTEGER; minute_offset : OPTIONAL INTEGER; sense : ahead_or_behind; DERIVE actual_minute_offset : INTEGER := NVL(minute_offset,0); WHERE wr1: ((0 <= hour_offset) AND (hour_offset < 24)); wr2: ((0 <= actual_minute_offset) AND (actual_minute_offset <= 59)); wr3: (NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND ( sense = exact))); END_ENTITY; -- coordinated_universal_time_offset 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([ 'TECHNICAL_DATA_PACKAGING.CSG_SOLID', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D', 'TECHNICAL_DATA_PACKAGING.SOLID_REPLICA', 'TECHNICAL_DATA_PACKAGING.REVOLVED_FACE_SOLID', 'TECHNICAL_DATA_PACKAGING.EXTRUDED_FACE_SOLID'] * TYPEOF(it)) <> 1) )) = 0); wr3: (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT ('TECHNICAL_DATA_PACKAGING.CSG_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation))) )) = 0); wr4: (SIZEOF(QUERY ( sr <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SOLID_REPLICA' IN TYPEOF(it)) ) | (SIZEOF(['TECHNICAL_DATA_PACKAGING.CSG_SOLID', 'TECHNICAL_DATA_PACKAGING.REVOLVED_FACE_SOLID', 'TECHNICAL_DATA_PACKAGING.EXTRUDED_FACE_SOLID'] * TYPEOF(sr\ solid_replica.parent_solid)) = 0) )) = 0); wr5: (SIZEOF(QUERY ( it <* SELF.items | (NOT ( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D' IN TYPEOF(it))) )) > 0); END_ENTITY; -- csg_shape_representation ENTITY csg_solid SUBTYPE OF (solid_model); tree_root_expression : csg_select; END_ENTITY; -- csg_solid 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; -- curve 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 | ( 'TECHNICAL_DATA_PACKAGING.OUTER_BOUNDARY_CURVE' IN TYPEOF( temp)) )) = 0)); wr2: ((NOT implicit_outer) OR ( 'TECHNICAL_DATA_PACKAGING.BOUNDED_SURFACE' IN TYPEOF( basis_surface))); wr3: (SIZEOF(QUERY ( temp <* boundaries | ( 'TECHNICAL_DATA_PACKAGING.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; -- curve_bounded_surface 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; -- curve_replica ENTITY curve_style; name : label; curve_font : curve_font_or_scaled_curve_font_select; curve_width : size_select; curve_colour : colour; END_ENTITY; -- curve_style ENTITY curve_style_font; name : label; pattern_list : LIST [1:?] OF curve_style_font_pattern; END_ENTITY; -- curve_style_font ENTITY curve_style_font_pattern; visible_segment_length : positive_length_measure; invisible_segment_length : positive_length_measure; END_ENTITY; -- curve_style_font_pattern ENTITY curve_style_rendering; rendering_method : shading_curve_method; rendering_properties : surface_rendering_properties; END_ENTITY; -- curve_style_rendering ENTITY cylindrical_surface SUBTYPE OF (elementary_surface); radius : positive_length_measure; END_ENTITY; -- cylindrical_surface ENTITY date SUPERTYPE OF (ONEOF (calendar_date)); year_component : year_number; END_ENTITY; -- date ENTITY date_and_time; date_component : date; time_component : local_time; END_ENTITY; -- date_and_time ENTITY date_and_time_assignment ABSTRACT SUPERTYPE; assigned_date_and_time : date_and_time; role : date_time_role; END_ENTITY; -- date_and_time_assignment ENTITY date_assignment ABSTRACT SUPERTYPE; assigned_date : date; role : date_role; END_ENTITY; -- date_assignment ENTITY date_role; name : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- date_role ENTITY date_time_role; name : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- date_time_role 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; -- dated_effectivity ENTITY defined_character_glyph SUBTYPE OF (geometric_representation_item); definition : defined_glyph_select; placement : axis2_placement; END_ENTITY; -- defined_character_glyph ENTITY definitional_representation SUBTYPE OF (representation); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items)); END_ENTITY; -- definitional_representation ENTITY degenerate_pcurve SUBTYPE OF (point); basis_surface : surface; reference_to_curve : definitional_representation; WHERE wr1: (SIZEOF(reference_to_curve\representation.items) = 1); wr2: ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(reference_to_curve\ representation.items[1])); wr3: (reference_to_curve\representation.items[1]\ geometric_representation_item.dim = 2); END_ENTITY; -- degenerate_pcurve ENTITY degenerate_toroidal_surface SUBTYPE OF (toroidal_surface); select_outer : BOOLEAN; WHERE wr1: (major_radius < minor_radius); END_ENTITY; -- degenerate_toroidal_surface ENTITY derived_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))); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- derived_unit ENTITY derived_unit_element; unit : named_unit; exponent : REAL; END_ENTITY; -- derived_unit_element ENTITY description_attribute; attribute_value : text; described_item : description_attribute_select; END_ENTITY; -- description_attribute ENTITY descriptive_representation_item SUBTYPE OF (representation_item); description : text; END_ENTITY; -- descriptive_representation_item ENTITY design_make_from_relationship SUBTYPE OF (product_definition_relationship); END_ENTITY; -- design_make_from_relationship 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; -- dimensional_exponents ENTITY directed_action SUBTYPE OF (executed_action); directive : action_directive; END_ENTITY; -- directed_action ENTITY direction SUBTYPE OF (geometric_representation_item); direction_ratios : LIST [2:3] OF REAL; WHERE wr1: (SIZEOF(QUERY ( tmp <* direction_ratios | (tmp <> 0) )) > 0); END_ENTITY; -- direction 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; -- document 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; -- document_file ENTITY document_product_association; name : label; description : OPTIONAL text; relating_document : document; related_product : product_or_formation_or_definition; END_ENTITY; -- document_product_association ENTITY document_product_equivalence SUBTYPE OF (document_product_association); WHERE wr1: (SELF.name = 'equivalence'); wr2: ((NOT ('TECHNICAL_DATA_PACKAGING.PRODUCT' IN TYPEOF(SELF. related_product))) OR ((SELF.relating_document.kind. product_data_type = 'configuration controlled document') AND (SIZEOF(QUERY ( prpc <* USEDIN(SELF.related_product, 'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | (prpc.name = 'document') )) = 1))); wr3: ((NOT ('TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product))) OR ((SELF. relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF( QUERY ( prpc <* USEDIN(SELF.related_product\ product_definition_formation.of_product, 'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | (prpc.name = 'document') )) = 1))); wr4: ((NOT ('TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION' IN TYPEOF( SELF.related_product))) OR ((SELF.relating_document.kind. product_data_type = 'configuration controlled document definition') AND (SIZEOF( QUERY ( prpc <* USEDIN(SELF.related_product\ product_definition.formation.of_product, 'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | (prpc.name = 'document') )) = 1))); END_ENTITY; -- document_product_equivalence ENTITY document_reference ABSTRACT SUPERTYPE; assigned_document : document; source : label; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- document_reference ENTITY document_relationship; name : label; description : OPTIONAL text; relating_document : document; related_document : document; END_ENTITY; -- document_relationship ENTITY document_representation_type; name : label; represented_document : document; END_ENTITY; -- document_representation_type ENTITY document_type; product_data_type : label; END_ENTITY; -- document_type ENTITY document_usage_constraint; source : document; subject_element : label; subject_element_value : text; END_ENTITY; -- document_usage_constraint ENTITY document_usage_constraint_assignment ABSTRACT SUPERTYPE; assigned_document_usage : document_usage_constraint; role : document_usage_role; END_ENTITY; -- document_usage_constraint_assignment ENTITY document_usage_role; name : label; description : OPTIONAL text; END_ENTITY; -- document_usage_role ENTITY draughting_approval_assignment SUBTYPE OF (approval_assignment); approved_items : SET [1:?] OF approved_item; WHERE wr1: (SIZEOF(QUERY ( item <* approved_items | ( 'TECHNICAL_DATA_PACKAGING.DRAWING_REVISION' IN TYPEOF(item)) )) <= 1); END_ENTITY; -- draughting_approval_assignment ENTITY draughting_callout SUBTYPE OF (geometric_representation_item); contents : SET [1:?] OF draughting_callout_element; END_ENTITY; -- draughting_callout ENTITY draughting_drawing_revision SUBTYPE OF (drawing_revision); WHERE wr1 : ((SIZEOF(USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET')) >= 1) AND ( SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( 'TECHNICAL_DATA_PACKAGING.DRAWING_SHEET_REVISION' IN TYPEOF(ais.area))) )) = 0)); wr2 : (SIZEOF(QUERY ( app_ass <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT ( SIZEOF(USEDIN(app_ass.assigned_approval, 'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_DATE_TIME.DATED_APPROVAL')) = 1)) )) = 0); wr3 : (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( app_ass <* USEDIN(ais.area, 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT ( SIZEOF(USEDIN(app_ass.assigned_approval, 'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_DATE_TIME.DATED_APPROVAL')) = 1)) )) = 0)) )) = 0); wr4 : (SIZEOF(QUERY ( app_ass <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT ( SIZEOF(USEDIN(app_ass.assigned_approval, 'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL')) >= 1)) )) = 0); wr5 : (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( app_ass <* USEDIN(ais.area, 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT ( SIZEOF(USEDIN(app_ass.assigned_approval, 'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL')) >= 1)) )) = 0)) )) = 0); wr6 : (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_TITLE.ITEMS')) <= 1); wr7 : (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(USEDIN(ais.area,'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_TITLE.ITEMS')) <= 1)) )) = 0); wr8 : (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( item <* ais.area.items | (NOT (SIZEOF( TYPEOF(item) * ['TECHNICAL_DATA_PACKAGING.STYLED_ITEM', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT', 'TECHNICAL_DATA_PACKAGING.PLANAR_BOX']) = 1)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( item <* ais.area.items | (SIZEOF(TYPEOF(item) * ['TECHNICAL_DATA_PACKAGING.STYLED_ITEM', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM']) = 1) )) > 0)) )) = 0); wr10: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( p_b <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.PLANAR_BOX' IN TYPEOF(item)) ) | (NOT (SIZEOF(USEDIN(p_b,'TECHNICAL_DATA_PACKAGING' + '.PRESENTATION_SIZE.SIZE')) = 1)) )) = 0)) )) = 0); wr11: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF(mi.mapping_source.mapped_representation))) )) = 0)) )) = 0); wr12: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( a2p <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(item)) ) | (NOT (SIZEOF(USEDIN(a2p,'TECHNICAL_DATA_PACKAGING.' + 'MAPPED_ITEM.MAPPING_TARGET')) > 0)) )) = 0)) )) = 0); wr13: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(ais.area.context_of_items.representations_in_context) = 1)) )) = 0); wr14: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (SIZEOF(USEDIN(mi.mapping_source. mapped_representation,'TECHNICAL_DATA_PACKAGING.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION')) = 1)) )) = 0)) )) = 0); wr15: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (SIZEOF(QUERY ( pv_item <* mi.mapping_source. mapped_representation.items | (NOT (SIZEOF(TYPEOF(pv_item) * ['TECHNICAL_DATA_PACKAGING.' + 'STYLED_ITEM', 'TECHNICAL_DATA_PACKAGING.CAMERA_IMAGE', 'TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT']) = 1)) )) = 0)) )) = 0)) )) = 0); wr16: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (SIZEOF(QUERY ( pv_item <* mi.mapping_source. mapped_representation.items | ( 'TECHNICAL_DATA_PACKAGING.CAMERA_IMAGE' IN TYPEOF(pv_item)) )) = 1)) )) = 0)) )) = 0); wr17: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (SIZEOF(QUERY ( a2p <* QUERY ( pv_item <* mi. mapping_source.mapped_representation.items | ( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF( pv_item)) ) | (('TECHNICAL_DATA_PACKAGING.' + 'REPRESENTATION_MAP.MAP_USAGE') IN ROLESOF(a2p)) )) = 1)) )) = 0)) )) = 0); wr18: (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.AREA_IN_SET.IN_SET') | (NOT ( SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (SIZEOF(mi.mapping_source.mapped_representation. context_of_items.representations_in_context) = 1)) )) = 0)) )) = 0); END_ENTITY; -- draughting_drawing_revision 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; -- draughting_pre_defined_colour 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; -- draughting_pre_defined_curve_font ENTITY draughting_title; items : SET [1:?] OF draughting_titled_item; language : label; contents : text; END_ENTITY; -- draughting_title ENTITY drawing_definition; drawing_number : identifier; drawing_type : OPTIONAL label; END_ENTITY; -- drawing_definition 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; -- drawing_revision ENTITY drawing_sheet_revision SUBTYPE OF (presentation_area); revision_identifier : identifier; WHERE wr1: (SIZEOF(QUERY ( item <* SELF\representation.items | (( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) AND ('TECHNICAL_DATA_PACKAGING.DRAWING_SHEET_REVISION' IN TYPEOF(item\mapped_item.mapping_source.mapped_representation))) )) = 0); END_ENTITY; -- drawing_sheet_revision ENTITY edge SUPERTYPE OF (ONEOF (edge_curve,oriented_edge)) SUBTYPE OF (topological_representation_item); edge_start : vertex; edge_end : vertex; END_ENTITY; -- edge ENTITY edge_based_wireframe_model SUBTYPE OF (geometric_representation_item); ebwm_boundary : SET [1:?] OF connected_edge_set; END_ENTITY; -- edge_based_wireframe_model ENTITY edge_based_wireframe_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.EDGE_BASED_WIREFRAME_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.EDGE_BASED_WIREFRAME_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) >= 1); wr3: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 ( 'TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(edges))) )) = 0)) )) = 0)) )) = 0); wr4: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(edges. edge_start)) AND ('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(edges.edge_end)))) )) = 0)) )) = 0)) )) = 0); wr6: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT (('TECHNICAL_DATA_PACKAGING.' + '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; -- edge_based_wireframe_shape_representation ENTITY edge_curve SUBTYPE OF (edge, geometric_representation_item); edge_geometry : curve; same_sense : BOOLEAN; END_ENTITY; -- edge_curve 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; -- edge_loop 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,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- effectivity ENTITY effectivity_assignment ABSTRACT SUPERTYPE; assigned_effectivity : effectivity; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- effectivity_assignment ENTITY effectivity_context_assignment ABSTRACT SUPERTYPE; assigned_effectivity_assignment : effectivity_assignment; role : effectivity_context_role; END_ENTITY; -- effectivity_context_assignment ENTITY effectivity_context_role; name : label; description : OPTIONAL text; END_ENTITY; -- effectivity_context_role ENTITY effectivity_relationship; name : label; description : OPTIONAL text; related_effectivity : effectivity; relating_effectivity : effectivity; END_ENTITY; -- effectivity_relationship ENTITY electric_current_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.ELECTRIC_CURRENT_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component)); END_ENTITY; -- electric_current_measure_with_unit ENTITY electric_current_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 1) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- electric_current_unit ENTITY elementary_brep_shape_representation SUBTYPE OF (shape_representation); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP', 'TECHNICAL_DATA_PACKAGING.FACETED_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb) | (NOT ( SIZEOF(QUERY ( fcs <* csh.cfs_faces | (NOT ( 'TECHNICAL_DATA_PACKAGING.FACE_SURFACE' IN TYPEOF(fcs))) )) = 0)) )) = 0)) )) = 0); wr4 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb) | (NOT ( SIZEOF(QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ('TECHNICAL_DATA_PACKAGING.ELEMENTARY_SURFACE' IN TYPEOF(fcs\face_surface.face_geometry))) )) = 0)) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr6 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.POLYLINE'] * TYPEOF(oe. edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr7 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe.edge_start)) AND ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe. edge_end)))) )) = 0)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr8 : (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | ('TECHNICAL_DATA_PACKAGING.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)) )) = 0); wr10: (SIZEOF(QUERY ( brv <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | (NOT('TECHNICAL_DATA_PACKAGING.' + 'ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source. mapped_representation))) )) = 0); wr12: (SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ('TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. loop_vertex)) AND ( 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF( vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\ vertex_point.vertex_geometry)))) )) = 0)) )) = 0)) )) = 0)) )) = 0); END_ENTITY; -- elementary_brep_shape_representation ENTITY elementary_surface SUPERTYPE OF (ONEOF (plane,cylindrical_surface,conical_surface, spherical_surface,toroidal_surface)) SUBTYPE OF (surface); position : axis2_placement_3d; END_ENTITY; -- elementary_surface ENTITY ellipse SUBTYPE OF (conic); semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; END_ENTITY; -- ellipse ENTITY evaluated_degenerate_pcurve SUBTYPE OF (degenerate_pcurve); equivalent_point : cartesian_point; END_ENTITY; -- evaluated_degenerate_pcurve ENTITY event_occurrence; id : identifier; name : label; description : OPTIONAL text; END_ENTITY; -- event_occurrence ENTITY event_occurrence_assignment ABSTRACT SUPERTYPE; assigned_event_occurrence : event_occurrence; role : event_occurrence_role; END_ENTITY; -- event_occurrence_assignment ENTITY event_occurrence_relationship; name : label; description : OPTIONAL text; relating_event : event_occurrence; related_event : event_occurrence; END_ENTITY; -- event_occurrence_relationship ENTITY event_occurrence_role; name : label; description : OPTIONAL text; END_ENTITY; -- event_occurrence_role ENTITY executed_action SUBTYPE OF (action); END_ENTITY; -- executed_action ENTITY external_identification_assignment ABSTRACT SUPERTYPE SUBTYPE OF (identification_assignment); source : external_source; END_ENTITY; -- external_identification_assignment ENTITY external_source; source_id : source_item; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- external_source ENTITY externally_defined_character_glyph SUBTYPE OF (externally_defined_item); END_ENTITY; -- externally_defined_character_glyph ENTITY externally_defined_class SUBTYPE OF (externally_defined_item, class); END_ENTITY; -- externally_defined_class ENTITY externally_defined_general_property SUBTYPE OF (externally_defined_item, general_property); END_ENTITY; -- externally_defined_general_property ENTITY externally_defined_item; item_id : source_item; source : external_source; END_ENTITY; -- externally_defined_item ENTITY externally_defined_planar_box SUBTYPE OF (externally_defined_item, planar_box); END_ENTITY; -- externally_defined_planar_box ENTITY externally_defined_style SUBTYPE OF (externally_defined_item); END_ENTITY; -- externally_defined_style ENTITY externally_defined_symbol SUBTYPE OF (externally_defined_item); END_ENTITY; -- externally_defined_symbol ENTITY externally_defined_symbol_and_placement SUBTYPE OF (externally_defined_symbol, placement); END_ENTITY; -- externally_defined_symbol_and_placement ENTITY externally_defined_text_font SUBTYPE OF (externally_defined_item); END_ENTITY; -- externally_defined_text_font 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); END_ENTITY; -- extruded_face_solid ENTITY face SUPERTYPE OF (ONEOF (face_surface,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 | ( 'TECHNICAL_DATA_PACKAGING.FACE_OUTER_BOUND' IN TYPEOF(temp)) )) <= 1); END_ENTITY; -- face ENTITY face_based_surface_model SUBTYPE OF (geometric_representation_item); fbsm_faces : SET [1:?] OF connected_face_set; END_ENTITY; -- face_based_surface_model ENTITY face_bound SUBTYPE OF (topological_representation_item); bound : loop; orientation : BOOLEAN; END_ENTITY; -- face_bound ENTITY face_outer_bound SUBTYPE OF (face_bound); END_ENTITY; -- face_outer_bound ENTITY face_surface SUBTYPE OF (face, geometric_representation_item); face_geometry : surface; same_sense : BOOLEAN; WHERE wr1: (NOT ('TECHNICAL_DATA_PACKAGING.ORIENTED_SURFACE' IN TYPEOF( face_geometry))); END_ENTITY; -- face_surface ENTITY faceted_brep SUBTYPE OF (manifold_solid_brep); END_ENTITY; -- faceted_brep ENTITY faceted_brep_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: (SIZEOF(QUERY ( it <* items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.FACETED_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( it <* items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.FACETED_BREP', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3: (SIZEOF(QUERY ( fbrep <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.FACETED_BREP' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( csh <* msb_shells(fbrep) | (NOT (SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | (NOT (( 'TECHNICAL_DATA_PACKAGING.FACE_SURFACE' IN TYPEOF(fcs)) AND ('TECHNICAL_DATA_PACKAGING.PLANE' IN TYPEOF(fcs\face_surface .face_geometry)) AND ( 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(fcs\ face_surface.face_geometry\elementary_surface.position. location)))) )) = 0)) )) = 0)) )) = 0); wr4: (SIZEOF(QUERY ( fbrep <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.FACE_OUTER_BOUND' IN TYPEOF(bnds)) )) = 1)) )) = 0)) )) = 0)) )) = 0); wr5: (SIZEOF(QUERY ( msb <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | ('TECHNICAL_DATA_PACKAGING.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)) )) = 0); wr6: (SIZEOF(QUERY ( brv <* QUERY ( it <* items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT ('TECHNICAL_DATA_PACKAGING.' + 'FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source. mapped_representation))) )) = 0); END_ENTITY; -- faceted_brep_shape_representation ENTITY fill_area_style; name : label; fill_styles : SET [1:?] OF fill_style_select; WHERE wr1: (SIZEOF(QUERY ( fill_style <* SELF.fill_styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'FILL_AREA_STYLE_COLOUR') IN TYPEOF(fill_style)) )) <= 1); END_ENTITY; -- fill_area_style ENTITY fill_area_style_colour; name : label; fill_colour : colour; END_ENTITY; -- fill_area_style_colour ENTITY founded_item; END_ENTITY; -- founded_item ENTITY functionally_defined_transformation; name : label; description : OPTIONAL text; END_ENTITY; -- functionally_defined_transformation ENTITY general_property; id : identifier; name : label; description : OPTIONAL text; END_ENTITY; -- general_property ENTITY general_property_association; name : label; description : OPTIONAL text; base_definition : general_property; derived_definition : derived_property_select; WHERE wr1: (SIZEOF(USEDIN(derived_definition,'TECHNICAL_DATA_PACKAGING.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1); wr2: (derived_definition.name = base_definition.name); END_ENTITY; -- general_property_association ENTITY general_property_relationship; name : label; description : OPTIONAL text; relating_property : general_property; related_property : general_property; END_ENTITY; -- general_property_relationship ENTITY geometric_curve_set SUBTYPE OF (geometric_set); WHERE wr1: (SIZEOF(QUERY ( temp <* SELF\geometric_set.elements | ( 'TECHNICAL_DATA_PACKAGING.SURFACE' IN TYPEOF(temp)) )) = 0); END_ENTITY; -- geometric_curve_set ENTITY geometric_representation_context SUBTYPE OF (representation_context); coordinate_space_dimension : dimension_count; END_ENTITY; -- geometric_representation_context 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, right_angular_wedge,half_space_solid,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 ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(using_rep.context_of_items))) )) = 0); END_ENTITY; -- geometric_representation_item ENTITY geometric_set SUPERTYPE OF (ONEOF (geometric_curve_set)) SUBTYPE OF (geometric_representation_item); elements : SET [1:?] OF geometric_set_select; END_ENTITY; -- geometric_set 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) * ['TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_2D', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM']) = 1)) )) = 0); wr3: (SIZEOF(QUERY ( item <* SELF.items | (SIZEOF(TYPEOF(item) * [ 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM']) = 1) )) >= 1); wr4: (SIZEOF(QUERY ( mi <* QUERY ( item <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(item)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.' + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION') IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation))) )) = 0); wr5: (SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF( item)) ) | (NOT (SIZEOF(QUERY ( elem <* gcs\geometric_set. elements | (NOT (SIZEOF(TYPEOF(elem) * [ 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.CIRCLE', 'TECHNICAL_DATA_PACKAGING.COMPOSITE_CURVE', 'TECHNICAL_DATA_PACKAGING.ELLIPSE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_2D', 'TECHNICAL_DATA_PACKAGING.POINT', 'TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.TRIMMED_CURVE']) = 1)) )) = 0)) )) = 0); wr6: (SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF( item)) ) | (NOT (SIZEOF(QUERY ( crv <* QUERY ( elem <* gcs\ geometric_set.elements | ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(elem)) ) | (NOT valid_basis_curve_in_2d_wireframe( crv)) )) = 0)) )) = 0); wr7: (SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) ) | (NOT (SIZEOF(QUERY ( pnt <* QUERY ( elem <* gcs\geometric_set.elements | ( 'TECHNICAL_DATA_PACKAGING.POINT' IN TYPEOF(elem)) ) | (NOT ( SIZEOF(TYPEOF(pnt) * [ 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE']) = 1)) )) = 0)) )) = 0); wr8: (SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF( item)) ) | (NOT (SIZEOF(QUERY ( pl <* QUERY ( elem <* gcs\ geometric_set.elements | ( 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(elem)) ) | ( NOT (SIZEOF(pl\polyline.points) > 2)) )) = 0)) )) = 0); END_ENTITY; -- geometrically_bounded_2d_wireframe_representation ENTITY geometrically_bounded_surface_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3: (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT ((('TECHNICAL_DATA_PACKAGING.' + '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 | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET' IN TYPEOF(mr_it)) )) > 0))) )) = 0); wr4: (SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( pnt <* QUERY ( gsel <* gs\geometric_set .elements | ('TECHNICAL_DATA_PACKAGING.POINT' IN TYPEOF(gsel)) ) | (NOT gbsf_check_point(pnt)) )) = 0)) )) = 0); wr5: (SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cv <* QUERY ( gsel <* gs\geometric_set. elements | ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(gsel)) ) | (NOT gbsf_check_curve(cv)) )) = 0)) )) = 0); wr6: (SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( sf <* QUERY ( gsel <* gs\geometric_set. elements | ('TECHNICAL_DATA_PACKAGING.SURFACE' IN TYPEOF( gsel)) ) | (NOT gbsf_check_surface(sf)) )) = 0)) )) = 0); wr7: (SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (SIZEOF(QUERY ( gsel <* gs\geometric_set.elements | ( 'TECHNICAL_DATA_PACKAGING.SURFACE' IN TYPEOF(gsel)) )) > 0) )) > 0); END_ENTITY; -- geometrically_bounded_surface_shape_representation ENTITY geometrically_bounded_wireframe_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF(TYPEOF(it) * [ 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM']) = 1)) )) = 0); wr2: (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF(TYPEOF(it) * [ 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM']) = 1) )) >= 1); wr3: (SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( crv <* QUERY ( elem <* gcs\ geometric_set.elements | ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(elem)) ) | (NOT valid_geometrically_bounded_wf_curve(crv)) )) = 0)) )) = 0); wr4: (SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( pnts <* QUERY ( elem <* gcs\ geometric_set.elements | ('TECHNICAL_DATA_PACKAGING.POINT' IN TYPEOF(elem)) ) | (NOT valid_geometrically_bounded_wf_point(pnts)) )) = 0)) )) = 0); wr5: (SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cnc <* QUERY ( elem <* gcs\ geometric_set.elements | ('TECHNICAL_DATA_PACKAGING.CONIC' IN TYPEOF(elem)) ) | (NOT ( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D' IN TYPEOF(cnc\ conic.position))) )) = 0)) )) = 0); wr6: (SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( pline <* QUERY ( elem <* gcs\ geometric_set.elements | ( 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(elem)) ) | ( NOT (SIZEOF(pline\polyline.points) > 2)) )) = 0)) )) = 0); wr7: (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT (('TECHNICAL_DATA_PACKAGING.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation))) )) = 0); END_ENTITY; -- geometrically_bounded_wireframe_shape_representation ENTITY global_uncertainty_assigned_context SUBTYPE OF (representation_context); uncertainty : SET [1:?] OF uncertainty_measure_with_unit; END_ENTITY; -- global_uncertainty_assigned_context ENTITY global_unit_assigned_context SUBTYPE OF (representation_context); units : SET [1:?] OF unit; END_ENTITY; -- global_unit_assigned_context ENTITY group; name : label; description : OPTIONAL text; DERIVE id : identifier := get_id_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- group ENTITY group_relationship; name : label; description : OPTIONAL text; relating_group : group; related_group : group; END_ENTITY; -- group_relationship ENTITY half_space_solid SUBTYPE OF (geometric_representation_item); base_surface : surface; agreement_flag : BOOLEAN; END_ENTITY; -- half_space_solid ENTITY hyperbola SUBTYPE OF (conic); semi_axis : positive_length_measure; semi_imag_axis : positive_length_measure; END_ENTITY; -- hyperbola ENTITY id_attribute; attribute_value : identifier; identified_item : id_attribute_select; END_ENTITY; -- id_attribute ENTITY identification_assignment ABSTRACT SUPERTYPE; assigned_id : identifier; role : identification_role; END_ENTITY; -- identification_assignment ENTITY identification_assignment_relationship; name : label; description : OPTIONAL text; relating_identification_assignment : identification_assignment; related_identification_assignment : identification_assignment; END_ENTITY; -- identification_assignment_relationship ENTITY identification_role; name : label; description : OPTIONAL text; END_ENTITY; -- identification_role 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; -- intersection_curve ENTITY invisibility; invisible_items : SET [1:?] OF invisible_item; END_ENTITY; -- invisibility ENTITY item_defined_transformation; name : label; description : OPTIONAL text; transform_item_1 : representation_item; transform_item_2 : representation_item; END_ENTITY; -- item_defined_transformation ENTITY item_identified_representation_usage; name : label; description : OPTIONAL text; definition : represented_definition; used_representation : representation; identified_item : representation_item; WHERE wr1: (SELF.used_representation IN using_representations(SELF. identified_item)); END_ENTITY; -- item_identified_representation_usage ENTITY language_assignment SUBTYPE OF (classification_assignment); items : SET [1:?] OF language_item; END_ENTITY; -- language_assignment ENTITY length_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.LENGTH_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- length_measure_with_unit ENTITY length_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 1) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- length_unit ENTITY library_context SUBTYPE OF (application_context_element); library_reference : label; END_ENTITY; -- library_context 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,'TECHNICAL_DATA_PACKAGING.' + 'STYLED_ITEM.ITEM')) = 0); END_ENTITY; -- light_source ENTITY light_source_ambient SUBTYPE OF (light_source); END_ENTITY; -- light_source_ambient ENTITY light_source_directional SUBTYPE OF (light_source); orientation : direction; END_ENTITY; -- light_source_directional ENTITY light_source_positional SUBTYPE OF (light_source); position : cartesian_point; constant_attenuation : REAL; distance_attenuation : REAL; END_ENTITY; -- light_source_positional 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; -- light_source_spot ENTITY line SUBTYPE OF (curve); pnt : cartesian_point; dir : vector; WHERE wr1: (dir.dim = pnt.dim); END_ENTITY; -- line 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; -- local_time ENTITY loop SUPERTYPE OF (ONEOF (vertex_loop,edge_loop,poly_loop)) SUBTYPE OF (topological_representation_item); END_ENTITY; -- loop ENTITY lot_effectivity SUBTYPE OF (effectivity); effectivity_lot_id : identifier; effectivity_lot_size : measure_with_unit; END_ENTITY; -- lot_effectivity ENTITY luminous_intensity_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.LUMINOUS_INTENSITY_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component)); END_ENTITY; -- luminous_intensity_measure_with_unit ENTITY luminous_intensity_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 1)); END_ENTITY; -- luminous_intensity_unit 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; -- make_from_usage_option ENTITY make_from_usage_option_with_reference_designator SUBTYPE OF (make_from_usage_option, assembly_component_usage); END_ENTITY; -- make_from_usage_option_with_reference_designator ENTITY manifold_solid_brep SUBTYPE OF (solid_model); outer : closed_shell; END_ENTITY; -- manifold_solid_brep ENTITY manifold_surface_shape_representation SUBTYPE OF (shape_representation); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_SURFACE_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_SURFACE_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3 : (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT(('TECHNICAL_DATA_PACKAGING.' + '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 | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(mr_it)) )) > 0))) )) = 0); wr4 : (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( sh <* sbsm\ shell_based_surface_model.sbsm_boundary | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.OPEN_SHELL', 'TECHNICAL_DATA_PACKAGING.ORIENTED_CLOSED_SHELL', 'TECHNICAL_DATA_PACKAGING.CLOSED_SHELL'] * TYPEOF(sh)) = 1)) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 ( 'TECHNICAL_DATA_PACKAGING.FACE_SURFACE' IN TYPEOF(fa))) )) = 0)) )) = 0)) )) = 0); wr6 : (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( bnds <* fa.bounds | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP', 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP'] * TYPEOF(bnds.bound)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr8 : (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe. edge_element))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds\ path.edge_list | ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe.edge_element)) ) | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA', 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D', 'TECHNICAL_DATA_PACKAGING.PCURVE', 'TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe. edge_element.edge_start)) AND ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe. edge_element.edge_end)))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr12: (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ((SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_SURFACE'] * TYPEOF(oe. edge_element.edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT ('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF( vlp_fbnds\vertex_loop.loop_vertex))) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr14: (SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_SURFACE'] * TYPEOF( vlp_fbnds\vertex_loop.loop_vertex\vertex_point. vertex_geometry)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0); END_ENTITY; -- manifold_surface_shape_representation ENTITY mapped_item SUBTYPE OF (representation_item); mapping_source : representation_map; mapping_target : representation_item; WHERE wr1: acyclic_mapped_representation(using_representations(SELF),[SELF]); END_ENTITY; -- mapped_item ENTITY mass_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.MASS_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- mass_measure_with_unit ENTITY mass_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 1) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- mass_unit ENTITY material_designation; name : label; definitions : SET [1:?] OF characterized_definition; END_ENTITY; -- material_designation ENTITY measure_qualification; name : label; description : text; qualified_measure : measure_with_unit; qualifiers : SET [1:?] OF value_qualifier; WHERE wr1: (SIZEOF(QUERY ( temp <* qualifiers | ( 'TECHNICAL_DATA_PACKAGING.PRECISION_QUALIFIER' IN TYPEOF( temp)) )) < 2); END_ENTITY; -- measure_qualification ENTITY measure_representation_item SUBTYPE OF (representation_item, measure_with_unit); END_ENTITY; -- measure_representation_item 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, 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)); value_component : measure_value; unit_component : unit; WHERE wr1: valid_units(SELF); END_ENTITY; -- measure_with_unit ENTITY mechanical_design_geometric_presentation_area SUBTYPE OF (presentation_area); WHERE wr1: (SIZEOF(QUERY ( it1 <* SELF.items | (NOT (( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR (('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it1)) AND ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF( it1\mapped_item.mapping_source.mapped_representation))))) )) = 0); wr2: (SIZEOF(QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it1)) ) | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF( mi1\mapped_item.mapping_source.mapped_representation)) ) | ( NOT (SIZEOF(QUERY ( it2 <* pv\mapped_item.mapping_source. mapped_representation\representation.items | ((NOT (( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(it2)) OR (('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it2)) AND (NOT (('TECHNICAL_DATA_PACKAGING.' + 'CAMERA_IMAGE_3D_WITH_SCALE') IN TYPEOF(it2))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF(it2\ mapped_item.mapping_source.mapped_representation)))))) OR (( ('TECHNICAL_DATA_PACKAGING.' + 'CAMERA_IMAGE_3D_WITH_SCALE') IN TYPEOF(it2)) AND (NOT (('TECHNICAL_DATA_PACKAGING.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION') IN TYPEOF(it2\mapped_item.mapping_source. mapped_representation))))) )) = 0)) )) = 0); wr3: ((SIZEOF(QUERY ( ps <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ( ('TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF(ps)) AND (ps.size\planar_extent.size_in_x <= 0) OR (ps.size\ planar_extent.size_in_y <= 0)) )) = 0) AND (SIZEOF( QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF(ais)) AND (SIZEOF( QUERY ( ps <* USEDIN(ais,'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent. size_in_x <= 0) OR (ps.size\planar_extent.size_in_y <= 0)) )) > 0) )) = 0)); wr4: (((SIZEOF(QUERY ( ps <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF(ps)) AND (('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_2D') IN TYPEOF(ps.size.placement)) )) = 1) AND (SIZEOF( QUERY ( ps <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF(ps)) AND (('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_3D') IN TYPEOF(ps.size.placement)) )) = 0)) OR ((SIZEOF( QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') |( 'TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF (ais)) AND (SIZEOF( QUERY ( ps <* USEDIN(ais,'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | (('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_2D') IN TYPEOF(ps.size.placement)) )) = 1) )) = 1) AND (SIZEOF(QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') | ( 'TECHNICAL_DATA_PACKAGING.PRESENTATION_AREA' IN TYPEOF(ais)) AND (SIZEOF(QUERY ( ps <* USEDIN(ais, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | (( 'TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_3D') IN TYPEOF(ps.size.placement)) )) = 0) )) = 1))); END_ENTITY; -- mechanical_design_geometric_presentation_area ENTITY mechanical_design_geometric_presentation_representation SUBTYPE OF (representation); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT', 'TECHNICAL_DATA_PACKAGING.CAMERA_MODEL_D3'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'SHAPE_REPRESENTATION','TECHNICAL_DATA_PACKAGING.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] * TYPEOF(mi\mapped_item.mapping_source. mapped_representation)) = 1)) )) = 0); wr3 : (SIZEOF(QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items | ('TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(si\ styled_item.item)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.' + 'SHAPE_REPRESENTATION') IN TYPEOF(smi\styled_item.item\ mapped_item.mapping_source.mapped_representation))) )) = 0); wr4 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( pss <* psa.styles | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.POINT_STYLE', 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE', 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE'] * TYPEOF( pss)) = 1)) )) = 0)) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psbc <* QUERY ( psa <* si\styled_item. styles | (('TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_STYLE_BY_CONTEXT') IN TYPEOF(psa)) ) | (NOT ( SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'REPRESENTATION_ITEM', 'TECHNICAL_DATA_PACKAGING.REPRESENTATION'] * TYPEOF(psbc\ presentation_style_by_context.style_context)) = 1)) )) = 0)) )) = 0); wr6 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ps <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.POINT_STYLE' IN TYPEOF(pss)) ) | (NOT ((('TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(ps\point_style. marker_size)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ps\point_style. marker_colour)) = 1))) )) = 0)) )) = 0)) )) = 0); wr7 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( cs <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(pss)) ) | (NOT ((SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(cs\curve_style. curve_colour)) = 1) AND (('TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(cs\curve_style. curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(cs\ curve_style.curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0); wr8 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.' + 'SURFACE_SIDE_STYLE') IN TYPEOF(ssu\surface_style_usage. style))) )) = 0)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_PARAMETER_LINE','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_CONTROL_GRID','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SILHOUETTE','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SEGMENTATION_CURVE', 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_FILL_AREA', 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_BOUNDARY'] * TYPEOF(sses)) = 1)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr10: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sspl <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_PARAMETER_LINE') IN TYPEOF(sses)) ) | (NOT ( ('TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines\ curve_style.curve_colour)) = 1) AND (( 'TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(sspl\surface_style_parameter_line. style_of_parameter_lines\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines\ curve_style.curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr11: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sscg <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_CONTROL_GRID') IN TYPEOF(sses)) ) | (NOT (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid\ curve_style.curve_colour)) = 1) AND (( 'TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(sscg\surface_style_control_grid. style_of_control_grid\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid\ curve_style.curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr12: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sssh <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SILHOUETTE') IN TYPEOF(sses)) ) | (NOT (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette)) AND (SIZEOF( ['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\curve_style. curve_colour)) = 1) AND (('TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\curve_style. curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\curve_style. curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr13: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sssc <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SEGMENTATION_CURVE') IN TYPEOF(sses)) ) | ( NOT (('TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sssc \surface_style_segmentation_curve. style_of_segmentation_curve)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssc\ surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_colour)) = 1) AND (('TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(sssc\ surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssc\ surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr14: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( ssbd <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_BOUNDARY') IN TYPEOF(sses)) ) | (NOT (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(ssbd\ surface_style_boundary.style_of_boundary)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\curve_style. curve_colour)) = 1) AND (('TECHNICAL_DATA_PACKAGING.' + 'POSITIVE_LENGTH_MEASURE') IN TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\curve_style. curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\curve_style. curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0); END_ENTITY; -- mechanical_design_geometric_presentation_representation ENTITY mechanical_design_shaded_presentation_area SUBTYPE OF (presentation_area); WHERE wr1: (SIZEOF(QUERY ( it1 <* SELF.items | (NOT (( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR (('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it1)) AND ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF( it1\mapped_item.mapping_source.mapped_representation))))) )) = 0); wr2: (SIZEOF(QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it1)) ) | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF( mi1\mapped_item.mapping_source.mapped_representation)) ) | ( NOT (SIZEOF(QUERY ( it2 <* pv\mapped_item.mapping_source. mapped_representation\representation.items | ( ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF(pv)) AND(NOT (( 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(it2)) OR (('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it2)) AND (NOT (('TECHNICAL_DATA_PACKAGING.' + 'CAMERA_IMAGE_3D_WITH_SCALE') IN TYPEOF(it2))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF(it2\ mapped_item.mapping_source.mapped_representation)))))) OR (( ('TECHNICAL_DATA_PACKAGING.' + 'CAMERA_IMAGE_3D_WITH_SCALE') IN TYPEOF(it2)) AND (NOT (('TECHNICAL_DATA_PACKAGING.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION') IN TYPEOF(it2\mapped_item.mapping_source.mapped_representation)) ))) )) = 0)) )) = 0); wr3: ((SIZEOF(QUERY ( ps <* USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | (NOT ((ps.size\planar_extent. size_in_x > 0) AND (ps.size\planar_extent.size_in_y > 0))) )) = 0) AND (SIZEOF(QUERY ( pset <* QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') | (( 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SET') IN TYPEOF( ais.in_set)) ) | (SIZEOF(QUERY ( psize <* USEDIN(pset, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ( NOT ((psize.size\planar_extent.size_in_x > 0) AND (psize. size\planar_extent.size_in_y > 0))) )) = 0) )) = 0)); wr4: ((SIZEOF(QUERY ( psize <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | (( 'TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_2D') IN TYPEOF(psize.size.placement)) )) = 1) AND (SIZEOF( QUERY ( pset <* QUERY ( ais <* USEDIN(SELF, 'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') | (( 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SET') IN TYPEOF( ais.in_set)) ) | (SIZEOF(QUERY ( psize <* USEDIN(pset, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT') | ( NOT (('TECHNICAL_DATA_PACKAGING.' + 'AXIS2_PLACEMENT_2D') IN TYPEOF(psize.size.placement))) )) = 0) )) = 0)); wr5: (SIZEOF(QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it1)) ) | ('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF( mi1\mapped_item.mapping_source.mapped_representation)) ) | ( NOT (SIZEOF(QUERY ( ci <* pv\mapped_item.mapping_source. mapped_representation\representation.items | (('TECHNICAL_DATA_PACKAGING.PRESENTATION_VIEW' IN TYPEOF(pv)) AND(( 'TECHNICAL_DATA_PACKAGING.' + 'CAMERA_IMAGE_3D_WITH_SCALE') IN TYPEOF(ci)) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'CAMERA_MODEL_D3','TECHNICAL_DATA_PACKAGING.' + 'CAMERA_MODEL_D3_WITH_HLHSR','TECHNICAL_DATA_PACKAGING.' + '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); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT', 'TECHNICAL_DATA_PACKAGING.CAMERA_MODEL_D3'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'SHAPE_REPRESENTATION','TECHNICAL_DATA_PACKAGING.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) = 1)) )) = 0); wr3 : (SIZEOF(QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items | ('TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ('TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(si\ styled_item.item)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.' + 'SHAPE_REPRESENTATION') IN TYPEOF(smi\styled_item.item\ mapped_item.mapping_source.mapped_representation))) )) = 0); wr4 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( pss <* psa.styles | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.POINT_STYLE', 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE', 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE'] * TYPEOF( pss)) = 1)) )) = 0)) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psbc <* QUERY ( psa <* si\styled_item. styles | (('TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_STYLE_BY_CONTEXT') IN TYPEOF(psa)) ) | (NOT ( SIZEOF(['TECHNICAL_DATA_PACKAGING.REPRESENTATION_ITEM', 'TECHNICAL_DATA_PACKAGING.REPRESENTATION'] * TYPEOF(psbc\ presentation_style_by_context.style_context)) = 1)) )) = 0)) )) = 0); wr6 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ps <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.POINT_STYLE' IN TYPEOF(pss)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.MARKER_TYPE' IN TYPEOF(ps\ point_style.marker)) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(ps\point_style.marker_size)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ps\point_style. marker_colour)) = 1))) )) = 0)) )) = 0)) )) = 0); wr7 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( cs <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(pss)) ) | (NOT ((SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(cs\curve_style. curve_colour)) = 1) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs\curve_style.curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(cs\ curve_style.curve_font)) = 1))) )) = 0)) )) = 0)) )) = 0); wr8 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT ( 'TECHNICAL_DATA_PACKAGING.SURFACE_SIDE_STYLE' IN TYPEOF(ssu \surface_style_usage.style))) )) = 0)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_PARAMETER_LINE','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_CONTROL_GRID','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SILHOUETTE','TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SEGMENTATION_CURVE', 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_BOUNDARY', 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_FILL_AREA', 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_RENDERING'] * TYPEOF(sses)) = 1)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr10: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( ssfa <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_FILL_AREA' IN TYPEOF(sses)) ) | (NOT (SIZEOF(QUERY ( fss <* ssfa\ surface_style_fill_area.fill_area.fill_styles | (NOT ((( 'TECHNICAL_DATA_PACKAGING.' + 'FILL_AREA_STYLE_COLOUR') IN TYPEOF(fss)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(fss\ fill_area_style_colour.fill_colour)) = 1))) )) = 0)) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr11: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sspl <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_PARAMETER_LINE') IN TYPEOF(sses)) ) | (NOT ( (('TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines\ curve_style.curve_colour)) = 1) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sspl\surface_style_parameter_line. style_of_parameter_lines\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sspl\ surface_style_parameter_line.style_of_parameter_lines\ curve_style.curve_font)) = 1)) OR (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_RENDERING' IN TYPEOF( sspl\surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + '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); wr12: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sscg <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_CONTROL_GRID') IN TYPEOF(sses)) ) | (NOT ((( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid\ curve_style.curve_colour)) = 1) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sscg\surface_style_control_grid. style_of_control_grid\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sscg\ surface_style_control_grid.style_of_control_grid\ curve_style.curve_font)) = 1)) OR (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_RENDERING' IN TYPEOF( sscg\surface_style_control_grid.style_of_control_grid)) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + '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); wr13: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sssh <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SILHOUETTE') IN TYPEOF(sses)) ) | (NOT ((( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette)) AND (SIZEOF( ['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\curve_style. curve_colour)) = 1) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\ curve_style.curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\curve_style. curve_font)) = 1)) OR (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_RENDERING' IN TYPEOF( sssh\surface_style_silhouette.style_of_silhouette)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssh\ surface_style_silhouette.style_of_silhouette\ curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr14: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( sssc <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_SEGMENTATION_CURVE') IN TYPEOF(sses)) ) | ( NOT ((('TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF( sssc\surface_style_segmentation_curve. style_of_segmentation_curve)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssc\ surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_colour)) = 1) AND ('TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssc\surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_width)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssc\ surface_style_segmentation_curve. style_of_segmentation_curve\curve_style.curve_font)) = 1)) OR (('TECHNICAL_DATA_PACKAGING.CURVE_STYLE_RENDERING' IN TYPEOF(sssc\surface_style_segmentation_curve. style_of_segmentation_curve)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + '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); wr15: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( ssbd <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_BOUNDARY') IN TYPEOF(sses)) ) | (NOT ((( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE' IN TYPEOF(ssbd\ surface_style_boundary.style_of_boundary)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\curve_style. curve_colour)) = 1) AND ( 'TECHNICAL_DATA_PACKAGING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary\ curve_style.curve_width)) AND (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.' + 'CURVE_STYLE_FONT', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\curve_style. curve_font)) = 1)) OR (( 'TECHNICAL_DATA_PACKAGING.CURVE_STYLE_RENDERING' IN TYPEOF( ssbd\surface_style_boundary.style_of_boundary)) AND ( SIZEOF(['TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ssbd\ surface_style_boundary.style_of_boundary\ curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr16: (SIZEOF(QUERY ( si <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.STYLED_ITEM' IN TYPEOF(it)) ) | ( NOT (SIZEOF(QUERY ( psa <* si\styled_item.styles | (NOT ( SIZEOF(QUERY ( ssu <* QUERY ( pss <* psa.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( pss)) ) | (NOT (SIZEOF(QUERY ( ssre <* QUERY ( sses <* ssu\ surface_style_usage.style\surface_side_style.styles | (( 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_RENDERING') IN TYPEOF(sses)) ) | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.COLOUR_RGB', 'TECHNICAL_DATA_PACKAGING.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ssre\ surface_style_rendering.surface_colour)) = 1)) )) = 0)) )) = 0)) )) = 0)) )) = 0); END_ENTITY; -- mechanical_design_shaded_presentation_representation ENTITY name_attribute; attribute_value : label; named_item : name_attribute_select; END_ENTITY; -- name_attribute 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_intensity_unit,plane_angle_unit, solid_angle_unit,area_unit,volume_unit,ratio_unit)); dimensions : dimensional_exponents; END_ENTITY; -- named_unit ENTITY next_assembly_usage_occurrence SUBTYPE OF (assembly_component_usage); END_ENTITY; -- next_assembly_usage_occurrence ENTITY non_manifold_surface_shape_representation SUBTYPE OF (shape_representation); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.FACE_BASED_SURFACE_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.FACE_BASED_SURFACE_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0); wr3 : (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT ((('TECHNICAL_DATA_PACKAGING.' + '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 | ( 'TECHNICAL_DATA_PACKAGING.FACE_BASED_SURFACE_MODEL' IN TYPEOF(mr_it)) )) > 0))) )) = 0); wr4 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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([ 'TECHNICAL_DATA_PACKAGING.FACE_SURFACE', 'TECHNICAL_DATA_PACKAGING.ORIENTED_FACE'] * TYPEOF(fa)) = 1)) )) = 0)) )) = 0)) )) = 0); wr5 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.FACE_SURFACE' IN TYPEOF(fa)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.ORIENTED_FACE' IN TYPEOF(fa)) ) | (NOT (('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( bnds <* fa.bounds | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP', 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP'] * TYPEOF(bnds.bound)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr8 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe. edge_element))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds\ path.edge_list | ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(oe.edge_element)) ) | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA', 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D', 'TECHNICAL_DATA_PACKAGING.PCURVE', 'TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe. edge_element.edge_start)) AND ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(oe. edge_element.edge_end)))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr12: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ((SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_SURFACE'] * TYPEOF(oe. edge_element.edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT ('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF( vlp_fbnds\vertex_loop.loop_vertex))) )) = 0))) )) = 0)) )) = 0)) )) = 0); wr14: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.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 (( 'TECHNICAL_DATA_PACKAGING.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(['TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT', 'TECHNICAL_DATA_PACKAGING.DEGENERATE_PCURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE', 'TECHNICAL_DATA_PACKAGING.POINT_ON_SURFACE'] * TYPEOF( vlp_fbnds\vertex_loop.loop_vertex\vertex_point. vertex_geometry)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0); END_ENTITY; -- non_manifold_surface_shape_representation ENTITY object_role; name : label; description : OPTIONAL text; END_ENTITY; -- object_role ENTITY offset_curve_2d SUBTYPE OF (curve); basis_curve : curve; distance : length_measure; self_intersect : LOGICAL; WHERE wr1: (basis_curve.dim = 2); END_ENTITY; -- offset_curve_2d 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; -- offset_curve_3d ENTITY offset_surface SUBTYPE OF (surface); basis_surface : surface; distance : length_measure; self_intersect : LOGICAL; END_ENTITY; -- offset_surface ENTITY open_shell SUBTYPE OF (connected_face_set); END_ENTITY; -- open_shell ENTITY organization; id : OPTIONAL identifier; name : label; description : OPTIONAL text; END_ENTITY; -- organization ENTITY organization_assignment ABSTRACT SUPERTYPE; assigned_organization : organization; role : organization_role; END_ENTITY; -- organization_assignment ENTITY organization_relationship; name : label; description : OPTIONAL text; relating_organization : organization; related_organization : organization; END_ENTITY; -- organization_relationship ENTITY organization_role; name : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- organization_role ENTITY organizational_address SUBTYPE OF (address); organizations : SET [1:?] OF organization; description : OPTIONAL text; END_ENTITY; -- organizational_address 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,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- organizational_project ENTITY organizational_project_assignment ABSTRACT SUPERTYPE; assigned_organizational_project : organizational_project; role : organizational_project_role; END_ENTITY; -- organizational_project_assignment ENTITY organizational_project_relationship; name : label; description : OPTIONAL text; relating_organizational_project : organizational_project; related_organizational_project : organizational_project; END_ENTITY; -- organizational_project_relationship ENTITY organizational_project_role; name : label; description : OPTIONAL text; END_ENTITY; -- organizational_project_role 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 ('TECHNICAL_DATA_PACKAGING.ORIENTED_CLOSED_SHELL' IN TYPEOF(SELF.closed_shell_element))); END_ENTITY; -- oriented_closed_shell 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 ('TECHNICAL_DATA_PACKAGING.ORIENTED_EDGE' IN TYPEOF(SELF. edge_element))); END_ENTITY; -- oriented_edge 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 ('TECHNICAL_DATA_PACKAGING.ORIENTED_FACE' IN TYPEOF(SELF. face_element))); END_ENTITY; -- oriented_face 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 ('TECHNICAL_DATA_PACKAGING.ORIENTED_OPEN_SHELL' IN TYPEOF( SELF.open_shell_element))); END_ENTITY; -- oriented_open_shell 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 ('TECHNICAL_DATA_PACKAGING.ORIENTED_PATH' IN TYPEOF(SELF. path_element))); END_ENTITY; -- oriented_path ENTITY oriented_surface SUBTYPE OF (surface); orientation : BOOLEAN; END_ENTITY; -- oriented_surface ENTITY other_list_table_representation SUBTYPE OF (representation); END_ENTITY; -- other_list_table_representation ENTITY outer_boundary_curve SUBTYPE OF (boundary_curve); END_ENTITY; -- outer_boundary_curve ENTITY over_riding_styled_item SUBTYPE OF (styled_item); over_ridden_style : styled_item; END_ENTITY; -- over_riding_styled_item ENTITY parabola SUBTYPE OF (conic); focal_dist : length_measure; WHERE wr1: (focal_dist <> 0); END_ENTITY; -- parabola ENTITY parametric_representation_context SUBTYPE OF (representation_context); END_ENTITY; -- parametric_representation_context 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; -- path ENTITY pcurve SUBTYPE OF (curve); basis_surface : surface; reference_to_curve : definitional_representation; WHERE wr1: (SIZEOF(reference_to_curve\representation.items) = 1); wr2: ('TECHNICAL_DATA_PACKAGING.CURVE' IN TYPEOF(reference_to_curve\ representation.items[1])); wr3: (reference_to_curve\representation.items[1]\ geometric_representation_item.dim = 2); END_ENTITY; -- pcurve 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; -- person 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,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- person_and_organization ENTITY person_and_organization_assignment ABSTRACT SUPERTYPE; assigned_person_and_organization : person_and_organization; role : person_and_organization_role; END_ENTITY; -- person_and_organization_assignment ENTITY person_and_organization_role; name : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- person_and_organization_role ENTITY personal_address SUBTYPE OF (address); people : SET [1:?] OF person; description : OPTIONAL text; END_ENTITY; -- personal_address ENTITY placement SUPERTYPE OF (ONEOF (axis1_placement,axis2_placement_2d, axis2_placement_3d)) SUBTYPE OF (geometric_representation_item); location : cartesian_point; END_ENTITY; -- placement ENTITY planar_box SUBTYPE OF (planar_extent); placement : axis2_placement; END_ENTITY; -- planar_box ENTITY planar_extent SUBTYPE OF (geometric_representation_item); size_in_x : length_measure; size_in_y : length_measure; END_ENTITY; -- planar_extent ENTITY plane SUBTYPE OF (elementary_surface); END_ENTITY; -- plane ENTITY plane_angle_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- plane_angle_measure_with_unit ENTITY plane_angle_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- plane_angle_unit ENTITY point SUPERTYPE OF (ONEOF (cartesian_point,point_on_curve,point_on_surface, point_replica,degenerate_pcurve)) SUBTYPE OF (geometric_representation_item); END_ENTITY; -- point ENTITY point_on_curve SUBTYPE OF (point); basis_curve : curve; point_parameter : parameter_value; END_ENTITY; -- point_on_curve ENTITY point_on_surface SUBTYPE OF (point); basis_surface : surface; point_parameter_u : parameter_value; point_parameter_v : parameter_value; END_ENTITY; -- point_on_surface 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; -- point_replica ENTITY point_style; name : label; marker : marker_select; marker_size : size_select; marker_colour : colour; END_ENTITY; -- point_style ENTITY poly_loop SUBTYPE OF (loop, geometric_representation_item); polygon : LIST [3:?] OF UNIQUE cartesian_point; END_ENTITY; -- poly_loop ENTITY polyline SUBTYPE OF (bounded_curve); points : LIST [2:?] OF cartesian_point; END_ENTITY; -- polyline ENTITY pre_defined_character_glyph SUBTYPE OF (pre_defined_item); END_ENTITY; -- pre_defined_character_glyph ENTITY pre_defined_colour SUBTYPE OF (pre_defined_item, colour); END_ENTITY; -- pre_defined_colour ENTITY pre_defined_curve_font SUBTYPE OF (pre_defined_item); END_ENTITY; -- pre_defined_curve_font ENTITY pre_defined_item; name : label; END_ENTITY; -- pre_defined_item ENTITY pre_defined_text_font SUBTYPE OF (pre_defined_item); END_ENTITY; -- pre_defined_text_font ENTITY precision_qualifier; precision_value : INTEGER; END_ENTITY; -- precision_qualifier ENTITY presentation_area SUBTYPE OF (presentation_representation); WHERE wr1: ((SIZEOF(QUERY ( ais <* USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'AREA_IN_SET.AREA') | (SIZEOF(USEDIN(ais, 'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT')) = 1) )) > 0) OR (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_SIZE.UNIT')) = 1)); END_ENTITY; -- presentation_area ENTITY presentation_representation SUBTYPE OF (representation); WHERE wr1: (SELF\representation.context_of_items\ geometric_representation_context.coordinate_space_dimension = 2); wr2: ('TECHNICAL_DATA_PACKAGING.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items)); END_ENTITY; -- presentation_representation ENTITY presentation_set; INVERSE areas : SET [1:?] OF area_in_set FOR in_set; END_ENTITY; -- presentation_set ENTITY presentation_size; unit : presentation_size_assignment_select; size : planar_box; WHERE wr1: ((('TECHNICAL_DATA_PACKAGING.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF.unit)) AND item_in_context(SELF.size,SELF.unit\ representation.context_of_items)) OR (( 'TECHNICAL_DATA_PACKAGING.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; -- presentation_size ENTITY presentation_style_assignment; 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([ 'TECHNICAL_DATA_PACKAGING.' + 'SURFACE_STYLE_USAGE', 'TECHNICAL_DATA_PACKAGING.' + 'EXTERNALLY_DEFINED_STYLE'] * TYPEOF(style1)) = 1))) )) = 0)) )) = 0); wr2: (SIZEOF(QUERY ( style1 <* SELF.styles | ( 'TECHNICAL_DATA_PACKAGING.SURFACE_STYLE_USAGE' IN TYPEOF( style1)) )) <= 2); END_ENTITY; -- presentation_style_assignment ENTITY presentation_style_by_context SUBTYPE OF (presentation_style_assignment); style_context : style_context_select; END_ENTITY; -- presentation_style_by_context ENTITY presentation_view SUBTYPE OF (presentation_representation); END_ENTITY; -- presentation_view ENTITY presented_item ABSTRACT SUPERTYPE; END_ENTITY; -- presented_item ENTITY presented_item_representation; presentation : presentation_representation_select; item : presented_item; END_ENTITY; -- presented_item_representation ENTITY process_product_association; name : label; description : text; defined_product : characterized_product_definition; process : product_definition_process; END_ENTITY; -- process_product_association ENTITY product; id : identifier; name : label; description : OPTIONAL text; frame_of_reference : SET [1:?] OF product_context; END_ENTITY; -- product ENTITY product_category; name : label; description : OPTIONAL text; DERIVE id : identifier := get_id_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- product_category 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; -- product_category_relationship ENTITY product_concept; id : identifier; name : label; description : OPTIONAL text; market_context : product_concept_context; UNIQUE ur1 : id; END_ENTITY; -- product_concept ENTITY product_concept_context SUBTYPE OF (application_context_element); market_segment_type : label; END_ENTITY; -- product_concept_context ENTITY product_context SUBTYPE OF (application_context_element); discipline_type : label; END_ENTITY; -- product_context ENTITY product_definition; id : identifier; description : OPTIONAL text; formation : product_definition_formation; frame_of_reference : product_definition_context; DERIVE name : label := get_name_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- product_definition ENTITY product_definition_context SUBTYPE OF (application_context_element); life_cycle_stage : label; END_ENTITY; -- product_definition_context ENTITY product_definition_context_association; definition : product_definition; frame_of_reference : product_definition_context; role : product_definition_context_role; END_ENTITY; -- product_definition_context_association ENTITY product_definition_context_role; name : label; description : OPTIONAL text; END_ENTITY; -- product_definition_context_role ENTITY product_definition_effectivity SUBTYPE OF (effectivity); usage : product_definition_relationship; WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0); END_ENTITY; -- product_definition_effectivity ENTITY product_definition_formation; id : identifier; description : OPTIONAL text; of_product : product; UNIQUE ur1 : id, of_product; END_ENTITY; -- product_definition_formation 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; -- product_definition_formation_relationship ENTITY product_definition_formation_with_specified_source SUBTYPE OF (product_definition_formation); make_or_buy : source; END_ENTITY; -- product_definition_formation_with_specified_source 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; -- product_definition_occurrence_relationship ENTITY product_definition_process SUBTYPE OF (action); identification : identifier; INVERSE product_definitions : SET [1:?] OF process_product_association FOR process; END_ENTITY; -- product_definition_process ENTITY product_definition_relationship; id : identifier; name : label; description : OPTIONAL text; relating_product_definition : product_definition; related_product_definition : product_definition; END_ENTITY; -- product_definition_relationship ENTITY product_definition_shape SUBTYPE OF (property_definition); UNIQUE ur1 : definition; WHERE wr1: (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.CHARACTERIZED_PRODUCT_DEFINITION', 'TECHNICAL_DATA_PACKAGING.CHARACTERIZED_OBJECT'] * TYPEOF( SELF\property_definition.definition)) > 0); END_ENTITY; -- product_definition_shape 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,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- product_definition_substitute ENTITY product_definition_usage SUPERTYPE OF (ONEOF (make_from_usage_option,assembly_component_usage)) SUBTYPE OF (product_definition_relationship); UNIQUE ur1 : id, relating_product_definition, related_product_definition; WHERE wr1: acyclic_product_definition_relationship(SELF,[SELF\ product_definition_relationship.related_product_definition], 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_USAGE'); END_ENTITY; -- product_definition_usage ENTITY product_definition_with_associated_documents SUBTYPE OF (product_definition); documentation_ids : SET [1:?] OF document; END_ENTITY; -- product_definition_with_associated_documents ENTITY product_related_product_category SUBTYPE OF (product_category); products : SET [1:?] OF product; END_ENTITY; -- product_related_product_category ENTITY product_relationship; id : identifier; name : label; description : OPTIONAL text; relating_product : product; related_product : product; END_ENTITY; -- product_relationship ENTITY promissory_usage_occurrence SUBTYPE OF (assembly_component_usage); END_ENTITY; -- promissory_usage_occurrence ENTITY property_definition; name : label; description : OPTIONAL text; definition : characterized_definition; DERIVE id : identifier := get_id_value(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- property_definition ENTITY property_definition_relationship; name : label; description : text; relating_property_definition : property_definition; related_property_definition : property_definition; END_ENTITY; -- property_definition_relationship 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,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1); END_ENTITY; -- property_definition_representation ENTITY qualified_representation_item SUBTYPE OF (representation_item); qualifiers : SET [1:?] OF value_qualifier; WHERE wr1: (SIZEOF(QUERY ( temp <* qualifiers | ( 'TECHNICAL_DATA_PACKAGING.PRECISION_QUALIFIER' IN TYPEOF( temp)) )) < 2); END_ENTITY; -- qualified_representation_item 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; -- quantified_assembly_component_usage ENTITY quasi_uniform_curve SUBTYPE OF (b_spline_curve); END_ENTITY; -- quasi_uniform_curve ENTITY quasi_uniform_surface SUBTYPE OF (b_spline_surface); END_ENTITY; -- quasi_uniform_surface ENTITY ratio_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.RATIO_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- ratio_measure_with_unit ENTITY ratio_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- ratio_unit 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; -- rational_b_spline_curve 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; -- rational_b_spline_surface 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; -- rectangular_composite_surface 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: ((('TECHNICAL_DATA_PACKAGING.ELEMENTARY_SURFACE' IN TYPEOF( basis_surface)) AND (NOT ('TECHNICAL_DATA_PACKAGING.PLANE' IN TYPEOF(basis_surface)))) OR ( 'TECHNICAL_DATA_PACKAGING.SURFACE_OF_REVOLUTION' IN TYPEOF( basis_surface)) OR (usense = (u2 > u1))); wr4: (('TECHNICAL_DATA_PACKAGING.SPHERICAL_SURFACE' IN TYPEOF( basis_surface)) OR ( 'TECHNICAL_DATA_PACKAGING.TOROIDAL_SURFACE' IN TYPEOF( basis_surface)) OR (vsense = (v2 > v1))); END_ENTITY; -- rectangular_trimmed_surface ENTITY relative_event_occurrence SUBTYPE OF (event_occurrence); base_event : event_occurrence; offset : time_measure_with_unit; END_ENTITY; -- relative_event_occurrence ENTITY reparametrised_composite_curve_segment SUBTYPE OF (composite_curve_segment); param_length : parameter_value; WHERE wr1: (param_length > 0); END_ENTITY; -- reparametrised_composite_curve_segment 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,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); wr2: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1); END_ENTITY; -- representation ENTITY representation_context; context_identifier : identifier; context_type : text; INVERSE representations_in_context : SET [1:?] OF representation FOR context_of_items; END_ENTITY; -- representation_context ENTITY representation_item; name : label; WHERE wr1: (SIZEOF(using_representations(SELF)) > 0); END_ENTITY; -- representation_item ENTITY representation_item_relationship; name : label; description : OPTIONAL text; relating_representation_item : representation_item; related_representation_item : representation_item; END_ENTITY; -- representation_item_relationship 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; -- representation_map ENTITY representation_relationship; name : label; description : OPTIONAL text; rep_1 : representation; rep_2 : representation; END_ENTITY; -- representation_relationship 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; -- representation_relationship_with_transformation 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)); END_ENTITY; -- revolved_face_solid 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 <= ltx) AND (ltx < x)); END_ENTITY; -- right_angular_wedge 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); END_ENTITY; -- right_circular_cone ENTITY right_circular_cylinder SUBTYPE OF (geometric_representation_item); position : axis1_placement; height : positive_length_measure; radius : positive_length_measure; END_ENTITY; -- right_circular_cylinder ENTITY role_association; role : object_role; item_with_role : role_select; END_ENTITY; -- role_association 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: ('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(SELF\surface_curve .associated_geometry[1])); wr4: ('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(SELF\surface_curve .associated_geometry[2])); END_ENTITY; -- seam_curve ENTITY security_classification; name : label; purpose : text; security_level : security_classification_level; END_ENTITY; -- security_classification ENTITY security_classification_assignment ABSTRACT SUPERTYPE; assigned_security_classification : security_classification; DERIVE role : object_role := get_role(SELF); WHERE wr1: (SIZEOF(USEDIN(SELF,'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1); END_ENTITY; -- security_classification_assignment ENTITY security_classification_level; name : label; END_ENTITY; -- security_classification_level ENTITY serial_numbered_effectivity SUBTYPE OF (effectivity); effectivity_start_id : identifier; effectivity_end_id : OPTIONAL identifier; END_ENTITY; -- serial_numbered_effectivity 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,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- shape_aspect 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,'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1); END_ENTITY; -- shape_aspect_relationship ENTITY shape_definition_representation SUBTYPE OF (property_definition_representation); WHERE wr1: (('TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ( 'TECHNICAL_DATA_PACKAGING.SHAPE_DEFINITION' IN TYPEOF(SELF. definition.definition))); wr2: ('TECHNICAL_DATA_PACKAGING.SHAPE_REPRESENTATION' IN TYPEOF(SELF .used_representation)); END_ENTITY; -- shape_definition_representation ENTITY shape_representation SUBTYPE OF (representation); END_ENTITY; -- shape_representation ENTITY shape_representation_relationship SUBTYPE OF (representation_relationship); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.SHAPE_REPRESENTATION' IN (TYPEOF( SELF\representation_relationship.rep_1) + TYPEOF(SELF\ representation_relationship.rep_2))); END_ENTITY; -- shape_representation_relationship 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; -- shell_based_surface_model 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; -- shell_based_wireframe_model ENTITY shell_based_wireframe_shape_representation SUBTYPE OF (shape_representation); WHERE wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0); wr2 : (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL', 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) >= 1); wr3 : (SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path. edge_list | (NOT ('TECHNICAL_DATA_PACKAGING.EDGE_CURVE' IN TYPEOF(el.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr4 : (SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( pline_el <* QUERY ( el <* eloop\path.edge_list | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.EDGE_LOOP' IN TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path. edge_list | (NOT (('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(el.edge_element.edge_start)) AND ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(el. edge_element.edge_end)))) )) = 0)) )) = 0)) )) = 0)) )) = 0); wr7 : (SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.VERTEX_LOOP' IN TYPEOF(wsb)) ) | (NOT ( 'TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(vloop\ vertex_loop.loop_vertex))) )) = 0)) )) = 0)) )) = 0); wr9 : (SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(sb)) ) | ( NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell. wire_shell_extent | ('TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.VERTEX_SHELL' IN TYPEOF(sb)) ) | (NOT ('TECHNICAL_DATA_PACKAGING.VERTEX_POINT' IN TYPEOF(vs\ vertex_shell.vertex_shell_extent.loop_vertex))) )) = 0)) )) = 0); wr11: (SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'TECHNICAL_DATA_PACKAGING.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary | ( 'TECHNICAL_DATA_PACKAGING.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 | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(it)) ) | ( NOT (('TECHNICAL_DATA_PACKAGING.' + '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; -- shell_based_wireframe_shape_representation 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); END_ENTITY; -- si_unit ENTITY solid_angle_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- solid_angle_measure_with_unit ENTITY solid_angle_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- solid_angle_unit ENTITY solid_model SUPERTYPE OF (ONEOF (csg_solid,manifold_solid_brep,swept_face_solid, solid_replica)) SUBTYPE OF (geometric_representation_item); END_ENTITY; -- solid_model 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; -- solid_replica 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, 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION') | (pdr. relating_product_definition :=: next_usage. relating_product_definition) )) = 1)); wr5: (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.NEXT_ASSEMBLY_USAGE_OCCURRENCE' ,'TECHNICAL_DATA_PACKAGING.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] * TYPEOF(upper_usage)) = 1); END_ENTITY; -- specified_higher_usage_occurrence ENTITY sphere SUBTYPE OF (geometric_representation_item); radius : positive_length_measure; centre : point; END_ENTITY; -- sphere ENTITY spherical_surface SUBTYPE OF (elementary_surface); radius : positive_length_measure; END_ENTITY; -- spherical_surface 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 (('TECHNICAL_DATA_PACKAGING.' + 'PRESENTATION_STYLE_BY_CONTEXT') IN TYPEOF(pres_style))) )) = 0)); END_ENTITY; -- styled_item ENTITY surface SUPERTYPE OF (ONEOF (elementary_surface,swept_surface,bounded_surface, offset_surface,surface_replica)) SUBTYPE OF (geometric_representation_item); END_ENTITY; -- surface 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: (('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF( associated_geometry[1])) OR (master_representation <> pcurve_s1)); wr3: (('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF( associated_geometry[2])) OR (master_representation <> pcurve_s2)); wr4: (NOT ('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(curve_3d))); END_ENTITY; -- surface_curve ENTITY surface_of_linear_extrusion SUBTYPE OF (swept_surface); extrusion_axis : vector; END_ENTITY; -- surface_of_linear_extrusion 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)); END_ENTITY; -- surface_of_revolution 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 ('TECHNICAL_DATA_PACKAGING.CURVE_BOUNDED_SURFACE' IN TYPEOF(parent_surface))); END_ENTITY; -- surface_patch ENTITY surface_rendering_properties; rendered_colour : colour; END_ENTITY; -- surface_rendering_properties ENTITY surface_replica SUBTYPE OF (surface); parent_surface : surface; transformation : cartesian_transformation_operator_3d; WHERE wr1: acyclic_surface_replica(SELF,parent_surface); END_ENTITY; -- surface_replica ENTITY surface_side_style; 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; -- surface_side_style ENTITY surface_style_boundary; style_of_boundary : curve_or_render; END_ENTITY; -- surface_style_boundary ENTITY surface_style_control_grid; style_of_control_grid : curve_or_render; END_ENTITY; -- surface_style_control_grid ENTITY surface_style_fill_area; fill_area : fill_area_style; END_ENTITY; -- surface_style_fill_area ENTITY surface_style_parameter_line; 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; -- surface_style_parameter_line ENTITY surface_style_reflectance_ambient; ambient_reflectance : REAL; END_ENTITY; -- surface_style_reflectance_ambient ENTITY surface_style_reflectance_ambient_diffuse SUBTYPE OF (surface_style_reflectance_ambient); diffuse_reflectance : REAL; END_ENTITY; -- surface_style_reflectance_ambient_diffuse 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; -- surface_style_reflectance_ambient_diffuse_specular ENTITY surface_style_rendering; rendering_method : shading_surface_method; surface_colour : colour; END_ENTITY; -- surface_style_rendering 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; -- surface_style_rendering_with_properties ENTITY surface_style_segmentation_curve; style_of_segmentation_curve : curve_or_render; END_ENTITY; -- surface_style_segmentation_curve ENTITY surface_style_silhouette; style_of_silhouette : curve_or_render; END_ENTITY; -- surface_style_silhouette ENTITY surface_style_transparent; transparency : REAL; WHERE wr1: ((0 <= transparency) AND (transparency <= 1)); END_ENTITY; -- surface_style_transparent ENTITY surface_style_usage; side : surface_side; style : surface_side_style_select; END_ENTITY; -- surface_style_usage ENTITY swept_face_solid SUPERTYPE OF (ONEOF (extruded_face_solid,revolved_face_solid)) SUBTYPE OF (solid_model); swept_face : face_surface; WHERE wr1: ('TECHNICAL_DATA_PACKAGING.PLANE' IN TYPEOF(swept_face. face_geometry)); END_ENTITY; -- swept_face_solid ENTITY swept_surface SUPERTYPE OF (ONEOF (surface_of_linear_extrusion,surface_of_revolution)) SUBTYPE OF (surface); swept_curve : curve; END_ENTITY; -- swept_surface ENTITY symbol_representation SUBTYPE OF (representation); END_ENTITY; -- symbol_representation 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; -- text_literal ENTITY text_string_representation SUBTYPE OF (representation); WHERE wr1: (SIZEOF(QUERY ( item <* SELF\representation.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.TEXT_LITERAL', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT_CHARACTER', 'TECHNICAL_DATA_PACKAGING.DEFINED_CHARACTER_GLYPH', 'TECHNICAL_DATA_PACKAGING.COMPOSITE_TEXT', 'TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT'] * TYPEOF(item)) = 0) )) = 0); wr2: (SIZEOF(QUERY ( item <* SELF\representation.items | (NOT ( SIZEOF(['TECHNICAL_DATA_PACKAGING.TEXT_LITERAL', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT', 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT_CHARACTER', 'TECHNICAL_DATA_PACKAGING.DEFINED_CHARACTER_GLYPH', 'TECHNICAL_DATA_PACKAGING.COMPOSITE_TEXT'] * TYPEOF(item)) = 0)) )) >= 1); wr3: (SIZEOF(QUERY ( a2p <* QUERY ( item <* SELF\representation. items | ('TECHNICAL_DATA_PACKAGING.AXIS2_PLACEMENT' IN TYPEOF(item)) ) | (NOT ((SIZEOF(QUERY ( at <* QUERY ( item <* SELF\representation.items | (( 'TECHNICAL_DATA_PACKAGING.' + 'ANNOTATION_TEXT') IN TYPEOF( item)) ) | (at\mapped_item.mapping_target :=: a2p) )) >= 1) OR (SIZEOF(QUERY ( atc <* QUERY ( item <* SELF\ representation.items | (('TECHNICAL_DATA_PACKAGING.' + 'ANNOTATION_TEXT_CHARACTER') IN TYPEOF(item)) ) | (atc\ mapped_item.mapping_target :=: a2p) )) >= 1))) )) = 0); END_ENTITY; -- text_string_representation ENTITY text_style; name : label; character_appearance : character_style_select; END_ENTITY; -- text_style ENTITY text_style_for_defined_font; text_colour : colour; END_ENTITY; -- text_style_for_defined_font ENTITY thermodynamic_temperature_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component)); END_ENTITY; -- thermodynamic_temperature_measure_with_unit ENTITY thermodynamic_temperature_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 1) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- thermodynamic_temperature_unit ENTITY time_interval; id : identifier; name : label; description : OPTIONAL text; END_ENTITY; -- time_interval ENTITY time_interval_based_effectivity SUBTYPE OF (effectivity); effectivity_period : time_interval; END_ENTITY; -- time_interval_based_effectivity ENTITY time_interval_relationship; name : label; description : OPTIONAL text; relating_time_interval : time_interval; related_time_interval : time_interval; END_ENTITY; -- time_interval_relationship 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; -- time_interval_with_bounds ENTITY time_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.TIME_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- time_measure_with_unit ENTITY time_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 1) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- time_unit 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; -- topological_representation_item ENTITY toroidal_surface SUBTYPE OF (elementary_surface); major_radius : positive_length_measure; minor_radius : positive_length_measure; END_ENTITY; -- toroidal_surface 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; -- torus 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; -- trimmed_curve ENTITY type_qualifier; name : label; END_ENTITY; -- type_qualifier 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; -- uncertainty_measure_with_unit ENTITY uniform_curve SUBTYPE OF (b_spline_curve); END_ENTITY; -- uniform_curve ENTITY uniform_surface SUBTYPE OF (b_spline_surface); END_ENTITY; -- uniform_surface ENTITY value_representation_item SUBTYPE OF (representation_item); value_component : measure_value; WHERE wr1: (SIZEOF(QUERY ( rep <* using_representations(SELF) | (NOT ( 'TECHNICAL_DATA_PACKAGING.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(rep.context_of_items))) )) = 0); END_ENTITY; -- value_representation_item ENTITY vector SUBTYPE OF (geometric_representation_item); orientation : direction; magnitude : length_measure; WHERE wr1: (magnitude >= 0); END_ENTITY; -- vector ENTITY versioned_action_request; id : identifier; version : label; purpose : text; description : OPTIONAL text; END_ENTITY; -- versioned_action_request ENTITY vertex SUBTYPE OF (topological_representation_item); END_ENTITY; -- vertex ENTITY vertex_loop SUBTYPE OF (loop); loop_vertex : vertex; END_ENTITY; -- vertex_loop ENTITY vertex_point SUBTYPE OF (vertex, geometric_representation_item); vertex_geometry : point; END_ENTITY; -- vertex_point ENTITY vertex_shell SUBTYPE OF (topological_representation_item); vertex_shell_extent : vertex_loop; END_ENTITY; -- vertex_shell 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; END_ENTITY; -- view_volume ENTITY volume_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE wr1: ('TECHNICAL_DATA_PACKAGING.VOLUME_UNIT' IN TYPEOF(SELF\ measure_with_unit.unit_component)); END_ENTITY; -- volume_measure_with_unit ENTITY volume_unit SUBTYPE OF (named_unit); WHERE wr1: ((SELF\named_unit.dimensions.length_exponent = 3) AND (SELF\ named_unit.dimensions.mass_exponent = 0) AND (SELF\ named_unit.dimensions.time_exponent = 0) AND (SELF\ named_unit.dimensions.electric_current_exponent = 0) AND ( SELF\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND (SELF\named_unit .dimensions.amount_of_substance_exponent = 0) AND (SELF\ named_unit.dimensions.luminous_intensity_exponent = 0)); END_ENTITY; -- volume_unit 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; -- wire_shell RULE access_file_requires_external_identification FOR (document_file); LOCAL df : SET OF document_file; aeia : BAG OF applied_external_identification_assignment; result : BOOLEAN := TRUE; END_LOCAL; df := document_file; REPEAT i := 1 TO SIZEOF(df) BY 1; IF df[i]\document.description = 'access data file' THEN aeia := USEDIN(df[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS'); IF SIZEOF(aeia) < 1 THEN result := FALSE; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- access_file_requires_external_identification RULE applied_document_usage_constraint_assignment_restriction FOR ( document_file, externally_defined_symbol_and_placement); LOCAL exds : SET OF externally_defined_symbol_and_placement; aduca : BAG OF applied_document_usage_constraint_assignment; df : SET OF document_file; result : BOOLEAN := TRUE; END_LOCAL; df := document_file; REPEAT i := 1 TO SIZEOF(df) BY 1; aduca := USEDIN(df[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.ITEMS'); IF SIZEOF(aduca) > 0 THEN result := FALSE; END_IF; END_REPEAT; exds := externally_defined_symbol_and_placement; REPEAT i := 1 TO SIZEOF(exds) BY 1; aduca := USEDIN(exds[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.ITEMS'); IF SIZEOF(aduca) > 0 THEN result := FALSE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- applied_document_usage_constraint_assignment_restriction RULE approval_requires_approval_date_time FOR (approval, approval_date_time); WHERE wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( adt <* approval_date_time | (app :=: adt.dated_approval) )) = 1)) )) = 0); END_RULE; -- approval_requires_approval_date_time RULE approval_requires_approval_person_organization FOR (approval, approval_person_organization); WHERE wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( apo <* approval_person_organization | (app :=: apo. authorized_approval) )) >= 1)) )) = 0); END_RULE; -- approval_requires_approval_person_organization RULE change_identification_restricts_executed_action FOR ( executed_action); LOCAL acta : BAG OF action_assignment; found : BOOLEAN := FALSE; exeact : SET OF executed_action; result : BOOLEAN := TRUE; END_LOCAL; exeact := executed_action; REPEAT i := 1 TO SIZEOF(exeact) BY 1; IF exeact[i].description = 'change identification' THEN acta := USEDIN(exeact[i], 'TECHNICAL_DATA_PACKAGING.ACTION_ASSIGNMENT.ASSIGNED_ACTION'); found := FALSE; REPEAT j := 1 TO SIZEOF(acta) BY 1; IF EXISTS(acta[j].role) THEN IF (acta[j].role.name = 'change identification') XOR (acta[j]. role.name = 'revision history') THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF NOT found THEN result := FALSE; ESCAPE; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- change_identification_restricts_executed_action RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context); WHERE 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); 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; -- compatible_dimension RULE data_definition_entry_string_restrict_for_superseded_element FOR ( product_definition); LOCAL pdca : BAG OF product_definition_context_association; result1 : BOOLEAN; result2 : BOOLEAN; found : BOOLEAN; pd : SET OF product_definition; pdf : product_definition_formation; pdc : product_definition_context; END_LOCAL; result1 := TRUE; result2 := TRUE; pd := product_definition; REPEAT i := 1 TO SIZEOF(pd) BY 1; found := FALSE; pdca := USEDIN(pd[i],'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION'); REPEAT j := 1 TO SIZEOF(pdca) BY 1; pdc := pdca[j].frame_of_reference; IF pdc\application_context_element.name IN ['document version', 'a representation of a document version', 'data definition entry','indentured data list entry'] THEN found := TRUE; END_IF; END_REPEAT; IF found THEN IF SIZEOF(QUERY ( pdr <* USEDIN(pd[i],'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION') | (pdr.name = 'superseded element') )) > 1 THEN result1 := FALSE; END_IF; pdf := pd[i].formation; IF SIZEOF(QUERY ( pdfr <* USEDIN(pdf,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_FORMATION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION_FORMATION') | (pdfr.name = 'superseded version') )) > 1 THEN result2 := FALSE; END_IF; END_IF; END_REPEAT; WHERE wr1: result1; wr2: result2; END_RULE; -- data_definition_entry_string_restrict_for_superseded_element RULE data_definition_exchange_categorized_as_document FOR ( product_related_product_category); LOCAL prds : SET OF product := []; prpc : SET OF product_related_product_category; pc : SET OF product_category; pdf : BAG OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; prpc := QUERY ( v <* product_related_product_category | (v.name = 'data definition exchange') ); REPEAT i := 1 TO SIZEOF(prpc) BY 1; prds := prpc[i].products; REPEAT j := 1 TO SIZEOF(prds) BY 1; pdf := USEDIN(prds[j],'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'); IF SIZEOF(pdf) > 0 THEN pc := product_category_graph_members(prpc[i]); IF SIZEOF(QUERY ( v <* pc | (v.name = 'document') )) < 1 THEN result := FALSE; END_IF; END_IF; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- data_definition_exchange_categorized_as_document RULE data_definition_exchange_restrict_to_one_presentation FOR ( product_related_product_category); LOCAL prds : SET OF product := []; prpc : SET OF product_related_product_category; pdf : BAG OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; prpc := product_related_product_category; REPEAT i := 1 TO SIZEOF(prpc) BY 1; IF prpc[i]\product_category.name = 'data definition exchange' THEN prds := prds + prpc[i].products; END_IF; END_REPEAT; REPEAT i := 1 TO SIZEOF(prds) BY 1; pdf := USEDIN(prds[i],'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT'); REPEAT j := 1 TO SIZEOF(pdf) BY 1; IF SIZEOF(USEDIN(pdf[j],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_PRESENTED_ITEM.ITEMS')) > 1 THEN result := FALSE; END_IF; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- data_definition_exchange_restrict_to_one_presentation RULE dependent_instantiable_named_unit FOR (named_unit); LOCAL nu : SET OF named_unit; result : BOOLEAN := TRUE; END_LOCAL; nu := named_unit; REPEAT i := 1 TO SIZEOF(nu) BY 1; IF SIZEOF(USEDIN(nu[i],'')) < 1 THEN result := FALSE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- dependent_instantiable_named_unit RULE distribution_notice_approval_requires_supporting_data FOR ( applied_approval_assignment); LOCAL ap : approval; aca : BAG OF applied_classification_assignment; found : BOOLEAN; aaa : SET OF applied_approval_assignment; apo : BAG OF approval_person_organization; result : BOOLEAN := TRUE; END_LOCAL; aaa := applied_approval_assignment; REPEAT i := 1 TO SIZEOF(aaa) BY 1; IF EXISTS(aaa[i].role) THEN IF aaa[i].role.name = 'distribution notice' THEN ap := aaa[i].assigned_approval; found := FALSE; IF LENGTH(ap.level) > 0 THEN found := TRUE; END_IF; apo := USEDIN(ap,'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL'); REPEAT j := 1 TO SIZEOF(apo) BY 1; IF apo[j].role.role = 'distribution authorization' THEN found := TRUE; END_IF; END_REPEAT; aca := USEDIN(ap,'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS'); REPEAT j := 1 TO SIZEOF(aca) BY 1; IF EXISTS(aca[j]\classification_assignment.role) THEN IF (aca[j]\classification_assignment.role.name = 'distribution notice code') AND ( 'TECHNICAL_DATA_PACKAGING.CLASS' IN TYPEOF(aca[j]\ classification_assignment.assigned_class)) THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF NOT found THEN result := FALSE; END_IF; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- distribution_notice_approval_requires_supporting_data RULE drawing_suffix_number_combination_identification_constraint FOR ( product_relationship); LOCAL prpc : BAG OF product_related_product_category; p : product; tresult : BOOLEAN; pr : SET OF product_relationship; result : BOOLEAN := TRUE; END_LOCAL; pr := QUERY ( v <* product_relationship | (v.name = 'drawing suffix number combination') ); REPEAT i := 1 TO SIZEOF(pr) BY 1; p := pr[i].relating_product; prpc := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); REPEAT j := 1 TO SIZEOF(prpc) BY 1; IF prpc[j]\product_category.name = 'document' THEN result := FALSE; END_IF; END_REPEAT; p := pr[i].related_product; prpc := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); tresult := FALSE; REPEAT j := 1 TO SIZEOF(prpc) BY 1; IF prpc[j]\product_category.name = 'document' THEN tresult := TRUE; END_IF; END_REPEAT; IF NOT tresult THEN result := FALSE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- drawing_suffix_number_combination_identification_constraint RULE exchange_reason_existence_required FOR (property_definition); LOCAL dri : descriptive_representation_item; prpd : SET OF property_definition; repi : representation; result : BOOLEAN := TRUE; prdr : BAG OF property_definition_representation; END_LOCAL; prpd := property_definition; REPEAT i := 1 TO SIZEOF(prpd) BY 1; IF prpd[i].name = 'data definition exchange header' THEN result := FALSE; prdr := USEDIN(prpd[i],'TECHNICAL_DATA_PACKAGING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'); REPEAT j := 1 TO SIZEOF(prdr) BY 1; repi := prdr[j].used_representation; IF NOT (repi.name = 'exchange reason') THEN ESCAPE; ELSE REPEAT k := 1 TO SIZEOF(repi.items) BY 1; IF 'TECHNICAL_DATA_PACKAGING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(repi.items[k]) THEN dri := repi.items[k]; IF (dri.name = 'exchange purpose') XOR (dri.name = 'base exchange reason') THEN result := TRUE; ESCAPE; END_IF; END_IF; END_REPEAT; END_IF; END_REPEAT; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- exchange_reason_existence_required RULE existence_dependent_drawing_sheet_revision FOR ( drawing_sheet_revision); LOCAL pir : BAG OF presented_item_representation; prpc : BAG OF product_related_product_category; dsr : SET OF drawing_sheet_revision; pdf : SET OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; dsr := drawing_sheet_revision; REPEAT i := 1 TO SIZEOF(dsr) BY 1; pir := USEDIN(dsr[i],'TECHNICAL_DATA_PACKAGING.' + 'PRESENTED_ITEM_REPRESENTATION.PRESENTATION'); IF SIZEOF(pir) < 1 THEN result := FALSE; END_IF; REPEAT j := 1 TO SIZEOF(pir) BY 1; pdf := pir[j].item\applied_presented_item.items; IF SIZEOF(pdf) < 1 THEN result := FALSE; END_IF; REPEAT k := 1 TO SIZEOF(pdf) BY 1; prpc := USEDIN(pdf[k].of_product,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); IF SIZEOF(prpc) < 1 THEN result := FALSE; END_IF; REPEAT l := 1 TO SIZEOF(prpc) BY 1; IF prpc[l]\product_category.name <> 'sheet' THEN result := FALSE; END_IF; END_REPEAT; END_REPEAT; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- existence_dependent_drawing_sheet_revision RULE file_format_restricted_to_one_data_definition_entry FOR ( product_definition); LOCAL propd : BAG OF property_definition; pd : SET OF product_definition; result : BOOLEAN := TRUE; END_LOCAL; pd := product_definition; REPEAT i := 1 TO SIZEOF(pd) BY 1; IF (pd[i].frame_of_reference.name = 'document version') XOR (pd[i]. frame_of_reference.name = 'a representation of a document version') THEN propd := USEDIN(pd[i],'TECHNICAL_DATA_PACKAGING.' + 'PROPERTY_DEFINITION.DEFINITION'); IF SIZEOF(QUERY ( p <* propd | (p.name = 'document format') )) > 1 THEN result := FALSE; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- file_format_restricted_to_one_data_definition_entry RULE header_configuration_restricts_property_definition FOR ( property_definition); LOCAL found : BOOLEAN; pd : SET OF property_definition; apa : BAG OF applied_approval_assignment; result : BOOLEAN := TRUE; END_LOCAL; pd := QUERY ( v <* property_definition | (v.name LIKE '* header') ); REPEAT i := 1 TO SIZEOF(pd) BY 1; found := FALSE; apa := USEDIN(pd[i], 'TECHNICAL_DATA_PACKAGING.APPLIED_APPROVAL_ASSIGNMENT.ITEMS'); REPEAT j := 1 TO SIZEOF(apa) BY 1; IF EXISTS(apa[j]\approval_assignment.role) THEN IF (apa[j]\approval_assignment.role.name = 'release authentication') OR (apa[j]\approval_assignment.role .name = 'data usage rights') THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF SIZEOF(USEDIN(pd[i],'TECHNICAL_DATA_PACKAGING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) > 0 THEN found := TRUE; END_IF; IF NOT found THEN result := FALSE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- header_configuration_restricts_property_definition RULE identification_of_sheet_constraint FOR ( product_definition_formation); LOCAL prpc : BAG OF product_related_product_category; found : BOOLEAN; pc : SET OF product_category; pdf : SET OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; pdf := product_definition_formation; REPEAT i := 1 TO SIZEOF(pdf) BY 1; prpc := USEDIN(pdf[i].of_product,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); REPEAT j := 1 TO SIZEOF(prpc) BY 1; IF prpc[j]\product_category.name = 'sheet' THEN pc := product_category_graph_members(prpc[j]); found := FALSE; REPEAT k := 1 TO SIZEOF(pc) BY 1; IF pc[k].name = 'document' THEN found := TRUE; END_IF; END_REPEAT; IF NOT found THEN result := FALSE; ESCAPE; END_IF; END_IF; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- identification_of_sheet_constraint RULE indentured_data_list_identification_constraint FOR ( product_definition_formation); LOCAL prpc : BAG OF product_related_product_category; pc : SET OF product_category; pdf : SET OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; pdf := product_definition_formation; REPEAT i := 1 TO SIZEOF(pdf) BY 1; prpc := USEDIN(pdf[i].of_product,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); REPEAT j := 1 TO SIZEOF(prpc) BY 1; IF prpc[j]\product_category.name = 'indentured data list' THEN pc := product_category_graph_members(prpc[j]); result := FALSE; REPEAT k := 1 TO SIZEOF(pc) BY 1; IF pc[k].name = 'document' THEN result := TRUE; END_IF; END_REPEAT; IF result = FALSE THEN ESCAPE; END_IF; END_IF; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- indentured_data_list_identification_constraint RULE indentured_level_tag_identification_constraint FOR ( property_definition_representation); LOCAL pdr : SET OF property_definition_representation; result : BOOLEAN := TRUE; END_LOCAL; pdr := property_definition_representation; REPEAT i := 1 TO SIZEOF(pdr) BY 1; IF pdr[i].used_representation.name = 'indentured level tag' THEN IF NOT ((pdr[i].definition.name = 'exchange entry property') XOR ( pdr[i].definition.name = 'indentured data list entry property')) THEN result := FALSE; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- indentured_level_tag_identification_constraint RULE indentured_list_method_identification_constraint FOR ( applied_document_reference); LOCAL prpc : BAG OF product_related_product_category; d : document; p : product; dpa : BAG OF document_product_association; adr : SET OF applied_document_reference; pfd : product_or_formation_or_definition; result : BOOLEAN := TRUE; END_LOCAL; adr := applied_document_reference; REPEAT i := 1 TO SIZEOF(adr) BY 1; IF EXISTS(adr[i]\document_reference.role) THEN IF (adr[i]\document_reference.role.name = 'indentured by document') OR (adr[i]\document_reference.role.name = 'indentured by item') OR (adr[i]\document_reference.role.name = 'indentured by item and document') THEN d := adr[i]\document_reference.assigned_document; dpa := USEDIN(d,'TECHNICAL_DATA_PACKAGING.' + 'DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT'); REPEAT j := 1 TO SIZEOF(dpa) BY 1; pfd := dpa[j].related_product; IF 'TECHNICAL_DATA_PACKAGING.PRODUCT' IN TYPEOF(pfd) THEN p := pfd; ELSE IF 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(pfd) THEN p := pfd\product_definition_formation.of_product; ELSE IF 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION' IN TYPEOF(pfd) THEN p := pfd\product_definition.formation.of_product; END_IF; END_IF; END_IF; result := FALSE; prpc := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); REPEAT k := 1 TO SIZEOF(prpc) BY 1; IF (prpc[k].name = 'data definition exchange') OR (prpc[k]. name = 'indentured data list') THEN result := TRUE; END_IF; END_REPEAT; END_REPEAT; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- indentured_list_method_identification_constraint RULE item_source_information_identification_constraint FOR ( property_definition); LOCAL prpd : SET OF property_definition; result : BOOLEAN := TRUE; prdr : BAG OF property_definition_representation; END_LOCAL; prpd := property_definition; REPEAT i := 1 TO SIZEOF(prpd) BY 1; IF prpd[i].name = 'source information' THEN result := FALSE; prdr := USEDIN(prpd[i],'TECHNICAL_DATA_PACKAGING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'); REPEAT j := 1 TO SIZEOF(prdr) BY 1; IF prdr[j].used_representation.name = 'source information type' THEN result := TRUE; END_IF; END_REPEAT; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- item_source_information_identification_constraint RULE notation_type_identification_constraint FOR (representation); LOCAL note : SET OF representation; result : BOOLEAN; END_LOCAL; note := QUERY ( rep <* representation | (rep.name = 'notation') ); result := FALSE; IF SIZEOF(note) < 1 THEN result := TRUE; END_IF; REPEAT i := 1 TO SIZEOF(note) BY 1; REPEAT j := 1 TO SIZEOF(note[i].items) BY 1; IF 'TECHNICAL_DATA_PACKAGING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(note[i].items[j]) THEN result := TRUE; ESCAPE; END_IF; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- notation_type_identification_constraint RULE product_requires_category FOR (product, product_related_product_category); WHERE wr1: (SIZEOF(QUERY ( p <* product | (SIZEOF(USEDIN(p,'TECHNICAL_DATA_PACKAGING.'+ 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')) = 0) )) = 0); END_RULE; -- product_requires_category RULE product_requires_version FOR (product); WHERE wr1: (SIZEOF(QUERY ( prod <* product | (SIZEOF(USEDIN(prod, 'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_FORMATION.' + 'OF_PRODUCT')) = 0) )) = 0); END_RULE; -- product_requires_version RULE product_version_requires_person_organization FOR ( product_definition_formation); LOCAL apos : BAG OF applied_person_and_organization_assignment; found : BOOLEAN; apoa : BAG OF applied_organization_assignment; pdf : SET OF product_definition_formation; result : BOOLEAN := TRUE; END_LOCAL; pdf := product_definition_formation; REPEAT i := 1 TO SIZEOF(pdf) BY 1; apos := USEDIN(pdf[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS'); found := FALSE; REPEAT j := 1 TO SIZEOF(apos) BY 1; IF EXISTS(apos[j].role) THEN IF (apos[j].role.name = 'creator') OR (apos[j].role.name = 'id owner') THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF found THEN result := TRUE; ESCAPE; END_IF; apoa := USEDIN(pdf[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'); REPEAT j := 1 TO SIZEOF(apoa) BY 1; IF EXISTS(apoa[j].role) THEN IF (apoa[j].role.name = 'creator') OR (apoa[j].role.name = 'id owner') THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF NOT found THEN result := FALSE; ESCAPE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- product_version_requires_person_organization RULE reference_document_requires_subcategorization FOR ( product_related_product_category); LOCAL prpc : SET OF product_related_product_category; pcr : BAG OF product_category_relationship; result : BOOLEAN := TRUE; END_LOCAL; prpc := QUERY ( v <* product_related_product_category | (v\ product_category.name = 'reference document') ); REPEAT i := 1 TO SIZEOF(prpc) BY 1; pcr := USEDIN(prpc[i],'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_CATEGORY_RELATIONSHIP.CATEGORY'); IF SIZEOF(pcr) < 1 THEN result := FALSE; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- reference_document_requires_subcategorization RULE release_authentication_string_restriction FOR (approval); LOCAL ar : STRING := 'release authentication'; result1 : BOOLEAN := TRUE; result2 : BOOLEAN := TRUE; found : BOOLEAN; aaa : BAG OF applied_approval_assignment; adt : BAG OF approval_date_time; appr : SET OF approval; apo : BAG OF approval_person_organization; END_LOCAL; appr := approval; REPEAT i := 1 TO SIZEOF(appr) BY 1; aaa := USEDIN(appr[i],'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL'); found := FALSE; REPEAT j := 1 TO SIZEOF(aaa) BY 1; IF EXISTS(aaa[j]\approval_assignment.role) THEN IF aaa[j].role.name = ar THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF found THEN apo := USEDIN(appr[i],'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL'); found := FALSE; REPEAT j := 1 TO SIZEOF(apo) BY 1; IF EXISTS(apo[j].role) THEN IF apo[j].role.role = ar THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF NOT found THEN result1 := FALSE; END_IF; adt := USEDIN(appr[i],'TECHNICAL_DATA_PACKAGING.' + 'APPROVAL_DATE_TIME.DATED_APPROVAL'); found := FALSE; REPEAT j := 1 TO SIZEOF(adt) BY 1; IF EXISTS(adt[j].role) THEN IF adt[j].role.name = ar THEN found := TRUE; END_IF; END_IF; END_REPEAT; IF NOT found THEN result2 := FALSE; END_IF; END_IF; END_REPEAT; WHERE wr1: result1; wr2: result2; END_RULE; -- release_authentication_string_restriction RULE security_classification_date_string_restriction FOR ( applied_security_classification_assignment); LOCAL asca : SET OF applied_security_classification_assignment; tresult : BOOLEAN; ada : BAG OF applied_date_assignment; adta : BAG OF applied_date_and_time_assignment; result : BOOLEAN := TRUE; END_LOCAL; asca := applied_security_classification_assignment; REPEAT i := 1 TO SIZEOF(asca) BY 1; adta := USEDIN(asca[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS'); tresult := FALSE; REPEAT j := 1 TO SIZEOF(adta) BY 1; REPEAT k := 1 TO SIZEOF(adta[j].items) BY 1; IF adta[j].items[k] = asca[i] THEN IF EXISTS(adta[j]\date_and_time_assignment.role) THEN IF adta[j]\date_and_time_assignment.role.name = 'classification date' THEN tresult := TRUE; END_IF; END_IF; result := result AND tresult; END_IF; END_REPEAT; END_REPEAT; ada := USEDIN(asca[i],'TECHNICAL_DATA_PACKAGING.' + 'APPLIED_DATE_ASSIGNMENT.ITEMS'); REPEAT j := 1 TO SIZEOF(ada) BY 1; REPEAT k := 1 TO SIZEOF(ada[j].items) BY 1; IF ada[j].items[k] = asca[i] THEN IF EXISTS(ada[j]\date_assignment.role) THEN IF ada[j]\date_assignment.role.name = 'classification date' THEN tresult := TRUE; END_IF; END_IF; result := result AND tresult; END_IF; END_REPEAT; END_REPEAT; END_REPEAT; WHERE wr1: result; END_RULE; -- security_classification_date_string_restriction RULE simple_list_of_elements_constraint FOR (applied_document_reference); LOCAL dri : SET OF document_reference_item; adr : SET OF applied_document_reference; result : BOOLEAN := TRUE; END_LOCAL; adr := applied_document_reference; REPEAT i := 1 TO SIZEOF(adr) BY 1; IF EXISTS(adr[i]\document_reference.role) THEN IF adr[i]\document_reference.role.name = 'list of elements' THEN dri := adr[i].items; IF SIZEOF(dri) < 1 THEN result := FALSE; END_IF; REPEAT j := 1 TO SIZEOF(dri) BY 1; IF NOT ( 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(dri[j])) THEN result := FALSE; END_IF; END_REPEAT; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- simple_list_of_elements_constraint RULE simple_list_of_files_constraint FOR (applied_document_reference); LOCAL drt : SET OF document_representation_type; dri : SET OF document_reference_item; adr : SET OF applied_document_reference; nameok : BOOLEAN; result : BOOLEAN := TRUE; END_LOCAL; adr := applied_document_reference; REPEAT i := 1 TO SIZEOF(adr) BY 1; IF EXISTS(adr[i]\document_reference.role) THEN IF adr[i]\document_reference.role.name = 'list of files' THEN dri := adr[i].items; IF SIZEOF(dri) < 1 THEN result := FALSE; END_IF; REPEAT j := 1 TO SIZEOF(dri) BY 1; IF NOT ('TECHNICAL_DATA_PACKAGING.DOCUMENT_FILE' IN TYPEOF(dri [j])) THEN result := FALSE; END_IF; drt := dri[j].representation_types; nameok := FALSE; REPEAT k := 1 TO SIZEOF(drt) BY 1; IF (drt[k].name = 'digital') OR (drt[k].name = 'physical') THEN nameok := TRUE; END_IF; END_REPEAT; IF NOT nameok THEN result := FALSE; END_IF; END_REPEAT; END_IF; END_IF; END_REPEAT; WHERE wr1: result; END_RULE; -- simple_list_of_files_constraint RULE text_literal_alignment_baseline_constraint FOR (text_literal); WHERE wr1: (SIZEOF(QUERY ( t <* text_literal | (NOT (t.alignment IN ['left', 'center','right'])) )) = 0); END_RULE; -- text_literal_alignment_baseline_constraint RULE text_literal_font_requires_externally_defined_text_font FOR ( text_literal); WHERE wr1: (SIZEOF(QUERY ( t <* text_literal | (NOT ( 'TECHNICAL_DATA_PACKAGING.EXTERNALLY_DEFINED_TEXT_FONT' IN TYPEOF(t.font))) )) = 0); END_RULE; -- text_literal_font_requires_externally_defined_text_font RULE versioned_action_request_requires_status FOR (action_request_status, versioned_action_request); WHERE wr1: (SIZEOF(QUERY ( ar <* versioned_action_request | (NOT (SIZEOF( QUERY ( ars <* action_request_status | (ar :=: ars. assigned_request) )) = 1)) )) = 0); END_RULE; -- versioned_action_request_requires_status FUNCTION acyclic_composite_text( start_composite: composite_text; child_text: SET [1:?] OF text_or_character ): LOGICAL; LOCAL i : INTEGER; local_annotation_text : SET [0:?] OF annotation_text; local_composite_text : SET [0:?] OF composite_text; local_children : SET [0:?] OF text_or_character; END_LOCAL; local_composite_text := QUERY ( child <* child_text | ( 'TECHNICAL_DATA_PACKAGING.COMPOSITE_TEXT' IN TYPEOF(child)) ); IF SIZEOF(local_composite_text) > 0 THEN REPEAT i := 1 TO HIINDEX(local_composite_text) BY 1; 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) BY 1; local_children := local_children + local_composite_text[i]. collected_text; END_REPEAT; END_IF; local_annotation_text := QUERY ( child <* child_text | ( 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT' IN TYPEOF(child)) ); IF SIZEOF(local_annotation_text) > 0 THEN REPEAT i := 1 TO HIINDEX(local_annotation_text) BY 1; local_children := local_children + QUERY ( item <* local_annotation_text[i]\mapped_item.mapping_source. mapped_representation.items | (SIZEOF([ 'TECHNICAL_DATA_PACKAGING.ANNOTATION_TEXT', 'TECHNICAL_DATA_PACKAGING.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; -- acyclic_composite_text FUNCTION acyclic_curve_replica( rep: curve_replica; parent: curve ): BOOLEAN; IF NOT ('TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(parent)) THEN RETURN(TRUE); END_IF; IF parent :=: rep THEN RETURN(FALSE); ELSE RETURN(acyclic_curve_replica(rep,parent\curve_replica.parent_curve)); END_IF; END_FUNCTION; -- acyclic_curve_replica FUNCTION acyclic_mapped_representation( parent_set: SET OF representation; children_set: SET OF representation_item ): BOOLEAN; LOCAL x : SET OF representation_item; y : SET OF representation_item; END_LOCAL; x := QUERY ( z <* children_set | ( 'TECHNICAL_DATA_PACKAGING.MAPPED_ITEM' IN TYPEOF(z)) ); IF SIZEOF(x) > 0 THEN REPEAT i := 1 TO HIINDEX(x) BY 1; IF x[i]\mapped_item.mapping_source.mapped_representation IN parent_set THEN RETURN(FALSE); END_IF; IF NOT acyclic_mapped_representation(parent_set + x[i]\mapped_item .mapping_source.mapped_representation,x[i]\mapped_item. mapping_source.mapped_representation.items) THEN RETURN(FALSE); END_IF; END_REPEAT; END_IF; x := children_set - x; IF SIZEOF(x) > 0 THEN REPEAT i := 1 TO HIINDEX(x) BY 1; y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | ( 'TECHNICAL_DATA_PACKAGING.REPRESENTATION_ITEM' IN TYPEOF(z)) ); IF NOT acyclic_mapped_representation(parent_set,y) THEN RETURN(FALSE); END_IF; END_REPEAT; END_IF; RETURN(TRUE); END_FUNCTION; -- acyclic_mapped_representation FUNCTION acyclic_point_replica( rep: point_replica; parent: point ): BOOLEAN; IF NOT ('TECHNICAL_DATA_PACKAGING.POINT_REPLICA' IN TYPEOF(parent)) THEN RETURN(TRUE); END_IF; IF parent :=: rep THEN RETURN(FALSE); ELSE RETURN(acyclic_point_replica(rep,parent\point_replica.parent_pt)); END_IF; END_FUNCTION; -- acyclic_point_replica 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) BY 1; IF relation.category :=: children[i] THEN RETURN(FALSE); END_IF; END_REPEAT; x := bag_to_set(USEDIN(relation.category,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY')); local_children := children + relation.category; IF SIZEOF(x) > 0 THEN REPEAT i := 1 TO HIINDEX(x) BY 1; IF NOT acyclic_product_category_relationship(x[i],local_children) THEN RETURN(FALSE); END_IF; END_REPEAT; END_IF; RETURN(TRUE); END_FUNCTION; -- acyclic_product_category_relationship 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,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | (specific_relation IN TYPEOF(pd)) ); REPEAT i := 1 TO HIINDEX(x) BY 1; 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; -- acyclic_product_definition_relationship FUNCTION acyclic_solid_replica( rep: solid_replica; parent: solid_model ): BOOLEAN; IF NOT ('TECHNICAL_DATA_PACKAGING.SOLID_REPLICA' IN TYPEOF(parent)) THEN RETURN(TRUE); END_IF; IF parent :=: rep THEN RETURN(FALSE); ELSE RETURN(acyclic_solid_replica(rep,parent\solid_replica.parent_solid)); END_IF; END_FUNCTION; -- acyclic_solid_replica FUNCTION acyclic_surface_replica( rep: surface_replica; parent: surface ): BOOLEAN; IF NOT ('TECHNICAL_DATA_PACKAGING.SURFACE_REPLICA' IN TYPEOF(parent)) THEN RETURN(TRUE); END_IF; IF parent :=: rep THEN RETURN(FALSE); ELSE RETURN(acyclic_surface_replica(rep,parent\surface_replica. parent_surface)); END_IF; END_FUNCTION; -- acyclic_surface_replica 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; -- aspect_ratio FUNCTION associated_surface( arg: pcurve_or_surface ): surface; LOCAL surf : surface; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(arg) THEN surf := arg.basis_surface; ELSE surf := arg; END_IF; RETURN(surf); END_FUNCTION; -- associated_surface 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) BY 1; the_set := the_set + the_bag[i]; END_REPEAT; END_IF; RETURN(the_set); END_FUNCTION; -- bag_to_set FUNCTION base_axis( dim: INTEGER; axis1, axis2, axis3: direction ): LIST [2:3] OF direction; LOCAL u : LIST [2:3] OF direction; d1 : direction; d2 : direction; factor : REAL; END_LOCAL; IF dim = 3 THEN d1 := NVL(normalise(axis3),dummy_gri || direction([0,0,1])); 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 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]),dummy_gri || direction([0,1])]; END_IF; END_IF; END_IF; RETURN(u); END_FUNCTION; -- base_axis FUNCTION boolean_choose( b: BOOLEAN; choice1, choice2: GENERIC:item ): GENERIC:item; IF b THEN RETURN(choice1); ELSE RETURN(choice2); END_IF; END_FUNCTION; -- boolean_choose FUNCTION build_2axes( ref_direction: direction ): LIST [2:2] OF direction; LOCAL d : direction := NVL(normalise(ref_direction),dummy_gri || direction([1,0])); END_LOCAL; RETURN([d,orthogonal_complement(d)]); END_FUNCTION; -- build_2axes FUNCTION build_axes( axis, ref_direction: direction ): LIST [3:3] OF direction; LOCAL d1 : direction; d2 : direction; END_LOCAL; d1 := NVL(normalise(axis),dummy_gri || direction([0,0,1])); d2 := first_proj_axis(d1,ref_direction); RETURN([d2,normalise(cross_product(d1,d2)).orientation,d1]); END_FUNCTION; -- build_axes FUNCTION closed_shell_reversed( a_shell: closed_shell ): oriented_closed_shell; LOCAL the_reverse : oriented_closed_shell; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- closed_shell_reversed 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; -- conditional_reverse 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 BY 1; IF (NOT ('TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(c\ composite_curve.segments[k].parent_curve))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.SURFACE_CURVE' IN TYPEOF(c\ composite_curve.segments[k].parent_curve))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c \composite_curve.segments[k].parent_curve))) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE); END_FUNCTION; -- constraints_composite_curve_on_surface 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) BY 1; IF (NOT ('TECHNICAL_DATA_PACKAGING.OPEN_SHELL' IN TYPEOF(m. sbsm_boundary[j]))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.CLOSED_SHELL' IN TYPEOF(m.sbsm_boundary [j]))) THEN result := FALSE; RETURN(result); END_IF; END_REPEAT; RETURN(result); END_FUNCTION; -- constraints_geometry_shell_based_surface_model 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) BY 1; IF (NOT ('TECHNICAL_DATA_PACKAGING.WIRE_SHELL' IN TYPEOF(m. sbwm_boundary[j]))) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.VERTEX_SHELL' IN TYPEOF(m.sbwm_boundary [j]))) THEN result := FALSE; RETURN(result); END_IF; END_REPEAT; RETURN(result); END_FUNCTION; -- constraints_geometry_shell_based_wireframe_model FUNCTION constraints_param_b_spline( degree, up_knots, up_cp: INTEGER; knot_mult: LIST OF INTEGER; knots: LIST OF parameter_value ): BOOLEAN; LOCAL k : INTEGER; sum : INTEGER; result : BOOLEAN := TRUE; END_LOCAL; sum := knot_mult[1]; REPEAT i := 2 TO up_knots BY 1; sum := sum + knot_mult[i]; END_REPEAT; IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> ( degree + up_cp + 2)) THEN result := FALSE; RETURN(result); END_IF; k := knot_mult[1]; IF (k < 1) OR (k > (degree + 1)) THEN result := FALSE; RETURN(result); END_IF; REPEAT i := 2 TO up_knots BY 1; 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; -- constraints_param_b_spline FUNCTION constraints_rectangular_composite_surface( s: rectangular_composite_surface ): BOOLEAN; REPEAT i := 1 TO s.n_u BY 1; REPEAT j := 1 TO s.n_v BY 1; IF NOT (('TECHNICAL_DATA_PACKAGING.B_SPLINE_SURFACE' IN TYPEOF(s. segments[i][j].parent_surface)) OR ( 'TECHNICAL_DATA_PACKAGING.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s.segments[i][j].parent_surface))) THEN RETURN(FALSE); END_IF; END_REPEAT; END_REPEAT; REPEAT i := 1 TO s.n_u - 1 BY 1; REPEAT j := 1 TO s.n_v BY 1; IF s.segments[i][j].u_transition = discontinuous THEN RETURN(FALSE); END_IF; END_REPEAT; END_REPEAT; REPEAT i := 1 TO s.n_u BY 1; REPEAT j := 1 TO s.n_v - 1 BY 1; IF s.segments[i][j].v_transition = discontinuous THEN RETURN(FALSE); END_IF; END_REPEAT; END_REPEAT; RETURN(TRUE); END_FUNCTION; -- constraints_rectangular_composite_surface FUNCTION cross_product( arg1, arg2: direction ): vector; LOCAL v2 : LIST [3:3] OF REAL; v1 : LIST [3:3] OF REAL; mag : REAL; res : direction; 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; REPEAT i := 1 TO 3 BY 1; mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]); END_REPEAT; IF mag > 0 THEN result := dummy_gri || vector(res,SQRT(mag)); ELSE result := dummy_gri || vector(arg1,0); END_IF; RETURN(result); END; END_IF; END_FUNCTION; -- cross_product 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 BY 1; IF b.weights[i] <= 0 THEN result := FALSE; RETURN(result); END_IF; END_REPEAT; RETURN(result); END_FUNCTION; -- curve_weights_positive FUNCTION derive_dimensional_exponents( x: unit ): dimensional_exponents; LOCAL result : dimensional_exponents := dimensional_exponents(0,0,0,0,0,0, 0); END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.DERIVED_UNIT' IN TYPEOF(x) THEN REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements) BY 1; result.length_exponent := result.length_exponent + (x.elements[i]. exponent * x.elements[i].unit.dimensions.length_exponent); result.mass_exponent := result.mass_exponent + (x.elements[i]. exponent * x.elements[i].unit.dimensions.mass_exponent); result.time_exponent := result.time_exponent + (x.elements[i]. exponent * x.elements[i].unit.dimensions.time_exponent); result.electric_current_exponent := result. electric_current_exponent + (x.elements[i].exponent * x. elements[i].unit.dimensions.electric_current_exponent); result.thermodynamic_temperature_exponent := result. thermodynamic_temperature_exponent + (x.elements[i].exponent * x.elements[i].unit.dimensions. thermodynamic_temperature_exponent); result.amount_of_substance_exponent := result. amount_of_substance_exponent + (x.elements[i].exponent * x. elements[i].unit.dimensions.amount_of_substance_exponent); result.luminous_intensity_exponent := result. luminous_intensity_exponent + (x.elements[i].exponent * x. elements[i].unit.dimensions.luminous_intensity_exponent); END_REPEAT; ELSE result := x.dimensions; END_IF; RETURN(result); END_FUNCTION; -- derive_dimensional_exponents FUNCTION dimension_of( item: geometric_representation_item ): dimension_count; LOCAL x : SET OF representation; y : representation_context; dim : dimension_count; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(item) THEN dim := SIZEOF(item\cartesian_point.coordinates); RETURN(dim); END_IF; IF 'TECHNICAL_DATA_PACKAGING.DIRECTION' IN TYPEOF(item) THEN dim := SIZEOF(item\direction.direction_ratios); RETURN(dim); END_IF; IF 'TECHNICAL_DATA_PACKAGING.VECTOR' IN TYPEOF(item) THEN dim := SIZEOF(item\vector.orientation\direction.direction_ratios); RETURN(dim); END_IF; x := using_representations(item); y := x[1].context_of_items; dim := y\geometric_representation_context.coordinate_space_dimension; RETURN(dim); END_FUNCTION; -- dimension_of 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)); gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0)); second : RETURN(dimensional_exponents(0,0,1,0,0,0,0)); ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0)); kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0)); mole : RETURN(dimensional_exponents(0,0,0,0,0,1,0)); candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1)); radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0)); steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0)); hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0)); newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0)); pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0)); joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0)); watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0)); coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0)); volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0)); farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0)); ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0)); siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0)); weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0)); tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0)); henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0)); degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0)); lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1)); lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1)); becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0)); gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0)); sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0)); OTHERWISE : RETURN(?); END_CASE; END_FUNCTION; -- dimensions_for_si_unit FUNCTION dot_product( arg1, arg2: direction ): REAL; LOCAL ndim : INTEGER; scalar : REAL; vec1 : direction; vec2 : direction; END_LOCAL; IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) THEN scalar := ?; ELSE IF arg1.dim <> arg2.dim THEN scalar := ?; ELSE BEGIN vec1 := normalise(arg1); vec2 := normalise(arg2); ndim := arg1.dim; scalar := 0; REPEAT i := 1 TO ndim BY 1; scalar := scalar + (vec1.direction_ratios[i] * vec2. direction_ratios[i]); END_REPEAT; END; END_IF; END_IF; RETURN(scalar); END_FUNCTION; -- dot_product FUNCTION edge_reversed( an_edge: edge ): oriented_edge; LOCAL the_reverse : oriented_edge; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- edge_reversed FUNCTION face_bound_reversed( a_face_bound: face_bound ): face_bound; LOCAL the_reverse : face_bound; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- face_bound_reversed FUNCTION face_reversed( a_face: face ): oriented_face; LOCAL the_reverse : oriented_face; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- face_reversed FUNCTION first_proj_axis( z_axis, arg: direction ): direction; LOCAL x_vec : vector; v : direction; z : direction; x_axis : direction; 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] THEN v := dummy_gri || direction([1,0,0]); ELSE v := dummy_gri || direction([0,1,0]); END_IF; ELSE IF arg.dim <> 3 THEN RETURN(?); END_IF; IF cross_product(arg,z).magnitude = 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; -- first_proj_axis FUNCTION gbsf_check_curve( cv: representation_item ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA', 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN RETURN(FALSE); END_IF; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.CIRCLE', 'TECHNICAL_DATA_PACKAGING.ELLIPSE', 'TECHNICAL_DATA_PACKAGING.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN RETURN(TRUE); ELSE IF (('TECHNICAL_DATA_PACKAGING.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 (('TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(cv) THEN RETURN(gbsf_check_curve(cv\curve_replica.parent_curve)); ELSE IF ('TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\ offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv\ offset_curve_3d.basis_curve))) THEN RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv) THEN IF SIZEOF(cv\polyline.points) >= 3 THEN RETURN(TRUE); END_IF; ELSE IF 'TECHNICAL_DATA_PACKAGING.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) BY 1; IF 'TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.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; -- gbsf_check_curve FUNCTION gbsf_check_point( pnt: point ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(pnt) THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE' IN TYPEOF(pnt) THEN RETURN(gbsf_check_curve(pnt\point_on_curve.basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN RETURN(gbsf_check_surface(pnt\point_on_surface.basis_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- gbsf_check_point FUNCTION gbsf_check_surface( sf: surface ): BOOLEAN; IF (('TECHNICAL_DATA_PACKAGING.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(['TECHNICAL_DATA_PACKAGING.SPHERICAL_SURFACE', 'TECHNICAL_DATA_PACKAGING.TOROIDAL_SURFACE', 'TECHNICAL_DATA_PACKAGING.CURVE_BOUNDED_SURFACE', 'TECHNICAL_DATA_PACKAGING.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF( sf)) = 1 THEN RETURN(TRUE); ELSE IF (('TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface. segments) BY 1; REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface. segments[i]) BY 1; 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 'TECHNICAL_DATA_PACKAGING.SURFACE_REPLICA' IN TYPEOF(sf) THEN RETURN(gbsf_check_surface(sf\surface_replica.parent_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- gbsf_check_surface 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 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(c) THEN surfs := [c\pcurve.basis_surface]; ELSE IF 'TECHNICAL_DATA_PACKAGING.SURFACE_CURVE' IN TYPEOF(c) THEN n := SIZEOF(c\surface_curve.associated_geometry); REPEAT i := 1 TO n BY 1; surfs := surfs + associated_surface(c\surface_curve. associated_geometry[i]); END_REPEAT; END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN n := SIZEOF(c\composite_curve.segments); surfs := get_basis_surface(c\composite_curve.segments[1]. parent_curve); IF n > 1 THEN REPEAT i := 2 TO n BY 1; surfs := surfs * get_basis_surface(c\composite_curve.segments[i] .parent_curve); END_REPEAT; END_IF; END_IF; RETURN(surfs); END_FUNCTION; -- get_basis_surface FUNCTION get_description_value( obj: description_attribute_select ): text; LOCAL description_bag : BAG OF description_attribute := USEDIN(obj, 'TECHNICAL_DATA_PACKAGING.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM'); END_LOCAL; IF SIZEOF(description_bag) = 1 THEN RETURN(description_bag[1].attribute_value); ELSE RETURN(?); END_IF; END_FUNCTION; -- get_description_value FUNCTION get_id_value( obj: id_attribute_select ): identifier; LOCAL id_bag : BAG OF id_attribute := USEDIN(obj, 'TECHNICAL_DATA_PACKAGING.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM'); END_LOCAL; IF SIZEOF(id_bag) = 1 THEN RETURN(id_bag[1].attribute_value); ELSE RETURN(?); END_IF; END_FUNCTION; -- get_id_value FUNCTION get_name_value( obj: name_attribute_select ): label; LOCAL name_bag : BAG OF name_attribute := USEDIN(obj, 'TECHNICAL_DATA_PACKAGING.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM'); END_LOCAL; IF SIZEOF(name_bag) = 1 THEN RETURN(name_bag[1].attribute_value); ELSE RETURN(?); END_IF; END_FUNCTION; -- get_name_value FUNCTION get_role( obj: role_select ): object_role; LOCAL role_bag : BAG OF role_association := USEDIN(obj, 'TECHNICAL_DATA_PACKAGING.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE'); END_LOCAL; IF SIZEOF(role_bag) = 1 THEN RETURN(role_bag[1].role); ELSE RETURN(?); END_IF; END_FUNCTION; -- get_role FUNCTION item_in_context( item: representation_item; cntxt: representation_context ): BOOLEAN; LOCAL y : BAG OF representation_item; END_LOCAL; IF SIZEOF(USEDIN(item,'TECHNICAL_DATA_PACKAGING.REPRESENTATION.ITEMS') * cntxt.representations_in_context) > 0 THEN RETURN(TRUE); ELSE y := QUERY ( z <* USEDIN(item,'') | ( 'TECHNICAL_DATA_PACKAGING.REPRESENTATION_ITEM' IN TYPEOF(z)) ); IF SIZEOF(y) > 0 THEN REPEAT i := 1 TO HIINDEX(y) BY 1; IF item_in_context(y[i],cntxt) THEN RETURN(TRUE); END_IF; END_REPEAT; END_IF; END_IF; RETURN(FALSE); END_FUNCTION; -- item_in_context 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; -- leap_year 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) BY 1; loops := loops + f.bounds[i].bound; END_REPEAT; RETURN(loops); END_FUNCTION; -- list_face_loops 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) BY 1; the_reverse := topology_reversed(a_list[i]) + the_reverse; END_REPEAT; RETURN(the_reverse); END_FUNCTION; -- list_of_topology_reversed FUNCTION list_to_array( lis: LIST [0:?] OF GENERIC:t; low, u: INTEGER ): ARRAY 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 BY 1; res[(low + i) - 1] := lis[i]; END_REPEAT; RETURN(res); END_IF; END_FUNCTION; -- list_to_array 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) BY 1; s := s + l[i]; END_REPEAT; RETURN(s); END_FUNCTION; -- list_to_set FUNCTION make_array_of_array( lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t; low1, u1, low2, u2: INTEGER ): ARRAY OF ARRAY OF GENERIC:t; LOCAL res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t; END_LOCAL; IF ((u1 - low1) + 1) <> SIZEOF(lis) THEN RETURN(?); END_IF; IF ((u2 - low2) + 1) <> SIZEOF(lis[1]) THEN RETURN(?); END_IF; res := [list_to_array(lis[1],low2,u2),(u1 - low1) + 1]; REPEAT i := 2 TO HIINDEX(lis) BY 1; 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; -- make_array_of_array 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 := 'TECHNICAL_DATA_PACKAGING.POLY_LOOP' IN TYPEOF(l[1]); REPEAT i := 2 TO SIZEOF(l) BY 1; IF ('TECHNICAL_DATA_PACKAGING.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type THEN RETURN(TRUE); END_IF; END_REPEAT; RETURN(FALSE); END_FUNCTION; -- mixed_loop_type_set FUNCTION msb_shells( brep: manifold_solid_brep ): SET [1:?] OF closed_shell; IF SIZEOF(QUERY ( msbtype <* TYPEOF(brep) | (msbtype LIKE '*BREP_WITH_VOIDS') )) >= 1 THEN RETURN(brep\brep_with_voids.voids + brep.outer); ELSE RETURN([brep.outer]); END_IF; END_FUNCTION; -- msb_shells FUNCTION msf_curve_check( cv: representation_item ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA', 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN RETURN(FALSE); END_IF; IF (('TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\ b_spline_curve.self_intersect = FALSE)) OR (cv\b_spline_curve. self_intersect = UNKNOWN) THEN RETURN(TRUE); ELSE IF SIZEOF(['TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.LINE'] * TYPEOF(cv)) = 1 THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(cv) THEN RETURN(msf_curve_check(cv\curve_replica.parent_curve)); ELSE IF ('TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\ offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv\ offset_curve_3d.basis_curve))) THEN RETURN(msf_curve_check(cv\offset_curve_3d.basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(cv) THEN RETURN(msf_curve_check(cv\pcurve.reference_to_curve\ representation.items[1]) AND msf_surface_check(cv\pcurve. basis_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.SURFACE_CURVE' IN TYPEOF(cv) THEN IF msf_curve_check(cv\surface_curve.curve_3d) THEN REPEAT i := 1 TO SIZEOF(cv\surface_curve. associated_geometry) BY 1; IF 'TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(cv\ surface_curve.associated_geometry[i]) THEN IF NOT msf_curve_check(cv\surface_curve. associated_geometry[i]) THEN RETURN(FALSE); END_IF; END_IF; END_IF; END_REPEAT; RETURN(TRUE); END_IF; ELSE IF 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv) THEN IF SIZEOF(cv\polyline.points) >= 3 THEN RETURN(TRUE); END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; RETURN(FALSE); END_FUNCTION; -- msf_curve_check FUNCTION msf_surface_check( surf: surface ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.SWEPT_SURFACE' IN TYPEOF(surf) THEN RETURN(msf_curve_check(surf\swept_surface.swept_curve)); ELSE IF (('TECHNICAL_DATA_PACKAGING.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE)) OR (surf\ offset_surface.self_intersect = UNKNOWN) THEN RETURN(msf_surface_check(surf\offset_surface.basis_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.SURFACE_REPLICA' IN TYPEOF(surf) THEN RETURN(msf_surface_check(surf\surface_replica.parent_surface)); ELSE IF (('TECHNICAL_DATA_PACKAGING.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; -- msf_surface_check FUNCTION nmsf_curve_check( cv: representation_item ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.BOUNDED_CURVE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA', 'TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN RETURN(FALSE); ELSE IF (('TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND ( cv\b_spline_curve.self_intersect = FALSE)) OR (cv\b_spline_curve. self_intersect = UNKNOWN) THEN RETURN(TRUE); ELSE IF SIZEOF(['TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.LINE'] * TYPEOF(cv)) = 1 THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(cv) THEN RETURN(nmsf_curve_check(cv\curve_replica.parent_curve)); ELSE IF ('TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\ offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ( 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv\ offset_curve_3d.basis_curve))) THEN RETURN(nmsf_curve_check(cv\offset_curve_3d.basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(cv) THEN RETURN(nmsf_curve_check(cv\pcurve.reference_to_curve\ representation.items[1]) AND nmsf_surface_check(cv\ pcurve.basis_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.SURFACE_CURVE' IN TYPEOF(cv) THEN IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN REPEAT i := 1 TO SIZEOF(cv\surface_curve. associated_geometry) BY 1; IF 'TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.PCURVE' IN TYPEOF(cv\ surface_curve.associated_geometry[i]) THEN IF NOT nmsf_curve_check(cv\surface_curve. associated_geometry[i]) THEN RETURN(FALSE); END_IF; END_IF; END_IF; END_REPEAT; RETURN(TRUE); END_IF; ELSE IF 'TECHNICAL_DATA_PACKAGING.POLYLINE' IN TYPEOF(cv) THEN IF SIZEOF(cv\polyline.points) >= 3 THEN RETURN(TRUE); END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; END_IF; RETURN(FALSE); END_FUNCTION; -- nmsf_curve_check FUNCTION nmsf_surface_check( surf: surface ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.SWEPT_SURFACE' IN TYPEOF(surf) THEN RETURN(nmsf_curve_check(surf\swept_surface.swept_curve)); ELSE IF (('TECHNICAL_DATA_PACKAGING.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE)) OR (surf\ offset_surface.self_intersect = UNKNOWN) THEN RETURN(nmsf_surface_check(surf\offset_surface.basis_surface)); ELSE IF 'TECHNICAL_DATA_PACKAGING.SURFACE_REPLICA' IN TYPEOF(surf) THEN RETURN(nmsf_surface_check(surf\surface_replica.parent_surface)); ELSE IF (('TECHNICAL_DATA_PACKAGING.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; -- nmsf_surface_check FUNCTION normalise( arg: vector_or_direction ): vector_or_direction; LOCAL ndim : INTEGER; v : direction; vec : vector; mag : REAL; result : vector_or_direction; END_LOCAL; IF NOT EXISTS(arg) THEN result := ?; ELSE ndim := arg.dim; IF 'TECHNICAL_DATA_PACKAGING.VECTOR' IN TYPEOF(arg) THEN BEGIN v := dummy_gri || direction(arg.orientation.direction_ratios); IF arg.magnitude = 0 THEN RETURN(?); ELSE vec := dummy_gri || vector(v,1); END_IF; END; ELSE v := dummy_gri || direction(arg.direction_ratios); END_IF; mag := 0; REPEAT i := 1 TO ndim BY 1; mag := mag + (v.direction_ratios[i] * v.direction_ratios[i]); END_REPEAT; IF mag > 0 THEN mag := SQRT(mag); REPEAT i := 1 TO ndim BY 1; v.direction_ratios[i] := v.direction_ratios[i] / mag; END_REPEAT; IF 'TECHNICAL_DATA_PACKAGING.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; -- normalise FUNCTION open_shell_reversed( a_shell: open_shell ): oriented_open_shell; LOCAL the_reverse : oriented_open_shell; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- open_shell_reversed 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; -- orthogonal_complement FUNCTION path_head_to_tail( a_path: path ): BOOLEAN; LOCAL n : INTEGER; p : BOOLEAN := TRUE; END_LOCAL; n := SIZEOF(a_path.edge_list); REPEAT i := 2 TO n BY 1; p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i] .edge_start); END_REPEAT; RETURN(p); END_FUNCTION; -- path_head_to_tail FUNCTION path_reversed( a_path: path ): oriented_path; LOCAL the_reverse : oriented_path; END_LOCAL; IF 'TECHNICAL_DATA_PACKAGING.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; -- path_reversed FUNCTION product_category_graph_members( p: product_category ): SET OF product_category; LOCAL pcr : BAG OF product_category_relationship; result : SET OF product_category := []; END_LOCAL; pcr := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_CATEGORY_RELATIONSHIP.CATEGORY'); IF SIZEOF(pcr) > 0 THEN result := result + p; REPEAT i := 1 TO SIZEOF(pcr) BY 1; result := result + product_category_graph_members(pcr[i]. sub_category); END_REPEAT; END_IF; pcr := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'); IF SIZEOF(pcr) > 0 THEN result := result + p; REPEAT i := 1 TO SIZEOF(pcr) BY 1; result := result + product_category_graph_members(pcr[i].category); END_REPEAT; END_IF; RETURN(result); END_FUNCTION; -- product_category_graph_members 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 'TECHNICAL_DATA_PACKAGING.VECTOR' IN TYPEOF(vec) THEN v := dummy_gri || direction(vec.orientation.direction_ratios); mag := scalar * vec.magnitude; ELSE v := dummy_gri || direction(vec.direction_ratios); mag := scalar; END_IF; IF mag < 0 THEN REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1; 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; -- scalar_times_vector FUNCTION second_proj_axis( z_axis, x_axis, arg: direction ): direction; LOCAL temp : vector; v : direction; y_axis : vector; END_LOCAL; IF NOT EXISTS(arg) THEN v := dummy_gri || direction([0,1,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; -- second_proj_axis 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) BY 1; the_reverse := the_reverse + topology_reversed(a_set[i]); END_REPEAT; RETURN(the_reverse); END_FUNCTION; -- set_of_topology_reversed FUNCTION shell_reversed( a_shell: shell ): shell; IF 'TECHNICAL_DATA_PACKAGING.OPEN_SHELL' IN TYPEOF(a_shell) THEN RETURN(open_shell_reversed(a_shell)); ELSE IF 'TECHNICAL_DATA_PACKAGING.CLOSED_SHELL' IN TYPEOF(a_shell) THEN RETURN(closed_shell_reversed(a_shell)); ELSE RETURN(?); END_IF; END_IF; END_FUNCTION; -- shell_reversed FUNCTION surface_weights_positive( b: rational_b_spline_surface ): BOOLEAN; LOCAL result : BOOLEAN := TRUE; END_LOCAL; REPEAT i := 0 TO b.u_upper BY 1; REPEAT j := 0 TO b.v_upper BY 1; IF b.weights[i][j] <= 0 THEN result := FALSE; RETURN(result); END_IF; END_REPEAT; END_REPEAT; RETURN(result); END_FUNCTION; -- surface_weights_positive FUNCTION topology_reversed( an_item: reversible_topology ): reversible_topology; IF 'TECHNICAL_DATA_PACKAGING.EDGE' IN TYPEOF(an_item) THEN RETURN(edge_reversed(an_item)); END_IF; IF 'TECHNICAL_DATA_PACKAGING.PATH' IN TYPEOF(an_item) THEN RETURN(path_reversed(an_item)); END_IF; IF 'TECHNICAL_DATA_PACKAGING.FACE_BOUND' IN TYPEOF(an_item) THEN RETURN(face_bound_reversed(an_item)); END_IF; IF 'TECHNICAL_DATA_PACKAGING.FACE' IN TYPEOF(an_item) THEN RETURN(face_reversed(an_item)); END_IF; IF 'TECHNICAL_DATA_PACKAGING.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; -- topology_reversed FUNCTION using_items( item: founded_item_select; checked_items: SET OF founded_item_select ): SET OF founded_item_select; LOCAL next_items : SET OF founded_item_select; new_check_items : SET OF founded_item_select; result_items : SET OF founded_item_select; END_LOCAL; result_items := []; new_check_items := checked_items + item; next_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | (( 'TECHNICAL_DATA_PACKAGING.REPRESENTATION_ITEM' IN TYPEOF(z)) OR ( 'TECHNICAL_DATA_PACKAGING.FOUNDED_ITEM' IN TYPEOF(z))) ); IF SIZEOF(next_items) > 0 THEN REPEAT i := 1 TO HIINDEX(next_items) BY 1; IF NOT (next_items[i] IN new_check_items) THEN result_items := result_items + next_items[i] + using_items( next_items[i],new_check_items); END_IF; END_REPEAT; END_IF; RETURN(result_items); END_FUNCTION; -- using_items FUNCTION using_representations( item: founded_item_select ): SET OF representation; LOCAL results : SET OF representation; intermediate_items : SET OF founded_item_select; result_bag : BAG OF representation; END_LOCAL; results := []; result_bag := USEDIN(item, 'TECHNICAL_DATA_PACKAGING.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT i := 1 TO HIINDEX(result_bag) BY 1; results := results + result_bag[i]; END_REPEAT; END_IF; intermediate_items := using_items(item,[]); IF SIZEOF(intermediate_items) > 0 THEN REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1; result_bag := USEDIN(intermediate_items[i], 'TECHNICAL_DATA_PACKAGING.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT j := 1 TO HIINDEX(result_bag) BY 1; results := results + result_bag[j]; END_REPEAT; END_IF; END_REPEAT; END_IF; RETURN(results); END_FUNCTION; -- using_representations FUNCTION valid_basis_curve_in_2d_wireframe( crv: curve ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.ELLIPSE', 'TECHNICAL_DATA_PACKAGING.CIRCLE'] * TYPEOF(crv)) = 1 THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.TRIMMED_CURVE' IN TYPEOF(crv) THEN IF SIZEOF(['TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.PARABOLA', 'TECHNICAL_DATA_PACKAGING.HYPERBOLA'] * TYPEOF(crv\ trimmed_curve.basis_curve)) = 1 THEN RETURN(TRUE); ELSE RETURN(valid_basis_curve_in_2d_wireframe(crv\trimmed_curve. basis_curve)); END_IF; ELSE IF 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_2D' IN TYPEOF(crv) THEN RETURN(valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d. basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(crv) THEN RETURN(valid_basis_curve_in_2d_wireframe(crv\curve_replica. parent_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- valid_basis_curve_in_2d_wireframe FUNCTION valid_calendar_date( date: calendar_date ): LOGICAL; CASE date.month_component OF 1 : RETURN((1 <= date.day_component) AND (date.day_component <= 31)); 2 : BEGIN IF leap_year(date.year_component) THEN RETURN((1 <= date.day_component) AND (date.day_component <= 29)); ELSE RETURN((1 <= date.day_component) AND (date.day_component <= 28)); END_IF; END; 3 : RETURN((1 <= date.day_component) AND (date.day_component <= 31)); 4 : RETURN((1 <= date.day_component) AND (date.day_component <= 30)); 5 : RETURN((1 <= date.day_component) AND (date.day_component <= 31)); 6 : RETURN((1 <= date.day_component) AND (date.day_component <= 30)); 7 : RETURN((1 <= date.day_component) AND (date.day_component <= 31)); 8 : RETURN((1 <= date.day_component) AND (date.day_component <= 31)); 9 : RETURN((1 <= date.day_component) AND (date.day_component <= 30)); 10 : RETURN((1 <= date.day_component) AND (date. day_component <= 31)); 11 : RETURN((1 <= date.day_component) AND (date. day_component <= 30)); 12 : RETURN((1 <= date.day_component) AND (date. day_component <= 31)); END_CASE; RETURN(FALSE); END_FUNCTION; -- valid_calendar_date FUNCTION valid_geometrically_bounded_wf_curve( crv: curve ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.POLYLINE', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.ELLIPSE', 'TECHNICAL_DATA_PACKAGING.CIRCLE'] * TYPEOF(crv)) = 1 THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.TRIMMED_CURVE' IN TYPEOF(crv) THEN IF SIZEOF(['TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.PARABOLA', 'TECHNICAL_DATA_PACKAGING.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 'TECHNICAL_DATA_PACKAGING.OFFSET_CURVE_3D' IN TYPEOF(crv) THEN RETURN(valid_geometrically_bounded_wf_curve(crv\offset_curve_3d. basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(crv) THEN RETURN(valid_geometrically_bounded_wf_curve(crv\curve_replica. parent_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- valid_geometrically_bounded_wf_curve FUNCTION valid_geometrically_bounded_wf_point( pnt: point ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(pnt) THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.POINT_ON_CURVE' IN TYPEOF(pnt) THEN RETURN(valid_geometrically_bounded_wf_curve(pnt\point_on_curve. basis_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- valid_geometrically_bounded_wf_point FUNCTION valid_measure_value( m: measure_value ): BOOLEAN; IF 'REAL' IN TYPEOF(m) THEN RETURN(m > 0); ELSE IF 'INTEGER' IN TYPEOF(m) THEN RETURN(m > 0); ELSE RETURN(TRUE); END_IF; END_IF; END_FUNCTION; -- valid_measure_value 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; -- valid_time FUNCTION valid_units( m: measure_with_unit ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.LENGTH_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1,0,0,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.MASS_MEASURE' IN TYPEOF(m.value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,1,0,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.TIME_MEASURE' IN TYPEOF(m.value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,1,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,1,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,0,1,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,0,1,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,0,0,1,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,0,0,0,1) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.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) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.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) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.AREA_MEASURE' IN TYPEOF(m.value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2,0,0,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.VOLUME_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(3,0,0,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.RATIO_MEASURE' IN TYPEOF(m. value_component) THEN IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0,0,0,0,0,0,0) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.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) THEN RETURN(FALSE); END_IF; END_IF; IF 'TECHNICAL_DATA_PACKAGING.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) THEN RETURN(FALSE); END_IF; END_IF; RETURN(TRUE); END_FUNCTION; -- valid_units FUNCTION valid_wireframe_edge_curve( crv: curve ): BOOLEAN; IF SIZEOF(['TECHNICAL_DATA_PACKAGING.LINE', 'TECHNICAL_DATA_PACKAGING.CONIC', 'TECHNICAL_DATA_PACKAGING.B_SPLINE_CURVE', 'TECHNICAL_DATA_PACKAGING.POLYLINE'] * TYPEOF(crv)) = 1 THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.CURVE_REPLICA' IN TYPEOF(crv) THEN RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve)); ELSE IF 'TECHNICAL_DATA_PACKAGING.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; -- valid_wireframe_edge_curve FUNCTION valid_wireframe_vertex_point( pnt: point ): BOOLEAN; IF 'TECHNICAL_DATA_PACKAGING.CARTESIAN_POINT' IN TYPEOF(pnt) THEN RETURN(TRUE); ELSE IF 'TECHNICAL_DATA_PACKAGING.POINT_REPLICA' IN TYPEOF(pnt) THEN RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt)); END_IF; END_IF; RETURN(FALSE); END_FUNCTION; -- valid_wireframe_vertex_point FUNCTION vector_difference( arg1, arg2: vector_or_direction ): vector; LOCAL ndim : INTEGER; mag2 : REAL; mag1 : REAL; mag : REAL; res : direction; vec1 : direction; vec2 : direction; result : vector; END_LOCAL; IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim) THEN RETURN(?); ELSE BEGIN IF 'TECHNICAL_DATA_PACKAGING.VECTOR' IN TYPEOF(arg1) THEN mag1 := arg1.magnitude; vec1 := arg1.orientation; ELSE mag1 := 1; vec1 := arg1; END_IF; IF 'TECHNICAL_DATA_PACKAGING.VECTOR' IN TYPEOF(arg2) THEN mag2 := arg2.magnitude; vec2 := arg2.orientation; ELSE mag2 := 1; vec2 := arg2; END_IF; vec1 := normalise(vec1); vec2 := normalise(vec2); ndim := SIZEOF(vec1.direction_ratios); mag := 0; res := dummy_gri || direction(vec1.direction_ratios); REPEAT i := 1 TO ndim BY 1; 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 THEN result := dummy_gri || vector(res,SQRT(mag)); ELSE result := dummy_gri || vector(vec1,0); END_IF; END; END_IF; RETURN(result); END_FUNCTION; -- vector_difference END_SCHEMA; -- technical_data_packaging