(* ISO TC184/SC4/WG3 N1941 AIM EXPRESS long form for ISO/IS 10303-224e3 2006-01-04 feature_based_process_planning long form Len Slovensky - Northrop Grumman/SCRA *) SCHEMA feature_based_process_planning; CONSTANT dummy_gri : geometric_representation_item := representation_item('') || geometric_representation_item(); dummy_tri : topological_representation_item := representation_item('') || topological_representation_item(); END_CONSTANT; TYPE angle_relator = ENUMERATION OF (equal, small, large); END_TYPE; -- angle_relator TYPE attribute_type = SELECT (label, text); END_TYPE; -- attribute_type TYPE axis2_placement = SELECT (axis2_placement_2d, axis2_placement_3d); END_TYPE; -- axis2_placement TYPE b_spline_curve_form = ENUMERATION OF (elliptic_arc, polyline_form, parabolic_arc, circular_arc, unspecified, hyperbolic_arc); END_TYPE; -- b_spline_curve_form TYPE b_spline_surface_form = ENUMERATION OF (surf_of_linear_extrusion, plane_surf, generalised_cone, toroidal_surf, conical_surf, spherical_surf, unspecified, ruled_surf, surf_of_revolution, cylindrical_surf, quadric_surf); END_TYPE; -- b_spline_surface_form TYPE boolean_operand = SELECT (solid_model); END_TYPE; -- boolean_operand TYPE characterized_definition = SELECT (characterized_object, characterized_product_definition, shape_definition); END_TYPE; -- characterized_definition TYPE characterized_material_property = SELECT (material_property_representation); END_TYPE; -- characterized_material_property TYPE characterized_product_definition = SELECT (product_definition, product_definition_relationship); END_TYPE; -- characterized_product_definition TYPE classification_item = SELECT (externally_defined_representation_with_parameters); END_TYPE; -- classification_item TYPE compound_item_definition = SELECT (list_representation_item, set_representation_item); END_TYPE; -- compound_item_definition TYPE context_dependent_measure = REAL; END_TYPE; -- context_dependent_measure TYPE count_measure = NUMBER; END_TYPE; -- count_measure TYPE curve_on_surface = SELECT (pcurve, surface_curve); END_TYPE; -- curve_on_surface TYPE date_time_or_event_occurrence = SELECT (date_time_select); END_TYPE; -- date_time_or_event_occurrence TYPE date_time_select = SELECT (date); 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 day_in_week_number = INTEGER; WHERE wr1: (1 <= SELF) AND (SELF <= 7); END_TYPE; -- day_in_week_number TYPE day_in_year_number = INTEGER; WHERE wr1: (1 <= SELF) AND (SELF <= 366); END_TYPE; -- day_in_year_number TYPE derived_property_select = SELECT (property_definition); END_TYPE; -- derived_property_select TYPE description_attribute_select = SELECT (action_request_solution, application_context, approval_role, date_role, 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 dimensional_characteristic = SELECT (dimensional_location, dimensional_size); END_TYPE; -- dimensional_characteristic TYPE document_reference_item = SELECT (action_method, externally_defined_feature_definition, directed_action, dimensional_characteristic_representation, product_definition_formation, externally_defined_dimension_definition, property_definition); END_TYPE; -- document_reference_item TYPE external_identification_item = SELECT (externally_defined_item, externally_defined_general_property); END_TYPE; -- external_identification_item TYPE feature_based_pp_action_item = SELECT (product_definition_formation); END_TYPE; -- feature_based_pp_action_item TYPE feature_based_pp_action_request_item = SELECT (product_definition_formation); END_TYPE; -- feature_based_pp_action_request_item TYPE feature_based_pp_approved_item = SELECT (directed_action, product_definition_formation); END_TYPE; -- feature_based_pp_approved_item TYPE feature_based_pp_classified_item = SELECT (product_definition_formation); END_TYPE; -- feature_based_pp_classified_item TYPE feature_based_pp_dated_item = SELECT (directed_action, document, versioned_action_request); END_TYPE; -- feature_based_pp_dated_item TYPE feature_based_pp_ordered_item = SELECT (product_definition_formation); END_TYPE; -- feature_based_pp_ordered_item TYPE feature_based_pp_organization_item = SELECT (action_directive, product_definition_formation, externally_defined_item, known_source); END_TYPE; -- feature_based_pp_organization_item TYPE feature_based_pp_person_and_organization_item = SELECT (action_directive, product_definition_formation); END_TYPE; -- feature_based_pp_person_and_organization_item 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 group_item = SELECT (instanced_feature, replicate_feature, transition_feature); END_TYPE; -- group_item TYPE id_attribute_select = SELECT (action, address, property_definition, shape_aspect, shape_aspect_relationship, application_context, group, representation); END_TYPE; -- id_attribute_select TYPE identification_item = SELECT (document); END_TYPE; -- identification_item TYPE identifier = STRING; END_TYPE; -- identifier 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 length_measure = REAL; END_TYPE; -- length_measure TYPE limit_condition = ENUMERATION OF (regardless_of_feature_size, maximum_material_condition, least_material_condition); END_TYPE; -- limit_condition 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 measure_value = SELECT (length_measure, plane_angle_measure, ratio_measure, parameter_value, context_dependent_measure, descriptive_measure, positive_length_measure, positive_plane_angle_measure, count_measure); END_TYPE; -- measure_value 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, derived_unit, person_and_organization, product_definition, property_definition_representation); END_TYPE; -- name_attribute_select TYPE parameter_value = REAL; END_TYPE; -- parameter_value TYPE pcurve_or_surface = SELECT (pcurve, surface); END_TYPE; -- pcurve_or_surface 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 preferred_surface_curve_representation = ENUMERATION OF (pcurve_s2, pcurve_s1, curve_3d); END_TYPE; -- preferred_surface_curve_representation 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 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, document_reference, group_assignment, security_classification_assignment); END_TYPE; -- role_select TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; END_TYPE; -- set_of_reversible_topology_item TYPE set_representation_item = SET [1:?] OF representation_item; END_TYPE; -- set_representation_item TYPE shape_definition = SELECT (product_definition_shape, shape_aspect, shape_aspect_relationship); END_TYPE; -- shape_definition TYPE shell = SELECT (open_shell, closed_shell); END_TYPE; -- shell TYPE si_prefix = ENUMERATION OF (exa, pico, mega, femto, atto, centi, nano, hecto, micro, tera, giga, milli, peta, deci, kilo, deca); END_TYPE; -- si_prefix TYPE si_unit_name = ENUMERATION OF (hertz, degree_celsius, siemens, sievert, lux, watt, ohm, second, becquerel, pascal, henry, tesla, volt, joule, kelvin, ampere, gram, steradian, mole, lumen, gray, candela, farad, radian, newton, metre, weber, coulomb); END_TYPE; -- si_unit_name TYPE source_item = SELECT (identifier); END_TYPE; -- source_item TYPE supported_item = SELECT (action_directive, action, action_method); END_TYPE; -- supported_item TYPE text = STRING; END_TYPE; -- text TYPE tolerance_method_definition = SELECT (tolerance_value, limits_and_fits); END_TYPE; -- tolerance_method_definition TYPE tolerance_select = SELECT (geometric_tolerance, plus_minus_tolerance); END_TYPE; -- tolerance_select TYPE transformation = SELECT (functionally_defined_transformation); END_TYPE; -- transformation TYPE transition_code = ENUMERATION OF (discontinuous, cont_same_gradient_same_curvature, cont_same_gradient, continuous); END_TYPE; -- transition_code TYPE trimming_select = SELECT (cartesian_point, parameter_value); END_TYPE; -- trimming_select TYPE unit = SELECT (named_unit, derived_unit); END_TYPE; -- unit TYPE value_qualifier = SELECT (precision_qualifier, type_qualifier, uncertainty_qualifier); END_TYPE; -- value_qualifier TYPE vector_or_direction = SELECT (vector, direction); END_TYPE; -- vector_or_direction TYPE week_in_year_number = INTEGER; WHERE wr1: (1 <= SELF) AND (SELF <= 53); END_TYPE; -- week_in_year_number 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,'FEATURE_BASED_PROCESS_PLANNING.' + '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,'FEATURE_BASED_PROCESS_PLANNING.' + '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_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,'FEATURE_BASED_PROCESS_PLANNING.' + '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,'FEATURE_BASED_PROCESS_PLANNING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; wr2: SIZEOF(USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.' + '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_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([ 'FEATURE_BASED_PROCESS_PLANNING.MANIFOLD_SOLID_BREP', 'FEATURE_BASED_PROCESS_PLANNING.FACETED_BREP', 'FEATURE_BASED_PROCESS_PLANNING.MAPPED_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0; wr2: SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([ 'FEATURE_BASED_PROCESS_PLANNING.MANIFOLD_SOLID_BREP', 'FEATURE_BASED_PROCESS_PLANNING.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0; wr3: SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | ( 'FEATURE_BASED_PROCESS_PLANNING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb) | (NOT (SIZEOF(QUERY ( fcs <* csh\connected_face_set. cfs_faces | (NOT ( 'FEATURE_BASED_PROCESS_PLANNING.ADVANCED_FACE' IN TYPEOF(fcs))) )) = 0)) )) = 0)) )) = 0; wr4: SIZEOF(QUERY ( msb <* QUERY ( it <* items | ( 'FEATURE_BASED_PROCESS_PLANNING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)) )) = 0; wr5: SIZEOF(QUERY ( brv <* QUERY ( it <* items | ( 'FEATURE_BASED_PROCESS_PLANNING.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 | ( 'FEATURE_BASED_PROCESS_PLANNING.MAPPED_ITEM' IN TYPEOF(it)) ) | (NOT ('FEATURE_BASED_PROCESS_PLANNING.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(['FEATURE_BASED_PROCESS_PLANNING.ELEMENTARY_SURFACE', 'FEATURE_BASED_PROCESS_PLANNING.B_SPLINE_SURFACE', 'FEATURE_BASED_PROCESS_PLANNING.SWEPT_SURFACE'] * TYPEOF( face_geometry)) = 1; wr2 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_CURVE' IN TYPEOF(oe\ oriented_edge.edge_element))) )) = 0)) )) = 0; wr3 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT (SIZEOF([ 'FEATURE_BASED_PROCESS_PLANNING.LINE', 'FEATURE_BASED_PROCESS_PLANNING.CONIC', 'FEATURE_BASED_PROCESS_PLANNING.POLYLINE', 'FEATURE_BASED_PROCESS_PLANNING.SURFACE_CURVE', 'FEATURE_BASED_PROCESS_PLANNING.B_SPLINE_CURVE'] * TYPEOF( oe.edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0; wr4 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (NOT ((( 'FEATURE_BASED_PROCESS_PLANNING.VERTEX_POINT' IN TYPEOF(oe\ edge.edge_start)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.CARTESIAN_POINT' IN TYPEOF( oe\edge.edge_start\vertex_point.vertex_geometry))) AND (( 'FEATURE_BASED_PROCESS_PLANNING.VERTEX_POINT' IN TYPEOF(oe\ edge.edge_end)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.CARTESIAN_POINT' IN TYPEOF( oe\edge.edge_end\vertex_point.vertex_geometry))))) )) = 0)) )) = 0; wr5 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | ('FEATURE_BASED_PROCESS_PLANNING.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound)) )) = 0; wr6 : (NOT ('FEATURE_BASED_PROCESS_PLANNING.SWEPT_SURFACE' IN TYPEOF(face_geometry))) OR (SIZEOF([ 'FEATURE_BASED_PROCESS_PLANNING.LINE', 'FEATURE_BASED_PROCESS_PLANNING.CONIC', 'FEATURE_BASED_PROCESS_PLANNING.POLYLINE', 'FEATURE_BASED_PROCESS_PLANNING.B_SPLINE_CURVE'] * TYPEOF( face_geometry\swept_surface.swept_curve)) = 1); wr7 : SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.VERTEX_LOOP' IN TYPEOF(bnds .bound)) ) | (NOT (( 'FEATURE_BASED_PROCESS_PLANNING.VERTEX_POINT' IN TYPEOF( vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.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([ 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP', 'FEATURE_BASED_PROCESS_PLANNING.VERTEX_LOOP'] * TYPEOF(bnd. bound)) = 1)) )) = 0; wr9 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds. bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path .edge_list | (( 'FEATURE_BASED_PROCESS_PLANNING.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 ( 'FEATURE_BASED_PROCESS_PLANNING.PCURVE' IN TYPEOF(sc_ag))) )) = 0))) )) = 0)) )) = 0; wr10: ((NOT ('FEATURE_BASED_PROCESS_PLANNING.SWEPT_SURFACE' IN TYPEOF(face_geometry))) OR ((NOT ( 'FEATURE_BASED_PROCESS_PLANNING.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 | ('FEATURE_BASED_PROCESS_PLANNING.EDGE_LOOP' IN TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.edge_list | (( 'FEATURE_BASED_PROCESS_PLANNING.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 angular_location SUBTYPE OF (dimensional_location); angle_selection : angle_relator; END_ENTITY; -- angular_location ENTITY angular_size SUBTYPE OF (dimensional_size); angle_selection : angle_relator; END_ENTITY; -- angular_size ENTITY angularity_tolerance SUBTYPE OF (geometric_tolerance_with_datum_reference); WHERE wr1: SIZEOF(SELF\geometric_tolerance_with_datum_reference. datum_system) < 3; END_ENTITY; -- angularity_tolerance 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,'FEATURE_BASED_PROCESS_PLANNING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; wr2: SIZEOF(USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; END_ENTITY; -- application_context ENTITY application_context_element SUPERTYPE OF (ONEOF (product_context,product_definition_context)); name : label; frame_of_reference : application_context; END_ENTITY; -- application_context_element 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_area SUBTYPE OF (shape_aspect); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape); wr2: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0; wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT ((2 <= SIZEOF(impl_rep. used_representation.items)) AND (SIZEOF(impl_rep. used_representation.items) <= 3))) )) = 0)) )) = 0; wr4: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND (SIZEOF(QUERY ( srwp_i <* pdr. used_representation.items | (NOT (srwp_i.name IN [ 'orientation','effective length','maximum length'])) )) > 0)) )) = 0) )) = 0; wr5: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'effective length')) )) = 1)) )) = 0)) )) <= 1; wr6: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'maximum length')) )) <= 1)) )) = 0)) )) = 0; wr7: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0; END_ENTITY; -- applied_area ENTITY applied_classification_assignment SUBTYPE OF (classification_assignment); items : SET [1:?] OF classification_item; WHERE wr1: NOT ((( 'FEATURE_BASED_PROCESS_PLANNING.EXTERNALLY_DEFINED_CLASS' IN TYPEOF(SELF.assigned_class)) AND (SELF.role.name = 'definitional class membership')) AND (SELF.assigned_class. name = 'library identifier')); wr2: SIZEOF(QUERY ( edir <* USEDIN(SELF.assigned_class,'FEATURE_BASED_PROCESS_PLANNING.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.' + 'RELATED_ITEM') | (((edir.name = 'name scope') AND (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY') IN TYPEOF(edir. relating_item))) AND (NOT (SIZEOF(QUERY ( gpa <* USEDIN(edir .relating_item,'FEATURE_BASED_PROCESS_PLANNING.' + 'GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | ((gpa.name = 'definitional') AND (NOT (SIZEOF(QUERY ( pdr <* USEDIN(gpa .derived_definition,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((pdr. used_representation.name = 'property value') AND ( 'FEATURE_BASED_PROCESS_PLANNING.VALUE_REPRESENTATION_ITEM' IN TYPEOF(pdr.used_representation.items))) )) >= 1))) )) = 0))) )) = 0; END_ENTITY; -- applied_classification_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_external_identification_assignment SUPERTYPE OF (ONEOF (library_property_version_assignment, library_class_version_assignment)) SUBTYPE OF (external_identification_assignment); items : SET [1:?] OF external_identification_item; END_ENTITY; -- applied_external_identification_assignment ENTITY applied_group_assignment SUBTYPE OF (group_assignment); items : SET [1:?] OF group_item; END_ENTITY; -- applied_group_assignment ENTITY applied_identification_assignment SUBTYPE OF (identification_assignment); items : SET [1:?] OF identification_item; END_ENTITY; -- applied_identification_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,'FEATURE_BASED_PROCESS_PLANNING.' + '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,'FEATURE_BASED_PROCESS_PLANNING.' + '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_role; role : label; DERIVE description : text := get_description_value(SELF); WHERE wr1: SIZEOF(USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; END_ENTITY; -- approval_role ENTITY approval_status; name : label; END_ENTITY; -- approval_status ENTITY assembly_component_usage SUPERTYPE OF (next_assembly_usage_occurrence) SUBTYPE OF (product_definition_usage); reference_designator : OPTIONAL identifier; END_ENTITY; -- assembly_component_usage 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: ((('FEATURE_BASED_PROCESS_PLANNING.UNIFORM_CURVE' IN TYPEOF( SELF)) OR ( 'FEATURE_BASED_PROCESS_PLANNING.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF))) OR ( 'FEATURE_BASED_PROCESS_PLANNING.BEZIER_CURVE' IN TYPEOF(SELF))) OR ( 'FEATURE_BASED_PROCESS_PLANNING.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: ((('FEATURE_BASED_PROCESS_PLANNING.UNIFORM_SURFACE' IN TYPEOF( SELF)) OR ( 'FEATURE_BASED_PROCESS_PLANNING.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF))) OR ( 'FEATURE_BASED_PROCESS_PLANNING.BEZIER_SURFACE' IN TYPEOF( SELF))) OR ('FEATURE_BASED_PROCESS_PLANNING.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 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_shape_representation SUBTYPE OF (shape_representation_with_parameters); WHERE wr1: SIZEOF(SELF.items) = 4; wr2: SIZEOF(QUERY ( it <* SELF.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1; wr3: SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1; wr4: SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'width')) )) = 1; wr5: SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'height')) )) = 1; END_ENTITY; -- block_shape_representation ENTITY boss SUBTYPE OF (feature_definition); WHERE wr1 : SELF\characterized_object.description IN ['circular','complex', 'rectangular']; wr2 : SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'boss height occurrence') AND ( SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ((( 'FEATURE_BASED_PROCESS_PLANNING.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr. relating_shape_aspect.description = 'linear')) AND (sdr. name = 'boss height')) )) = 1)) )) = 1)) )) = 0; wr3 : SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND ((1 <= SIZEOF(pdr. used_representation.items)) AND (SIZEOF(pdr. used_representation.items) <= 2))) )) = 1) )) = 1; wr4 : SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND (SIZEOF(QUERY ( srwp_i <* pdr. used_representation.items | ((srwp_i.name = 'orientation') OR (srwp_i.name = 'fillet radius')) )) = SIZEOF(pdr. used_representation.items))) )) = 1) )) = 1; wr5 : SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'fillet radius')) )) <= 1)) )) = 0)) )) = 0; wr6 : (NOT (SELF\characterized_object.description = 'circular')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'circular profile occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0); wr7 : SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'top condition occurrence') AND ( SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'boss top usage') AND ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.BOSS_TOP' IN TYPEOF(fcr. relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0; wr8 : (NOT (SELF\characterized_object.description = 'circular')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | (( 'FEATURE_BASED_PROCESS_PLANNING.TAPER' IN TYPEOF(fcr. related_shape_aspect)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.BOSS' IN TYPEOF(fcr. relating_shape_aspect))) )) = 1)) )) <= 1)) )) = 0); wr9 : (NOT (SELF\characterized_object.description = 'complex')) OR ( SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | (SIZEOF([ 'FEATURE_BASED_PROCESS_PLANNING.NGON_CLOSED_PROFILE', 'FEATURE_BASED_PROCESS_PLANNING.CLOSED_PATH_PROFILE'] * TYPEOF(sdr.relating_shape_aspect)) = 1) )) = 1)) )) = 1)) )) = 0); wr10: (NOT (SELF\characterized_object.description IN ['complex', 'rectangular'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((( 'FEATURE_BASED_PROCESS_PLANNING.TAPER' IN TYPEOF(fcr. related_shape_aspect)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.BOSS' IN TYPEOF(fcr. relating_shape_aspect))) AND (fcr.related_shape_aspect. description IN ['angle taper','directed taper'])) )) = 1)) )) <= 1)) )) = 0); wr11: (NOT (SELF\characterized_object.description = 'rectangular')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'rectangular profile occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | ('FEATURE_BASED_PROCESS_PLANNING.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0); wr12: SIZEOF(QUERY ( pdr <* get_property_definition_representations( SELF) | (('FEATURE_BASED_PROCESS_PLANNING.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'maximum feature limit')) )) >= 0; END_ENTITY; -- boss ENTITY boss_top SUBTYPE OF (shape_aspect); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition); wr2: SELF.description IN ['planar','complex']; wr3: (NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0); wr4: (NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0); wr5: (NOT (SELF.description = 'complex')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0); wr6: SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | (((sar.description = 'boss top usage') AND (sar.name IN ['boss height start', 'boss height end'])) AND ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | (((fcr.related_shape_aspect.description = 'top condition occurrence') AND ( 'FEATURE_BASED_PROCESS_PLANNING.BOSS' IN TYPEOF(fcr. related_shape_aspect.of_shape.definition))) AND ( 'FEATURE_BASED_PROCESS_PLANNING.BOSS_TOP' IN TYPEOF(fcr. relating_shape_aspect))) )) >= 1; wr7: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) <= 1)) )) = 0; wr8: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(impl_rep. used_representation.items) = 1)) )) = 0)) )) = 0; wr9: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'top radius')) )) <= 1)) )) = 0)) )) = 0; END_ENTITY; -- boss_top ENTITY bounded_curve SUPERTYPE OF (ONEOF (polyline,b_spline_curve,composite_curve)) SUBTYPE OF (curve); END_ENTITY; -- bounded_curve ENTITY bounded_surface SUPERTYPE OF (b_spline_surface) SUBTYPE OF (surface); END_ENTITY; -- bounded_surface 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 cartesian_point SUBTYPE OF (point); coordinates : LIST [1:3] OF length_measure; END_ENTITY; -- cartesian_point ENTITY cartesian_transformation_operator SUPERTYPE OF (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_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 chamfer SUBTYPE OF (transition_feature); WHERE wr1: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'chamfer face')) )) <= 1)) )) = 0; wr2: SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | ((( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER_OFFSET' IN TYPEOF( fcr.related_shape_aspect)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER' IN TYPEOF(fcr. relating_shape_aspect))) AND (fcr.related_shape_aspect. description = 'first offset')) )) = 1; wr3: SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | ((( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER_OFFSET' IN TYPEOF( fcr.related_shape_aspect)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER' IN TYPEOF(fcr. relating_shape_aspect))) AND (fcr.related_shape_aspect. description = 'second offset')) )) = 1; END_ENTITY; -- chamfer ENTITY chamfer_offset SUBTYPE OF (shape_aspect); WHERE wr1: SELF.description IN ['first offset','second offset']; wr2: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0; wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(impl_rep. used_representation.items) = 1)) )) = 0)) )) = 0; wr4: (NOT (SELF.description = 'first offset')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset amount')) )) = 1)) )) = 0)) )) = 0); wr5: (NOT (SELF.description = 'first offset')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'first face shape')) )) <= 1)) )) = 0); wr6: (NOT (SELF.description = 'second offset')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset amount')) OR (( SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM','FEATURE_BASED_PROCESS_PLANNING.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset angle'))) )) = 1)) )) = 0)) )) = 0); wr7: (NOT (SELF.description = 'second offset')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'second face shape')) )) <= 1)) )) = 0); wr8: SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar)) ) | (( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER' IN TYPEOF(sdr. relating_shape_aspect)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.CHAMFER_OFFSET' IN TYPEOF( sdr.related_shape_aspect))) )) = 1; END_ENTITY; -- chamfer_offset 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 circular_closed_profile SUBTYPE OF (shape_aspect); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition); wr2: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0; wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(impl_rep. used_representation.items) = 2)) )) = 0)) )) = 0; wr4: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0; wr5: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) = 1)) )) = 0)) )) = 0; END_ENTITY; -- circular_closed_profile ENTITY circular_pattern SUBTYPE OF (replicate_feature); WHERE wr1: SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ( SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT' IN TYPEOF(sdr. related_shape_aspect)) )) = 1) )) <= 3)) )) = 0; wr2: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0; wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT ((SIZEOF(impl_rep. used_representation.items) >= 3) AND (SIZEOF(impl_rep. used_representation.items) <= 5))) )) = 0)) )) = 0; wr4: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) <= 1)) )) = 0)) )) = 0; wr5: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM','FEATURE_BASED_PROCESS_PLANNING.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'base feature rotation')) )) <= 1)) )) = 0)) )) = 0; wr6: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((('FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.COUNT_MEASURE' IN TYPEOF(it\ measure_with_unit.value_component))) AND (it.name = 'number of features')) )) = 1)) )) = 0)) )) = 0; wr7: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM','FEATURE_BASED_PROCESS_PLANNING.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'angular spacing')) )) = 1)) )) = 0)) )) = 0; wr8: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0; END_ENTITY; -- circular_pattern ENTITY circular_runout_tolerance SUBTYPE OF (geometric_tolerance_with_datum_reference); WHERE wr1: SIZEOF(SELF\geometric_tolerance_with_datum_reference. datum_system) <= 2; END_ENTITY; -- circular_runout_tolerance ENTITY class SUBTYPE OF (group); END_ENTITY; -- class 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_path_profile SUBTYPE OF (shape_aspect); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition); wr2: SIZEOF(QUERY ( pd <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.' + 'DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0; wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(impl_rep. used_representation.items) = 1)) )) = 0)) )) = 0; wr4: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0; wr5: SIZEOF(QUERY ( pd <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.' + 'DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0; END_ENTITY; -- closed_path_profile ENTITY closed_shell SUBTYPE OF (connected_face_set); END_ENTITY; -- closed_shell 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_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: 'FEATURE_BASED_PROCESS_PLANNING.BOUNDED_CURVE' IN TYPEOF( parent_curve); END_ENTITY; -- composite_curve_segment ENTITY composite_hole SUBTYPE OF (compound_feature); WHERE wr1: SELF\characterized_object.description IN ['counterbore', 'countersunk']; wr2: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa. component_relationships | (('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND ( 'FEATURE_BASED_PROCESS_PLANNING.ROUND_HOLE' IN TYPEOF(sar. related_shape_aspect))) )) = 2)) )) = 1)) )) = 1; wr3: (NOT (SELF\characterized_object.description = 'countersunk')) OR (SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa. component_relationships | (( 'FEATURE_BASED_PROCESS_PLANNING.ROUND_HOLE' IN TYPEOF(sar. related_shape_aspect)) AND (NOT (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(sar.related_shape_aspect,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( sa_occ.description = 'change in diameter occurrence') AND ( SIZEOF(QUERY ( fcr2 <* QUERY ( sar2 <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar2.description = 'taper usage') AND ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar2))) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.TAPER' IN TYPEOF(fcr2. related_shape_aspect)) )) = 1)) )) = 0)) )) = 0))) )) = 1)) )) = 1)) )) = 1); END_ENTITY; -- composite_hole ENTITY composite_shape_aspect SUBTYPE OF (shape_aspect); INVERSE component_relationships : SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect; END_ENTITY; -- composite_shape_aspect ENTITY compound_feature SUBTYPE OF (feature_definition); WHERE wr1: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( csa.name = 'compound feature in solid') AND ( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa))) )) = 1)) )) = 1; wr2: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) )) = 1)) )) = 1; wr3: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( fcr <* csa. component_relationships | (NOT ('FEATURE_BASED_PROCESS_PLANNING.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr))) )) = 0)) )) = 1)) )) = 1; wr4: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) )) = 1)) )) = 1; wr5: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa. component_relationships | ( 'FEATURE_BASED_PROCESS_PLANNING.THREAD' IN TYPEOF(sar. related_shape_aspect)) )) = 0)) )) = 1)) )) = 1; wr6: SIZEOF(QUERY ( pds <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa. component_relationships | (( 'FEATURE_BASED_PROCESS_PLANNING.COMPOUND_FEATURE' IN TYPEOF( sar.related_shape_aspect)) AND (sar.related_shape_aspect\ characterized_object.name <> SELF\characterized_object.name)) )) = 0)) )) = 1)) )) = 1; END_ENTITY; -- compound_feature ENTITY compound_representation_item SUBTYPE OF (representation_item); item_element : compound_item_definition; END_ENTITY; -- compound_representation_item ENTITY concentricity_tolerance SUBTYPE OF (geometric_tolerance_with_datum_reference); WHERE wr1: SIZEOF(SELF\geometric_tolerance_with_datum_reference. datum_system) = 1; END_ENTITY; -- concentricity_tolerance 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_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_unit SUBTYPE OF (named_unit); name : label; END_ENTITY; -- context_dependent_unit ENTITY conversion_based_unit SUBTYPE OF (named_unit); name : label; conversion_factor : measure_with_unit; END_ENTITY; -- conversion_based_unit ENTITY curve SUPERTYPE OF (ONEOF (line,conic,pcurve,surface_curve)) SUBTYPE OF (geometric_representation_item); END_ENTITY; -- curve ENTITY cylindrical_shape_representation SUBTYPE OF (shape_representation_with_parameters); WHERE wr1: SIZEOF(SELF.items) = 3; wr2: SIZEOF(QUERY ( it <* SELF.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1; wr3: SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1; wr4: SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) = 1; END_ENTITY; -- cylindrical_shape_representation ENTITY cylindrical_surface SUBTYPE OF (elementary_surface); radius : positive_length_measure; END_ENTITY; -- cylindrical_surface ENTITY cylindricity_tolerance SUBTYPE OF (geometric_tolerance); WHERE wr1: NOT (('FEATURE_BASED_PROCESS_PLANNING.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE') IN TYPEOF(SELF)); END_ENTITY; -- cylindricity_tolerance ENTITY data_environment; name : label; description : text; elements : SET [1:?] OF property_definition_representation; END_ENTITY; -- data_environment ENTITY date SUPERTYPE OF (ONEOF (calendar_date,ordinal_date, week_of_year_and_day_date)); year_component : year_number; END_ENTITY; -- date 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,'FEATURE_BASED_PROCESS_PLANNING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; END_ENTITY; -- date_role ENTITY datum SUBTYPE OF (shape_aspect); identification : identifier; INVERSE established_by_relationships : SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect; WHERE wr1: SIZEOF(QUERY ( x <* SELF.established_by_relationships | ( SIZEOF(TYPEOF(x.relating_shape_aspect) * [ 'FEATURE_BASED_PROCESS_PLANNING.DATUM_FEATURE', 'FEATURE_BASED_PROCESS_PLANNING.DATUM_TARGET']) <> 1) )) = 0; END_ENTITY; -- datum ENTITY datum_feature SUBTYPE OF (shape_aspect); INVERSE feature_basis_relationship : shape_aspect_relationship FOR relating_shape_aspect; WHERE wr1: SIZEOF(QUERY ( sar <* bag_to_set(USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')) | (NOT ( 'FEATURE_BASED_PROCESS_PLANNING.DATUM' IN TYPEOF(sar. related_shape_aspect))) )) = 0; wr2: SELF.product_definitional = TRUE; END_ENTITY; -- datum_feature ENTITY datum_reference; precedence : INTEGER; referenced_datum : datum; WHERE wr1: precedence > 0; END_ENTITY; -- datum_reference ENTITY datum_target SUBTYPE OF (shape_aspect); target_id : identifier; INVERSE target_basis_relationship : shape_aspect_relationship FOR relating_shape_aspect; WHERE wr1: SIZEOF(QUERY ( sar <* bag_to_set(USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')) | (NOT ( 'FEATURE_BASED_PROCESS_PLANNING.DATUM' IN TYPEOF(sar. related_shape_aspect))) )) = 0; wr2: SELF.product_definitional = TRUE; END_ENTITY; -- datum_target ENTITY definitional_representation SUBTYPE OF (representation); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items); END_ENTITY; -- definitional_representation 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,'FEATURE_BASED_PROCESS_PLANNING.' + '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 dimensional_characteristic_representation; dimension : dimensional_characteristic; representation : shape_dimension_representation; END_ENTITY; -- dimensional_characteristic_representation 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 dimensional_location SUPERTYPE OF (ONEOF (angular_location,dimensional_location_with_path)) SUBTYPE OF (shape_aspect_relationship); END_ENTITY; -- dimensional_location ENTITY dimensional_location_with_path SUBTYPE OF (dimensional_location); path : shape_aspect; END_ENTITY; -- dimensional_location_with_path ENTITY dimensional_size SUPERTYPE OF (ONEOF (angular_size,dimensional_size_with_path)); applies_to : shape_aspect; name : label; WHERE wr1: applies_to.product_definitional = TRUE; END_ENTITY; -- dimensional_size ENTITY dimensional_size_with_path SUBTYPE OF (dimensional_size); path : shape_aspect; END_ENTITY; -- dimensional_size_with_path ENTITY directed_action SUBTYPE OF (executed_action); directive : action_directive; END_ENTITY; -- directed_action ENTITY directed_dimensional_location SUBTYPE OF (dimensional_location); END_ENTITY; -- directed_dimensional_location 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 direction_shape_representation SUBTYPE OF (shape_representation); WHERE wr1: SIZEOF(SELF.items) = 1; wr2: SIZEOF(QUERY ( it <* SELF.items | (NOT ( 'FEATURE_BASED_PROCESS_PLANNING.DIRECTION' IN TYPEOF(it))) )) = 0; END_ENTITY; -- direction_shape_representation 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 (characterized_object, document); WHERE wr1: (SIZEOF(QUERY ( adr <* QUERY ( dr <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.DOCUMENT_REFERENCE.ASSIGNED_DOCUMENT') | ( 'FEATURE_BASED_PROCESS_PLANNING.APPLIED_DOCUMENT_REFERENCE' IN TYPEOF(dr)) ) | ('FEATURE_BASED_PROCESS_PLANNING.EXTERNALLY_DEFINED_FEATURE_DEFINITION' IN TYPEOF(adr.items)) )) = 1) OR (SIZEOF(QUERY ( duc <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.DOCUMENT_USAGE_CONSTRAINT.SOURCE') | (NOT (SIZEOF(QUERY ( aduc <* QUERY ( duca <* USEDIN(duc,'FEATURE_BASED_PROCESS_PLANNING.DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.' + 'ASSIGNED_DOCUMENT_USAGE') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT') IN TYPEOF( duca)) ) | ('FEATURE_BASED_PROCESS_PLANNING.EXTERNALLY_DEFINED_FEATURE_DEFINITION' IN TYPEOF(aduc.items)) )) = 1)) )) = 0); wr2: SIZEOF(QUERY ( drt <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.' + 'DOCUMENT_REPRESENTATION_TYPE.REPRESENTED_DOCUMENT') | (drt. name = 'physical') )) = 1; END_ENTITY; -- document_file ENTITY document_reference ABSTRACT SUPERTYPE; assigned_document : document; source : label; DERIVE role : object_role := get_role(SELF); WHERE wr1: SIZEOF(USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.' + '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 document_with_class SUBTYPE OF (document); class : identifier; END_ENTITY; -- document_with_class 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_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 edge_round SUBTYPE OF (transition_feature); WHERE wr1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0); wr2: (NOT (SELF\shape_aspect.description = 'constant radius')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | ((NOT (SIZEOF( impl_rep.used_representation.items) >= 1)) AND (SIZEOF( impl_rep.used_representation.items) <= 3)) )) = 0)) )) = 0); wr3: (NOT (SELF.description = 'constant radius')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')) )) = 1)) )) = 0)) )) = 0); wr4: (NOT (SELF.description = 'constant radius')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'first offset')) )) <= 1)) )) = 0)) )) = 0); wr5: (NOT (SELF.description = 'constant radius')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'second offset')) )) <= 1)) )) = 0)) )) = 0); wr6: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'edge round face')) )) <= 1)) )) = 0; wr7: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'first face shape')) )) <= 1)) )) = 0; wr8: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'second face shape')) )) <= 1)) )) = 0; END_ENTITY; -- edge_round 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 executed_action SUBTYPE OF (action); END_ENTITY; -- executed_action ENTITY expanded_uncertainty SUBTYPE OF (standard_uncertainty); coverage_factor : REAL; END_ENTITY; -- expanded_uncertainty 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,'FEATURE_BASED_PROCESS_PLANNING.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; END_ENTITY; -- external_source ENTITY externally_defined_class SUBTYPE OF (externally_defined_item, class); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.KNOWN_SOURCE' IN TYPEOF(SELF. source); wr2: SELF.source.name = 'ISO 13584 library'; WR3: ( SIZEOF ( QUERY ( aoa <* USEDIN ( SELF.source, 'FEATURE_BASED_PROCESS_PLANNING.'+ 'FEATURE_BASED_PP_ORGANIZATION_ASSIGNMENT.ITEMS' )| aoa. role.name = 'library supplier' ))=1); wr4: SIZEOF(QUERY ( aoa <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | (('FEATURE_BASED_PROCESS_PLANNING.LIBRARY_CLASS_VERSION_ASSIGNMENT' IN TYPEOF(aoa)) AND (aoa.role.name = 'class version')) )) = 1; END_ENTITY; -- externally_defined_class ENTITY externally_defined_dimension_definition SUBTYPE OF (externally_defined_item, dimensional_size); WHERE wr1: SELF.source.description = 'externally defined dimension specification'; wr2: SIZEOF(QUERY ( adr <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.APPLIED_DOCUMENT_REFERENCE.ITEMS') | (adr.assigned_document.description = 'externally defined size dimension specification') )) <= 1; END_ENTITY; -- externally_defined_dimension_definition ENTITY externally_defined_feature_definition SUBTYPE OF (feature_definition, externally_defined_item); WHERE wr1 : (((((SELF\characterized_object.description = 'thread') AND ( SELF\externally_defined_item.item_id = 'external thread')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification')) OR (((SELF\ characterized_object.description = 'gear') AND (SELF\ externally_defined_item.item_id = 'external gear')) AND ( SELF\externally_defined_item.source.source_id = 'external feature specification'))) OR (((SELF\ characterized_object.description = 'marking') AND (SELF\ externally_defined_item.item_id = 'external marking')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification'))) OR (((SELF\ characterized_object.description = 'knurl') AND (SELF\ externally_defined_item.item_id = 'external knurl')) AND ( SELF\externally_defined_item.source.source_id = 'external feature specification')); wr2 : (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND ((5 <= SIZEOF(pdr. used_representation.items)) AND (SIZEOF(pdr. used_representation.items) <= 10))) )) = 1) )) = 1); wr3 : (NOT (SELF\characterized_object.description = 'marking')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND (SIZEOF(pdr.used_representation. items) = 2)) )) = 1) )) = 1); wr4 : (NOT (SELF\characterized_object.description = 'knurl')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND (SIZEOF(pdr.used_representation. items) = 1)) )) = 1) )) = 1); wr5 : (NOT (SELF\characterized_object.description IN ['knurl', 'thread'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'partial area occurrence') AND ( SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'applied area usage') AND ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.APPLIED_AREA' IN TYPEOF(sdr .relating_shape_aspect)) )) = 1)) )) <= 1)) )) = 0); wr6 : (NOT (SELF\characterized_object.description = 'marking')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'marking text')) )) = 1)) )) = 0)) )) = 0); wr7 : (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'removal direction')) AND (( it.description = 'internal') OR (it.description = 'external'))) )) = 1)) )) = 0)) )) = 0); wr8 : (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'qualifier')) )) <= 1)) )) = 0)) )) = 0); wr9 : (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'hand')) )) = 1)) )) = 0)) )) = 0); wr10: (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class')) )) = 1)) )) = 0)) )) = 0); wr11: (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'form')) )) = 1)) )) = 0)) )) = 0); wr12: (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'major diameter')) )) <= 1)) )) = 0)) )) = 0); wr13: (NOT (SELF\characterized_object.description = 'thread')) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of threads')) )) = 1)) )) = 0)) )) = 0); wr14: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class 2')) )) <= 1)) )) = 0)) )) = 0; wr15: SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal size')) )) <= 1)) )) = 0)) )) = 0; wr16: (NOT (SELF\characterized_object.description IN ['knurl','gear', 'thread'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | ( 'FEATURE_BASED_PROCESS_PLANNING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN( pds,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ,'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'applied shape') AND ('FEATURE_BASED_PROCESS_PLANNING.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | ( 'FEATURE_BASED_PROCESS_PLANNING.SHAPE_ASPECT' IN TYPEOF(sdr .relating_shape_aspect)) )) = 1) )) <= 1)) )) = 0); wr17: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) AND (10 <= SIZEOF(pdr. used_representation.items))) AND (SIZEOF(pdr. used_representation.items) >= 11)) )) = 1) )) = 1); wr18: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth')) )) = 1)) )) = 0)) )) = 0); wr19: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM','FEATURE_BASED_PROCESS_PLANNING.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'reference presure angle')) )) = 1)) )) = 0)) )) = 0); wr20: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor')) )) = 1)) )) = 0)) )) = 0); wr21: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal tool depth')) )) = 1)) )) = 0)) )) = 0); wr22: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'face width')) )) = 1)) )) = 0)) )) = 0); wr23: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter')) )) = 1)) )) = 0)) )) = 0); wr24: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'module or diametral pitch')) AND ((it.description = 'module') OR (it.description = 'diameter pitch'))) )) = 1)) )) = 0)) )) = 0); wr25: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM', 'FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute')) )) = 1)) )) = 0)) )) = 0); wr26: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((('FEATURE_BASED_PROCESS_PLANNING.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'internal or external gear')) AND ((it.description = 'internal') OR (it.description = 'external'))) )) = 1)) )) = 0)) )) = 0); wr27: (NOT (SELF\characterized_object.description IN ['gear'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF,'FEATURE_BASED_PROCESS_PLANNING.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'FEATURE_BASED_PROCESS_PLANNING.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'FEATURE_BASED_PROCESS_PLANNING.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF(['FEATURE_BASED_PROCESS_PLANNING.MEASURE_REPRESENTATION_ITEM','FEATURE_BASED_PROCESS_PLANNING.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius')) )) <= 1)) )) = 0)) )) = 0); END_ENTITY; -- externally_defined_feature_definition ENTITY externally_defined_general_property SUBTYPE OF (general_property, externally_defined_item); WHERE wr1: 'FEATURE_BASED_PROCESS_PLANNING.KNOWN_SOURCE' IN TYPEOF(SELF. source); wr2: SELF.source.name = 'ISO 13584 library'; wr3: SIZEOF(QUERY ( aoa <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | ((( 'FEATURE_BASED_PROCESS_PLANNING.' + 'LIBRARY_CLASS_VERSION_ASSIGNMENT') IN TYPEOF(aoa)) AND (aoa .role.name = 'property version')) )) = 1; wr4: SIZEOF(QUERY ( ap <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM') | ((ap .name = 'name scope') AND ( 'FEATURE_BASED_PROCESS_PLANNING.EXTERNALLY_DEFINED_CLASS' IN TYPEOF(ap.related_item))) )) >= 1; 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_item_relationship; name : label; description : OPTIONAL text; relating_item : externally_defined_item; related_item : externally_defined_item; END_ENTITY; -- externally_defined_item_relationship ENTITY externally_defined_representation_with_parameters SUBTYPE OF (representation); WHERE wr1: SIZEOF(QUERY ( adr <* USEDIN(SELF, 'FEATURE_BASED_PROCESS_PLANNING.' + 'APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS') | ( 'FEATURE_BASED_PROCESS_PLANNING.CLASSIFICATION_ASSIGNMENT' IN TYPEOF(adr)) )) = 1; wr2: SIZEOF(QUERY ( adr <* SELF.items | ( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(adr)) )) = 1; wr3: SIZEOF(QUERY ( adr <* SELF.items | (( 'FEATURE_BASED_PROCESS_PLANNING.PLACEMENT' IN TYPEOF(adr)) AND ('FEATURE_BASED_PROCESS_PLANNING.CARTESIAN_POINT' IN TYPEOF(adr.location))) )) = 1; END_ENTITY; -- externally_defined_representation_with_parameters 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 | ( 'FEATURE_BASED_PROCESS_PLANNING.FACE_OUTER_BOUND' IN TYPEOF( temp)) )) <= 1; END_ENTITY; -- face ENTITY face_bound SUBTYPE OF (topological_r