SCHEMA ap238_arm_schema; (* AP-238 ARM schema * * This combines the information requirement models for machining * defined by ISO 14649-10, 11, 12, 111 and 121, then augments them * with product geometry, geometric dimensioning and tolerancing, * product data management information, and information necessary to * harmonize the feature descriptions with the STEP manufacturing * application protocols and link to the aforementioned data. * * 2006-05-26 - Updated merged ARM EXPRESS for IS. * 2004-10-21 - first version of merged ARM EXPRESS for DIS. *) (* ************************************************************ *) (* ************************************************************ *) (* *) (* THE FOLLOWING IR REFERENCES ARE FROM THE ISO 14649 PARTS *) (* THEY ARE PERIPHERAL TO THE ARM, SO ARE REPLACED BY STUBS *) (* *) (* ************************************************************ *) (* ************************************************************ *) -- ISO 14649 references the approval Part 41 object, but we have -- added an ARM definition for approval below. -- ISO 14649 references the following Part 41 measure values, but we -- have added ARM definition for each of these things below. We had -- to do this to bring in proper units. -- length_measure, -- plane_angle_measure, -- positive_length_measure, -- time_measure TYPE parameter_value = REAL; END_TYPE; -- Part 41 TYPE positive_ratio_measure = REAL; END_TYPE; -- Part 41 TYPE address = STRING; END_TYPE; -- Part 41 TYPE date = STRING; END_TYPE; -- Part 41 TYPE date_and_time = STRING; END_TYPE; -- Part 41 TYPE identifier = STRING; END_TYPE; -- Part 41 TYPE label = STRING; END_TYPE; -- Part 41 TYPE measure_value = STRING; END_TYPE; -- Part 41 TYPE organization = STRING; END_TYPE; -- Part 41 TYPE person = STRING; END_TYPE; -- Part 41 TYPE person_and_organization = STRING; END_TYPE; -- Part 41 TYPE text = STRING; END_TYPE; -- Part 41 TYPE axis2_placement_3d = STRING; END_TYPE; -- Part 42 TYPE b_spline_curve = STRING; END_TYPE; -- Part 42 TYPE block = STRING; END_TYPE; -- Part 42 TYPE bounded_curve = STRING; END_TYPE; -- Part 42 TYPE bounded_pcurve = STRING; END_TYPE; -- Part 42 TYPE bounded_surface = STRING; END_TYPE; -- Part 42 TYPE cartesian_point = STRING; END_TYPE; -- Part 42 TYPE curve = STRING; END_TYPE; -- Part 42 TYPE direction = STRING; END_TYPE; -- Part 42 TYPE edge_curve = STRING; END_TYPE; -- Part 42 TYPE elementary_surface = STRING; END_TYPE; -- Part 42 TYPE face = STRING; END_TYPE; -- Part 42 TYPE open_shell = STRING; END_TYPE; -- Part 42 TYPE path = STRING; END_TYPE; -- Part 42 TYPE plane = STRING; END_TYPE; -- Part 42 TYPE right_circular_cylinder = STRING; END_TYPE; -- Part 42 TYPE representation_context = STRING; END_TYPE; -- Part 43 TYPE advanced_face = STRING; END_TYPE; -- AIC 511 TYPE advanced_brep_shape_representation = STRING; END_TYPE; -- AIC 514 TYPE edge_based_wireframe_shape_representation = STRING; END_TYPE; -- AIC 501 TYPE faceted_brep_shape_representation = STRING; END_TYPE; -- AIC 512 TYPE geometrically_bounded_surface_shape_representation = STRING; END_TYPE; -- AIC 507 TYPE geometrically_bounded_wireframe_shape_representation = STRING; END_TYPE; -- AIC 510 TYPE manifold_surface_shape_representation = STRING; END_TYPE; -- AIC 509 TYPE non_manifold_surface_shape_representation = STRING; END_TYPE; -- AIC 508 TYPE shell_based_wireframe_shape_representation = STRING; END_TYPE; -- AIC 502 TYPE shape_representation = STRING; END_TYPE; -- Part 41 -- STUBS FOR GD&T ELEMENTS FROM 1050/1051 TYPE Axis_placement = STRING; END_TYPE; TYPE Shape_element = STRING; END_TYPE; (* ************************************************************ *) (* ************************************************************ *) (* MEASURE VALUES AND QUALIFICATIONS *) (* *) (* These definitions replace the measures defined in 14649 *) (* so measures can describe units and define qualifications *) (* compatible with the harmonized GD&T definitions below. *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY value_with_unit; unit : STRING; -- unit; value_component : NUMBER; -- measure_value; END_ENTITY; ENTITY value_with_tolerance SUBTYPE OF (value_with_unit); limitation : OPTIONAL limitation_select; significant_digits : OPTIONAL INTEGER; END_ENTITY; ENTITY value_range; lower_range : value_with_unit; upper_range : value_with_unit; significant_digits : OPTIONAL INTEGER; END_ENTITY; TYPE limitation_select = SELECT ( limit_qualifier, plus_minus_value, limits_and_fits ); END_TYPE; ENTITY plus_minus_value; lower_limit : NUMBER; -- measure_value; upper_limit : NUMBER; -- measure_value; END_ENTITY; ENTITY limits_and_fits; deviation : STRING; grade : STRING; its_fitting_type : OPTIONAL STRING; END_ENTITY; ENTITY limit_qualifier; qualifier: STRING; END_ENTITY; ENTITY length_measure SUBTYPE OF (value_with_unit); END_ENTITY; ENTITY toleranced_length_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY time_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY plane_angle_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY pressure_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY speed_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY rot_speed_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY area_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY mass_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY volume_measure SUBTYPE OF (value_with_tolerance); END_ENTITY; ENTITY Measurement_path; defined_by : curve; defined_in : representation_context; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* HARMONIZED GD&T DEFINITIONS *) (* *) (* These definitions have been harmonized across AP 214, AP 224 *) (* and Module 1050/1051. *) (* *) (* ************************************************************ *) (* ************************************************************ *) (* ================================================== *) (* Size Dimensions *) TYPE dimension_value_select = SELECT ( value_with_tolerance, value_range ); END_TYPE; ENTITY Geometric_dimension ABSTRACT SUPERTYPE OF (ONEOF (Location_dimension, Size_dimension)); id : STRING; dimension_value : dimension_value_select; notes : SET[0:?] OF STRING; END_ENTITY; (* ================================================== *) (* Size Dimensions *) ENTITY Size_dimension ABSTRACT SUPERTYPE OF (ONEOF (Angular_size_dimension, Curved_size_dimension, Diameter_size_dimension, Externally_defined_size_dimension, Height_size_dimension, Length_size_dimension, Radial_size_dimension, Thickness_size_dimension, Width_size_dimension)) SUBTYPE OF (Geometric_dimension); applied_to : Shape_element; envelope_principle : OPTIONAL BOOLEAN; END_ENTITY; ENTITY Angular_size_dimension SUBTYPE OF (Size_dimension); full : BOOLEAN; major_angle : BOOLEAN; END_ENTITY; ENTITY Curved_size_dimension SUBTYPE OF (Size_dimension); END_ENTITY; ENTITY Diameter_size_dimension SUBTYPE OF (Size_dimension); END_ENTITY; ENTITY Externally_defined_size_dimension SUBTYPE OF (Size_dimension); name : STRING; used_path : OPTIONAL Measurement_path; defining_document : STRING; END_ENTITY; ENTITY Height_size_dimension SUBTYPE OF (Size_dimension); used_path : OPTIONAL Measurement_path; END_ENTITY; ENTITY Length_size_dimension SUBTYPE OF (Size_dimension); used_path : OPTIONAL Measurement_path; END_ENTITY; ENTITY Radial_size_dimension SUBTYPE OF (Size_dimension); radius_type : OPTIONAL STRING; END_ENTITY; ENTITY Thickness_size_dimension SUBTYPE OF (Size_dimension); used_path : OPTIONAL Measurement_path; END_ENTITY; ENTITY Width_size_dimension SUBTYPE OF (Size_dimension); used_path : OPTIONAL Measurement_path; END_ENTITY; (* ================================================== *) (* Location Dimensions *) ENTITY Location_dimension ABSTRACT SUPERTYPE OF (ONEOF (Angular_location_dimension, Curved_distance_dimension, Linear_distance_dimension)) SUBTYPE OF (Geometric_dimension); description : OPTIONAL STRING; directed : OPTIONAL BOOLEAN; origin : Shape_element; target : Shape_element; END_ENTITY; ENTITY Angular_location_dimension SUBTYPE OF (Location_dimension); orientation : OPTIONAL Axis_placement; END_ENTITY; ENTITY Curved_distance_dimension SUBTYPE OF (Location_dimension); used_path : Measurement_path; END_ENTITY; ENTITY Linear_distance_dimension SUBTYPE OF (Location_dimension); orientation : OPTIONAL Axis_placement; END_ENTITY; (* ================================================== *) (* Geometric Tolerances *) ENTITY Geometric_tolerance ABSTRACT SUPERTYPE OF (ONEOF (Angularity_tolerance, Circular_runout_tolerance, Coaxiality_tolerance, Concentricity_tolerance, Cylindricity_tolerance, Flatness_tolerance, Line_profile_tolerance, Parallelism_tolerance, Perpendicularity_tolerance, Position_tolerance, Roundness_tolerance, Straightness_tolerance, Surface_profile_tolerance, Symmetry_tolerance, Total_runout_tolerance)); name : OPTIONAL STRING; applied_to : Shape_element; modification : OPTIONAL Tolerance_condition; qualifying_note : OPTIONAL STRING; segment_size : OPTIONAL Value_with_unit; significant_digits : OPTIONAL INTEGER; tolerance_value : Value_with_unit; WHERE WR1: (NOT (EXISTS(segment_size))) OR ('AP238_ARM_SCHEMA.LENGTH_MEASURE' IN TYPEOF(segment_size.value_component)); WR2: (NOT (EXISTS(tolerance_value))) OR ('AP238_ARM_SCHEMA.LENGTH_MEASURE' IN TYPEOF(tolerance_value.value_component)); WR3: (NOT (EXISTS(significant_digits))) OR (significant_digits > 0); END_ENTITY; ENTITY Geometric_tolerance_relationship; relation_type : STRING; relating : Geometric_tolerance; related : Geometric_tolerance; END_ENTITY; ENTITY Angularity_tolerance SUBTYPE OF (Geometric_tolerance); reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; ENTITY Circular_runout_tolerance SUBTYPE OF (Geometric_tolerance); angle : REAL; reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; ENTITY Coaxiality_tolerance SUBTYPE OF (Geometric_tolerance); reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; ENTITY Concentricity_tolerance SUBTYPE OF (Geometric_tolerance); reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; ENTITY Cylindricity_tolerance SUBTYPE OF (Geometric_tolerance); END_ENTITY; ENTITY Flatness_tolerance SUBTYPE OF (Geometric_tolerance); END_ENTITY; ENTITY Line_profile_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; reference_datum : SET[0:3] OF Datum_reference; END_ENTITY; ENTITY Parallelism_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; ENTITY Perpendicularity_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; reference_datum : SET[1:3] OF Datum_reference; END_ENTITY; ENTITY Position_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; reference_datum : SET[0:3] OF Datum_reference; END_ENTITY; ENTITY Roundness_tolerance SUBTYPE OF (Geometric_tolerance); END_ENTITY; ENTITY Straightness_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; END_ENTITY; ENTITY Surface_profile_tolerance SUBTYPE OF (Geometric_tolerance); reference_datum : SET[0:3] OF Datum_reference; END_ENTITY; ENTITY Symmetry_tolerance SUBTYPE OF (Geometric_tolerance); affected_plane : OPTIONAL Axis_placement; reference_datum : SET[1:3] OF Datum_reference; END_ENTITY; ENTITY Total_runout_tolerance SUBTYPE OF (Geometric_tolerance); angle : REAL; reference_datum : SET[1:2] OF Datum_reference; END_ENTITY; (* ================================================== *) (* Datums and such *) ENTITY Tolerance_condition; condition : STRING; END_ENTITY; ENTITY Tolerance_zone; form_type : STRING; zone_for : SET[1:?] OF Geometric_tolerance; END_ENTITY; ENTITY Tolerance_zone_definition; defining : Tolerance_zone; first_element : Shape_element; second_element : OPTIONAL Shape_element; END_ENTITY; ENTITY Projection SUBTYPE OF (Tolerance_zone_definition); projection_end : Shape_element; projection_length : Value_with_unit; END_ENTITY; ENTITY Derived_geometry; derived_from : SET [1:?] OF Shape_element; role: STRING; END_ENTITY; -- TARGETS ============================== ENTITY Datum_target; id : STRING; END_ENTITY; ENTITY Placed_target ABSTRACT SUPERTYPE OF (ONEOF (Target_circle, Target_point, Target_rectangle, Target_straight_line)) SUBTYPE OF (Datum_target); defined_in : STRING; -- Geometric_coordinate_space; parameter_reference : Axis_placement; END_ENTITY; ENTITY Target_area SUBTYPE OF (Datum_target); END_ENTITY; ENTITY Target_circle SUBTYPE OF (Placed_target); diameter : value_with_unit; END_ENTITY; ENTITY Target_point SUBTYPE OF (Placed_target); END_ENTITY; ENTITY Target_rectangle SUBTYPE OF (Placed_target); target_length : value_with_unit; target_width : value_with_unit; END_ENTITY; ENTITY Target_straight_line SUBTYPE OF (Placed_target); target_length : value_with_unit; END_ENTITY; -- DATUMS ============================== ENTITY Datum_reference; precedence : INTEGER; referenced_datum: Datum; END_ENTITY; ENTITY Datum ABSTRACT SUPERTYPE; END_ENTITY; ENTITY Single_datum SUBTYPE OF (Datum); datum_name : STRING; modification : OPTIONAL Tolerance_condition; END_ENTITY; ENTITY Datum_defined_by_feature SUBTYPE OF (Single_datum); defined_by: Shape_element; END_ENTITY; ENTITY Datum_defined_by_targets SUBTYPE OF (Single_datum); rule_description : STRING; defined_by: SET [1:?] OF Datum_target; END_ENTITY; ENTITY Datum_defined_by_derived_shape SUBTYPE OF (Single_datum,Derived_geometry); END_ENTITY; ENTITY Common_datum SUBTYPE OF (Datum); made_up_by : SET[2:?] OF Single_datum; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* PRODUCT DATA MANAGEMENT DEFINITIONS *) (* *) (* These definitions are based on Modules 1012 and 1015 as *) (* well timestamp information specific to this part. *) (* *) (* ************************************************************ *) (* ************************************************************ *) TYPE last_modified_timestamp_item = SELECT ( Executable, Operation, Project, Toolpath, Workpiece ); END_TYPE; ENTITY Last_modified_timestamp; date_and_time_value : date_and_time; items : SET [1:?] OF last_modified_timestamp_item; END_ENTITY; (* Based on Module 1012 *) ENTITY Approval; status : Approval_status; purpose : STRING; planned_date : OPTIONAL STRING; actual_date : OPTIONAL STRING; END_ENTITY; ENTITY Approval_relationship; relation_type : STRING; relating_approval : Approval; related_approval : Approval; description : OPTIONAL STRING; END_ENTITY; ENTITY Approval_status; status_name : STRING; END_ENTITY; ENTITY Approving_person_organization; person_organization : person_and_organization; approval_date : OPTIONAL STRING; authorized_approval : Approval; role : OPTIONAL STRING; END_ENTITY; (* Based on Module 1015 *) TYPE security_classification_item = SELECT ( Executable, Operation, Project, Toolpath, Workpiece ); END_TYPE; ENTITY Security_classification; classification_level : STRING; description : STRING; END_ENTITY; ENTITY Security_classification_assignment; classification : Security_classification; items : SET [1:?] OF security_classification_item; END_ENTITY; (* for associated person_and_organization *) ENTITY Assigned_person; person_and_organization_value: person_and_organization; role: STRING; END_ENTITY; (* for associated organization *) ENTITY Assigned_organization; organization_value: organization; role: STRING; END_ENTITY; (* for associated dates *) ENTITY Assigned_date; date_value : date; role: STRING; END_ENTITY; (* for associated dates and times *) ENTITY Assigned_time; date_and_time_value : date_and_time; role: STRING; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* TYPES DEFINED IN GENERAL PROCESS DATA ISO 14649-10 *) (* *) (* Version IS date: 2004-12-15 *) (* Version 6.1 date: 2004-06-25 (unchanged) *) (* Author: ISO TC184/SC1/WG7 *) (* ************************************************************ *) (* ************************************************************ *) (* ************************************************************ *) (* ************************************************************ *) (* *) (* General types and definitions *) (* *) (* ************************************************************ *) (* ************************************************************ *) TYPE rot_direction = ENUMERATION OF (cw,ccw); END_TYPE; (* ************************************************************ *) (* ************************************************************ *) (* *) (* PROJECT *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY project; (* m0 *) its_id: identifier; main_workplan: workplan; its_workpieces: SET [0:?] OF workpiece; its_owner: OPTIONAL person_and_address; its_release: OPTIONAL date_and_time; its_status: OPTIONAL approval; (* Informal proposition: its_id shall be unique within the part programme. *) END_ENTITY; ENTITY person_and_address; (* m0 *) its_person: person; its_address: OPTIONAL address; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* Workpiece and manufacturing feature *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY workpiece; (* m1 *) its_id: identifier; its_material: OPTIONAL material; global_tolerance: OPTIONAL length_measure; its_rawpiece: OPTIONAL workpiece; -- its_geometry: OPTIONAL advanced_brep_shape_representation; its_geometry: OPTIONAL shape_representation; -- RELAXED BY 10303-238 its_bounding_geometry: OPTIONAL bounding_geometry_select; clamping_positions: SET [0:?] OF cartesian_point; -- ADDED BY 10303-238, fields for PDM information its_approvals: SET [0:?] OF approval; its_categories: SET [0:?] OF STRING; its_components: SET [0:?] OF workpiece_assembly_component; its_datestamps: SET [0:?] OF assigned_date; its_orgs: SET [0:?] OF assigned_organization; its_people: SET [0:?] OF assigned_person; its_related_geometry: SET [0:?] OF shape_representation; its_timestamps: SET [0:?] OF assigned_time; product_approvals: SET [0:?] OF approval; product_datestamps: SET [0:?] OF assigned_date; product_orgs: SET [0:?] OF assigned_organization; product_people: SET [0:?] OF assigned_person; product_timestamps: SET [0:?] OF assigned_time; revision_approvals: SET [0:?] OF approval; revision_datestamps: SET [0:?] OF assigned_date; revision_id: OPTIONAL identifier; revision_orgs: SET [0:?] OF assigned_organization; revision_people: SET [0:?] OF assigned_person; revision_timestamps: SET [0:?] OF assigned_time; END_ENTITY; -- ADDED BY 10303-238 ENTITY workpiece_assembly_component; component: workpiece; originating_orientation: axis2_placement_3d; resulting_orientation: axis2_placement_3d; reference_designator: STRING; END_ENTITY; (* ************************************************************ *) (* Material *) (* ************************************************************ *) ENTITY material; (* m1 *) standard_identifier: label; material_identifier: label; material_property: SET [0:?] OF property_parameter; END_ENTITY; (* ************************************************************ *) (* Part Properties *) (* ************************************************************ *) TYPE general_property_item = SELECT ( Shape_element, Workpiece ); END_TYPE; ENTITY general_property -- ADDED BY 10303-238 ABSTRACT SUPERTYPE; description: label; owner: general_property_item; related_properties: SET [0:?] OF general_property; specifications: SET [0:?] OF specification; END_ENTITY; ENTITY part_property -- ADDED BY 10303-238 SUBTYPE OF (general_property); part_characteristics: SET [0:?] OF property_parameter; END_ENTITY; ENTITY surface_property -- ADDED BY 10303-238 SUBTYPE OF (general_property); is_surface_finish: BOOLEAN; surface_characteristics: SET [0:?] OF property_parameter; END_ENTITY; ENTITY process_property -- ADDED BY 10303-238 SUBTYPE OF (general_property); process_name: label; process_characteristics: SET [0:?] OF property_parameter; END_ENTITY; ENTITY material_property -- ADDED BY 10303-238 SUBTYPE OF (general_property); material_characteristics: SET [0:?] OF property_parameter; material_hardness: SET [0:?] OF hardness; END_ENTITY; ENTITY hardness; -- ADDED BY 10303-238 scale: label; nominal: value_with_unit; high_value: OPTIONAL value_with_unit; low_value: OPTIONAL value_with_unit; END_ENTITY; (* ************************************************************ *) (* Property parameter *) (* ************************************************************ *) ENTITY property_parameter (* m0 *) SUPERTYPE OF (ONEOF (descriptive_parameter,numeric_parameter)); parameter_name: label; END_ENTITY; ENTITY descriptive_parameter (* m0 *) SUBTYPE OF (property_parameter); descriptive_string: text; END_ENTITY; ENTITY numeric_parameter (* m0 *) SUBTYPE OF (Property_parameter); its_parameter_value: parameter_value; its_parameter_unit: label; END_ENTITY; (* ************************************************************ *) (* Parts Library Reference *) (* ************************************************************ *) ENTITY externally_defined_representation; -- ADDED BY 10303-238 identified_by: library_part_assignment; location: OPTIONAL cartesian_point; placement: OPTIONAL Axis_placement; END_ENTITY; ENTITY library_part_assignment; -- ADDED BY 10303-238 definitional_class_bsu: class_bsu; definitional_property_value_pairs: SET [0:?] OF library_property_value; END_ENTITY; ENTITY library_property_value; -- ADDED BY 10303-238 value_property_bsu: property_bsu; value_amount: measure_value; END_ENTITY; ENTITY bsu; -- ADDED BY 10303-238 code: label; END_ENTITY; ENTITY class_bsu -- ADDED BY 10303-238 SUBTYPE OF (bsu); defined_by: supplier_bsu; version: label; END_ENTITY; ENTITY property_bsu -- ADDED BY 10303-238 SUBTYPE OF (bsu); name_scope: class_bsu; version: label; END_ENTITY; ENTITY supplier_bsu -- ADDED BY 10303-238 SUBTYPE OF (bsu); END_ENTITY; (* ************************************************************ *) (* Bounding geometry *) (* ************************************************************ *) TYPE bounding_geometry_select = SELECT ( block, right_circular_cylinder, (* m1 *) advanced_brep_shape_representation, edge_based_wireframe_shape_representation, -- ADDED BY 10303-238 faceted_brep_shape_representation, -- ADDED BY 10303-238 geometrically_bounded_surface_shape_representation, -- ADDED BY 10303-238 geometrically_bounded_wireframe_shape_representation, -- ADDED BY 10303-238 manifold_surface_shape_representation, -- ADDED BY 10303-238 non_manifold_surface_shape_representation, -- ADDED BY 10303-238 shell_based_wireframe_shape_representation -- ADDED BY 10303-238 ); END_TYPE; (* ************************************************************ *) (* Manufacturing feature *) (* ************************************************************ *) ENTITY manufacturing_feature (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(region, two5D_manufacturing_feature, transition_feature)); its_id: identifier; its_workpiece: workpiece; its_operations: SET [0:?] OF machining_operation; explicit_representation : OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* Catalogue of manufacturing feature *) (* *) (* ************************************************************ *) (* ************************************************************ *) (* ************************************************************ *) (* Region *) (* ************************************************************ *) ENTITY region (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (region_surface_list, region_projection, topological_region)) SUBTYPE OF (manufacturing_feature); feature_placement: OPTIONAL axis2_placement_3d; END_ENTITY; ENTITY region_projection (* m1 *) SUBTYPE OF (region); proj_curve : bounded_curve; proj_dir : direction; depth : toleranced_length_measure; END_ENTITY; ENTITY region_surface_list (* m1 *) SUBTYPE OF (region); surface_list : LIST [1:?] OF bounded_surface; END_ENTITY; ENTITY topological_region (* t0 t1 *) -- SUBTYPE OF (region, open_shell); -- USE OF Part 42 geometry not allowed in ARM SUBTYPE OF (region); -- WHERE -- WR1: SIZEOF(QUERY(it <* SELF.cfs_faces | NOT('AP238_ARM_SCHEMA.ADVANCED_FACE' IN TYPEOF(it)))) = 0; END_ENTITY; (* ************************************************************ *) (* 2.5D manufacturing feature *) (* ************************************************************ *) ENTITY two5D_manufacturing_feature (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(machining_feature, replicate_feature, compound_feature)) SUBTYPE OF (manufacturing_feature); feature_placement: axis2_placement_3d; END_ENTITY; (* ************************************************************ *) (* Machining feature *) (* ************************************************************ *) ENTITY machining_feature (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(planar_face, pocket, slot, step, round_hole, toolpath_feature, profile_feature, boss, spherical_cap, rounded_end, thread)) SUBTYPE OF (two5D_manufacturing_feature); depth: OPTIONAL elementary_surface; -- THE OPTIONAL QUALIFICATION ADDED BY 10303-238 END_ENTITY; (* ************************************************************ *) (* Planer face *) (* ************************************************************ *) ENTITY planar_face (* m1 *) SUBTYPE OF (machining_feature); course_of_travel: linear_path; removal_boundary: linear_profile; face_boundary: OPTIONAL closed_profile; its_boss: SET [0:?] OF boss; removal_depth: length_measure; -- ADDED BY 10303-238 removal_direction: direction; -- ADDED BY 10303-238 (* Informal propositions: - The entire profile lies in the local xy plane. - The profile is not self-intersecting. *) END_ENTITY; (* ************************************************************ *) (* Pocket *) (* ************************************************************ *) ENTITY pocket (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(closed_pocket, open_pocket)) SUBTYPE OF (machining_feature); its_boss: SET [0:?] OF boss; slope: OPTIONAL plane_angle_measure; bottom_condition: pocket_bottom_condition; planar_radius: OPTIONAL toleranced_length_measure; orthogonal_radius: OPTIONAL toleranced_length_measure; bottom_at_path_end: BOOLEAN; -- ADDED BY 10303-238 course_of_travel: linear_path; -- ADDED BY 10303-238 top_fillet_radius: OPTIONAL toleranced_length_measure;-- ADDED BY 10303-238 END_ENTITY; ENTITY closed_pocket (* m1 *) SUBTYPE OF (pocket); feature_boundary: closed_profile; (* Informal propositions: - The entire profile lies in the feature's local xy plane. - The profile is closed and not self-intersecting. *) END_ENTITY; ENTITY open_pocket (* m1 *) SUBTYPE OF (pocket); open_boundary: open_profile; wall_boundary: OPTIONAL open_profile; (* Informal propositions: - The entire open_boundary profile lies in the local xy plane. - The profile are is not self-intersecting. - Together the two open_profiles form a closed profile. - wall_boundary is for information only. *) END_ENTITY; ENTITY pocket_bottom_condition (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (through_pocket_bottom_condition, planar_pocket_bottom_condition, radiused_pocket_bottom_condition, general_pocket_bottom_condition)); END_ENTITY; ENTITY through_pocket_bottom_condition (* m1 *) SUBTYPE OF (pocket_bottom_condition); END_ENTITY; ENTITY planar_pocket_bottom_condition (* m1 *) SUBTYPE OF (pocket_bottom_condition); END_ENTITY; ENTITY radiused_pocket_bottom_condition (* m1 *) SUBTYPE OF (pocket_bottom_condition); floor_radius_center: cartesian_point; floor_radius: toleranced_length_measure; END_ENTITY; ENTITY general_pocket_bottom_condition (* m1 *) SUBTYPE OF (pocket_bottom_condition); shape: region; WHERE WR1: SIZEOF(shape\manufacturing_feature.its_operations) = 0; END_ENTITY; (* ************************************************************ *) (* Slot *) (* ************************************************************ *) ENTITY slot (* m1 *) SUBTYPE OF (machining_feature); course_of_travel: travel_path; swept_shape: open_profile; end_conditions: LIST[0:2] OF slot_end_type; WHERE WR1: ( ( SIZEOF(QUERY (it <* SELF.end_conditions | ('AP238_ARM_SCHEMA.LOOP_SLOT_END_TYPE' IN TYPEOF(it)) )) = 1) AND (SIZEOF(end_conditions) = 1) ) OR (SIZEOF(end_conditions) <> 1); (* Informal propositions: - The entire travel_path lies in the local xy plane. - The travel_path is not self-intersecting. *) END_ENTITY; ENTITY slot_end_type (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (woodruff_slot_end_type, radiused_slot_end_type, flat_slot_end_type, loop_slot_end_type, open_slot_end_type)); END_ENTITY; ENTITY woodruff_slot_end_type (* m1 *) SUBTYPE OF (slot_end_type); radius: toleranced_length_measure; END_ENTITY; ENTITY radiused_slot_end_type (* m1 *) SUBTYPE OF (slot_end_type); END_ENTITY; ENTITY flat_slot_end_type (* m1 *) SUBTYPE OF (slot_end_type); corner_radius1: toleranced_length_measure; corner_radius2: toleranced_length_measure; END_ENTITY; ENTITY loop_slot_end_type (* m1 *) SUBTYPE OF (slot_end_type); END_ENTITY; ENTITY open_slot_end_type (* m1 *) SUBTYPE OF (slot_end_type); END_ENTITY; (* ************************************************************ *) (* Step *) (* ************************************************************ *) ENTITY step (* m1 *) SUBTYPE OF (machining_feature); open_boundary: linear_path; wall_boundary: OPTIONAL vee_profile; its_boss: SET[0:?] OF boss; (* Informal propositions: - The entire linear_path lies in the same plane. *) END_ENTITY; (* ************************************************************ *) (* Profile_feature *) (* ************************************************************ *) ENTITY profile_feature (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(general_outside_profile, shape_profile)) SUBTYPE OF (machining_feature); profile_swept_shape : linear_path; END_ENTITY; ENTITY general_outside_profile (* m1 *) SUBTYPE OF (profile_feature); feature_boundary: profile; (* Informal propositions: - The entire profile lies in the local xy plane. - The profile is not self-intersecting. *) END_ENTITY; ENTITY shape_profile (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(general_shape_profile,partial_circular_shape_profile, circular_closed_shape_profile,rectangular_open_shape_profile, rectangular_closed_shape_profile)) SUBTYPE OF (profile_feature); floor_condition: profile_select; removal_direction: direction; END_ENTITY; TYPE profile_select = SELECT (through_profile_floor, profile_floor); END_TYPE; ENTITY through_profile_floor; (* m1 *) END_ENTITY; ENTITY profile_floor (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(general_profile_floor, planar_profile_floor)); floor_radius : OPTIONAL numeric_parameter; start_or_end : BOOLEAN; END_ENTITY; ENTITY general_profile_floor (* m1 *) SUBTYPE OF (profile_floor); floor : face; END_ENTITY; ENTITY planar_profile_floor (* m1 *) SUBTYPE OF (profile_floor); floor : plane; END_ENTITY; ENTITY general_shape_profile (* m1 *) SUBTYPE OF (shape_profile); profile_boundary : profile; END_ENTITY; ENTITY partial_circular_shape_profile (* m1 *) SUBTYPE OF (shape_profile); open_boundary : partial_circular_profile; END_ENTITY; ENTITY circular_closed_shape_profile (* m1 *) SUBTYPE OF (shape_profile); closed_boundary : circular_closed_profile; END_ENTITY; ENTITY rectangular_open_shape_profile (* m1 *) SUBTYPE OF (shape_profile); open_boundary : square_u_profile; END_ENTITY; ENTITY rectangular_closed_shape_profile (* m1 *) SUBTYPE OF (shape_profile); closed_boundary : rectangular_closed_profile; END_ENTITY; (* ************************************************************ *) (* Round hole *) (* ************************************************************ *) ENTITY round_hole SUBTYPE OF (machining_feature); diameter: toleranced_length_measure; change_in_diameter: OPTIONAL taper_select; bottom_condition: hole_bottom_condition; bottom_at_path_end: OPTIONAL BOOLEAN; -- ADDED BY 10303-238 course_of_travel: linear_path; -- ADDED BY 10303-238 WHERE WR1: EXISTS (bottom_at_path_end) OR NOT ('AP238_ARM_SCHEMA.BLIND_BOTTOM_CONDITION' IN TYPEOF(bottom_condition)); END_ENTITY; TYPE taper_select = SELECT (diameter_taper, angle_taper); END_TYPE; ENTITY diameter_taper; (* m1 *) final_diameter: toleranced_length_measure; END_ENTITY; ENTITY angle_taper; (* m1 *) angle: plane_angle_measure; END_ENTITY; ENTITY hole_bottom_condition (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (blind_bottom_condition, through_bottom_condition)); END_ENTITY; ENTITY through_bottom_condition (* m1 *) SUBTYPE OF (hole_bottom_condition); END_ENTITY; ENTITY blind_bottom_condition (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(flat_hole_bottom, flat_with_radius_hole_bottom, spherical_hole_bottom, conical_hole_bottom)) SUBTYPE OF (hole_bottom_condition); END_ENTITY; ENTITY flat_hole_bottom (* m1 *) SUBTYPE OF (blind_bottom_condition); END_ENTITY; ENTITY flat_with_radius_hole_bottom (* m1 *) SUBTYPE OF (blind_bottom_condition); corner_radius: toleranced_length_measure; END_ENTITY; ENTITY spherical_hole_bottom (* m1 *) SUBTYPE OF (blind_bottom_condition); radius: toleranced_length_measure; END_ENTITY; ENTITY conical_hole_bottom (* m1 *) SUBTYPE OF (blind_bottom_condition); tip_angle: plane_angle_measure; tip_radius: OPTIONAL toleranced_length_measure; END_ENTITY; (* ************************************************************ *) (* Toolpath feature *) (* ************************************************************ *) ENTITY toolpath_feature (* m1 *) SUBTYPE OF (machining_feature); END_ENTITY; (* ************************************************************ *) (* Boss *) (* ************************************************************ *) ENTITY boss (* m1 *) SUBTYPE OF(machining_feature); its_boundary: closed_profile; slope: OPTIONAL plane_angle_measure; boss_height: linear_path; -- ADDED BY 10303-238 (* Informal propositions: - The entire profile lies in the same plane. - The profile is not self-intersecting. *) END_ENTITY; (* ************************************************************ *) (* Spherical_cap *) (* ************************************************************ *) ENTITY spherical_cap (* m1 *) SUBTYPE OF (machining_feature); internal_angle: numeric_parameter; radius: numeric_parameter; END_ENTITY; (* ************************************************************ *) (* Rounded_end *) (* ************************************************************ *) ENTITY rounded_end (* m1 *) SUBTYPE OF (machining_feature); course_of_travel: linear_path; partial_circular_boundary: partial_circular_profile; END_ENTITY; (* ************************************************************ *) (* Compound feature *) (* ************************************************************ *) ENTITY compound_feature (* m1 *) SUPERTYPE OF (ONEOF(counterbore_hole, countersunk_hole)) SUBTYPE OF (two5D_manufacturing_feature); elements: SET [2:?] OF compound_feature_select; feature_description: OPTIONAL text; -- ADDED BY 10303-238 feature_name: label; -- ADDED BY 10303-238 WHERE WR1: SIZEOF(QUERY(e <* elements | SIZEOF(e\manufacturing_feature.its_operations) <> 0)) = 0; END_ENTITY; TYPE compound_feature_select = SELECT( machining_feature, transition_feature ); END_TYPE; ENTITY counterbore_hole (* m1 *) SUBTYPE OF (compound_feature); WHERE WR1: SIZEOF(elements) =2; WR2: (SIZEOF(QUERY ( it <* SELF.elements | (('AP238_ARM_SCHEMA.ROUND_HOLE' IN TYPEOF(it))) )) = 2); WR3: SELF.elements[1].diameter.theoretical_size <> SELF.elements[2].diameter.theoretical_size; END_ENTITY; ENTITY countersunk_hole (* m1 *) SUBTYPE OF (compound_feature); WHERE WR1: SIZEOF(elements) =2; WR2: (SIZEOF(QUERY ( it <* SELF.elements | (('AP238_ARM_SCHEMA.ROUND_HOLE' IN TYPEOF(it))) )) = 2); WR3: SELF.elements[1].diameter.theoretical_size <> SELF.elements[2].diameter.theoretical_size; WR4: NOT EXISTS(SELF.elements[1].change_in_diameter) AND EXISTS(SELF.elements[2].change_in_diameter); END_ENTITY; (* ************************************************************ *) (* Replicate feature *) (* ************************************************************ *) ENTITY replicate_feature (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(rectangular_pattern, circular_pattern, general_pattern)) SUBTYPE OF (two5D_manufacturing_feature); replicate_base_feature: two5D_manufacturing_feature; END_ENTITY; ENTITY circular_pattern (* m1 *) SUBTYPE OF(replicate_feature); angle_increment: plane_angle_measure; number_of_feature: INTEGER; relocated_base_feature: SET[0:?] OF circular_offset; missing_base_feature: SET[0:?] OF circular_omit; base_feature_diameter: OPTIONAL toleranced_length_measure; base_feature_rotation : plane_angle_measure; END_ENTITY; ENTITY circular_offset; (* m1 *) angular_offset: plane_angle_measure; index: INTEGER; END_ENTITY; ENTITY circular_omit; (* m1 *) index: INTEGER; END_ENTITY; ENTITY rectangular_pattern (* m1 *) SUBTYPE OF(replicate_feature); spacing : toleranced_length_measure; its_direction : direction; number_of_rows: OPTIONAL INTEGER; number_of_columns: INTEGER; row_spacing: OPTIONAL toleranced_length_measure; row_layout_direction: OPTIONAL direction; relocated_base_feature: SET[0:?] OF rectangular_offset; missing_base_feature: SET[0:?] OF rectangular_omit; WHERE WR1: ( (SELF.number_of_rows > 1 ) AND EXISTS(SELF.row_spacing) AND EXISTS(SELF.row_layout_direction) ); END_ENTITY; ENTITY rectangular_offset; (* m1 *) offset_direction: direction; offset_distance: length_measure; row_index: INTEGER; column_index: INTEGER; END_ENTITY; -- rectangular_offset ENTITY rectangular_omit; (* m1 *) row_index: INTEGER; column_index: INTEGER; END_ENTITY; -- rectangular_omit ENTITY general_pattern (* m1 *) SUBTYPE OF(replicate_feature); replicate_locations: LIST [2:?] OF axis2_placement_3d; END_ENTITY; (* ************************************************************ *) (* Transition feature *) (* ************************************************************ *) ENTITY transition_feature (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(chamfer, edge_round)) SUBTYPE OF (manufacturing_feature); first_feature: OPTIONAL machining_feature; -- RELAXED BY 10303-238 second_feature: OPTIONAL machining_feature; -- RELAXED BY 10303-238 END_ENTITY; ENTITY chamfer (* m1 *) SUBTYPE OF (transition_feature); angle_to_plane: plane_angle_measure; first_offset_amount: toleranced_length_measure; chamfer_face: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 first_face_shape: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 second_face_shape: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 END_ENTITY; ENTITY edge_round (* m1 *) SUBTYPE OF (transition_feature); radius: toleranced_length_measure; first_offset_amount: OPTIONAL toleranced_length_measure; second_offset_amount: OPTIONAL toleranced_length_measure; edge_round_face: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 first_face_shape: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 second_face_shape: OPTIONAL SET [1:?] OF face; -- ADDED BY 10303-238 END_ENTITY; (* ************************************************************ *) (* Tread *) (* ************************************************************ *) ENTITY thread (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(catalogue_thread, defined_thread)) SUBTYPE OF(machining_feature); partial_profile: partial_area_definition; applied_shape: SET[1:?] OF machining_feature; inner_or_outer_thread: BOOLEAN; qualifier: OPTIONAL descriptive_parameter; fit_class: descriptive_parameter; form: descriptive_parameter; major_diameter: length_measure; number_of_threads: numeric_parameter; thread_hand: descriptive_parameter; WHERE WR1: ('AP238_ARM_SCHEMA.ROUND_HOLE' IN TYPEOF(applied_shape)) OR ('AP238_ARM_SCHEMA.CIRCULAR_CLOSED_SHAPE_PROFILE' IN TYPEOF(applied_shape)) OR ('AP238_ARM_SCHEMA.BOSS' IN TYPEOF(applied_shape)); END_ENTITY; ENTITY partial_area_definition; (* m1 *) effective_length: length_measure; placement: axis2_placement_3D; maximum_length: OPTIONAL length_measure; END_ENTITY; ENTITY catalogue_thread (* m1 *) SUBTYPE OF (thread); documentation: specification; END_ENTITY; ENTITY specification; (* m1 *) constraint: SET [0:?] OF specification_usage_constraint; specification_id: text; specification_description: OPTIONAL text; specification_class: OPTIONAL text; END_ENTITY; ENTITY specification_usage_constraint; (* m1 *) element: text; class_id: text; END_ENTITY; ENTITY defined_thread (* m1 *) SUBTYPE OF (thread); pitch_diameter: length_measure; minor_diameter: OPTIONAL length_measure; crest: OPTIONAL length_measure; END_ENTITY; (* ************************************************************ *) (* Profile *) (* ************************************************************ *) ENTITY profile (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(closed_profile, open_profile)); placement: OPTIONAL axis2_placement_3d; END_ENTITY; ENTITY open_profile (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (linear_profile, square_u_profile, rounded_u_profile, tee_profile, vee_profile, partial_circular_profile, general_profile)) SUBTYPE OF(profile); END_ENTITY; ENTITY linear_profile (* m1 *) SUBTYPE OF (open_profile); profile_length: numeric_parameter; END_ENTITY; ENTITY square_u_profile (* m1 *) SUBTYPE OF (open_profile); width: toleranced_length_measure; first_radius: toleranced_length_measure; first_angle: plane_angle_measure; second_radius: toleranced_length_measure; second_angle: plane_angle_measure; depth: OPTIONAL toleranced_length_measure; -- ADDED BY 10303-238 END_ENTITY; ENTITY rounded_u_profile (* m1 *) SUBTYPE OF (open_profile); width: toleranced_length_measure; depth: OPTIONAL toleranced_length_measure; -- ADDED BY 10303-238 END_ENTITY; ENTITY tee_profile (* m1 *) SUBTYPE OF (open_profile); first_angle: plane_angle_measure; second_angle: plane_angle_measure; cross_bar_width: toleranced_length_measure; cross_bar_depth: toleranced_length_measure; radius: toleranced_length_measure; width: toleranced_length_measure; first_offset: toleranced_length_measure; second_offset: toleranced_length_measure; END_ENTITY; ENTITY vee_profile (* m1 *) SUBTYPE OF (open_profile); profile_radius: toleranced_length_measure; profile_angle: plane_angle_measure; tilt_angle: plane_angle_measure; first_side_length: OPTIONAL toleranced_length_measure; -- ADDED BY 10303-238 second_side_length: OPTIONAL toleranced_length_measure; -- ADDED BY 10303-238 END_ENTITY; ENTITY partial_circular_profile (* m1 *) SUBTYPE OF (open_profile); radius: toleranced_length_measure; sweep_angle: plane_angle_measure; END_ENTITY; TYPE path_shape_item = SELECT ( bounded_curve, edge_curve, path); END_TYPE; ENTITY general_profile (* m1 *) SUBTYPE OF (open_profile); --its_profile: bounded_curve; its_profile: path_shape_item; -- RELAXED BY 10303-238 (* Informal propositions: - The entire profile lies in the local yz plane. - The profile is not self-intersecting. *) END_ENTITY; ENTITY closed_profile (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (rectangular_closed_profile, circular_closed_profile, ngon_profile, general_closed_profile)) SUBTYPE OF(profile); END_ENTITY; ENTITY rectangular_closed_profile (* m1 *) SUBTYPE OF(closed_profile); profile_width: toleranced_length_measure; profile_length: toleranced_length_measure; END_ENTITY; ENTITY circular_closed_profile (* m1 *) SUBTYPE OF(closed_profile); diameter: toleranced_length_measure; END_ENTITY; ENTITY ngon_profile (* m1 *) SUBTYPE OF(closed_profile); diameter: toleranced_length_measure; number_of_sides: INTEGER; circumscribed_or_across_flats: BOOLEAN; END_ENTITY; ENTITY general_closed_profile (* m1 *) SUBTYPE OF(closed_profile); --closed_profile_shape: bounded_curve; closed_profile_shape: path_shape_item; -- RELAXED BY 10303-238 END_ENTITY; (* ************************************************************ *) (* Travel path *) (* ************************************************************ *) ENTITY travel_path (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(general_path, linear_path, circular_path)); placement: OPTIONAL axis2_placement_3d; END_ENTITY; ENTITY general_path (* m1 *) SUBTYPE OF(travel_path); --swept_path: bounded_curve; swept_path: path_shape_item; -- RELAXED BY 10303-238 END_ENTITY; ENTITY linear_path (* m1 *) SUBTYPE OF(travel_path); distance: toleranced_length_measure; its_direction: direction; END_ENTITY; ENTITY circular_path (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(complete_circular_path, partial_circular_path)) SUBTYPE OF(travel_path); radius: toleranced_length_measure; END_ENTITY; ENTITY complete_circular_path (* m1 *) SUBTYPE OF(circular_path); END_ENTITY; ENTITY partial_circular_path (* m1 *) SUBTYPE OF(circular_path); sweep_angle: plane_angle_measure; END_ENTITY; (* ************************************************************ *) (* Surface texture parameter *) (* ************************************************************ *) ENTITY surface_texture_parameter; (* m1 *) its_value: parameter_value; parameter_name: label; measuring_method: identifier; parameter_index: OPTIONAL identifier; applied_surfaces: SET [1:?] OF machined_surface; END_ENTITY; ENTITY machined_surface; (* m1 *) its_machining_feature: machining_feature; surface_element: bottom_or_side; END_ENTITY; TYPE bottom_or_side = ENUMERATION OF (bottom, side, bottom_and_side); END_TYPE; (* ************************************************************ *) (* ************************************************************ *) (* *) (* Executable *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY executable (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF( workingstep, nc_function, program_structure)); its_id: identifier; (* Informal proposition: its_id shall be unique within the part programme. *) END_ENTITY; (* ************************************************************ *) (* Workingstep *) (* ************************************************************ *) ENTITY workingstep (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF (machining_workingstep, rapid_movement, touch_probing)) SUBTYPE OF (executable); its_secplane : elementary_surface; END_ENTITY; (* ************************************************************ *) (* Machining workingstep *) (* ************************************************************ *) ENTITY machining_workingstep (* m0 *) SUBTYPE OF (workingstep); its_feature: manufacturing_feature; its_operation: machining_operation; its_effect: OPTIONAL in_process_geometry; final_features: OPTIONAL SET [0:?] OF Manufacturing_feature; -- ADDED BY 10303-238 toolpath_orientation: OPTIONAL axis2_placement_3d; -- ADDED BY 10303-238 END_ENTITY; ENTITY in_process_geometry; (* m1 *) -- as_is: OPTIONAL advanced_brep_shape_representation; as_is: OPTIONAL shape_representation; -- RELAXED BY 10303-238 -- to_be: OPTIONAL advanced_brep_shape_representation; to_be: OPTIONAL shape_representation; -- RELAXED BY 10303-238 -- removal: OPTIONAL advanced_brep_shape_representation; removal: OPTIONAL shape_representation; -- RELAXED BY 10303-238 WHERE WR1: EXISTS (as_is) OR EXISTS (to_be) OR EXISTS (removal); END_ENTITY; (* ************************************************************ *) (* Rapid movement *) (* ************************************************************ *) ENTITY rapid_movement (* m0 *) SUPERTYPE OF (return_home) SUBTYPE OF (workingstep, operation); END_ENTITY; ENTITY return_home (* m0 *) SUBTYPE OF (rapid_movement); END_ENTITY; (* ************************************************************ *) (* Touch probing *) (* ************************************************************ *) ENTITY touch_probing (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (workpiece_probing, workpiece_complete_probing, tool_probing)) SUBTYPE OF (workingstep, operation); measured_offset: nc_variable; END_ENTITY; ENTITY workpiece_probing (* m1 *) SUBTYPE OF (touch_probing); start_position: axis2_placement_3d; its_workpiece: workpiece; its_direction: direction; expected_value: toleranced_length_measure; its_probe: touch_probe; END_ENTITY; ENTITY workpiece_complete_probing (* m1 *) SUBTYPE OF (touch_probing); its_workpiece: workpiece; probing_distance: toleranced_length_measure; its_probe: touch_probe; computed_offset: offset_vector; END_ENTITY; ENTITY touch_probe; (* m1 *) its_id: identifier; END_ENTITY; ENTITY offset_vector; (* m1 *) translate: LIST [3:3] OF nc_variable; rotate: OPTIONAL LIST [3:3] OF nc_variable; WHERE WR1: (SIZEOF(QUERY(i <* translate | NOT EXISTS(i.initial_value))) = 0) AND (NOT EXISTS(rotate) OR (SIZEOF(QUERY(i <* rotate | NOT EXISTS(i.initial_value))) = 0)); END_ENTITY; ENTITY tool_probing (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (tool_length_probing, tool_radius_probing)) SUBTYPE OF (touch_probing); offset: cartesian_point; max_wear: length_measure; its_tool: machining_tool; END_ENTITY; (* ************************************************************ *) (* machining_tool *) (* ************************************************************ *) ENTITY machining_tool (* m0 *) ABSTRACT SUPERTYPE; its_id: label; its_usage: OPTIONAL tool_usage; -- ADDED BY 10303-238 END_ENTITY; ENTITY tool_usage; -- ADDED BY 10303-238 its_id: label; its_position: OPTIONAL identifier; its_carousel: OPTIONAL identifier; its_product: OPTIONAL workpiece; its_library_reference: OPTIONAL externally_defined_representation; END_ENTITY; ENTITY tool_length_probing (* m1 *) SUBTYPE OF (tool_probing); END_ENTITY; ENTITY tool_radius_probing (* m1 *) SUBTYPE OF (tool_probing); END_ENTITY; (* ************************************************************ *) (* NC_function *) (* ************************************************************ *) ENTITY nc_function (* m0 *) ABSTRACT SUPERTYPE SUBTYPE OF (executable); END_ENTITY; ENTITY display_message (* m0 *) SUBTYPE OF (nc_function); its_text: text; END_ENTITY; ENTITY optional_stop (* m0 *) SUBTYPE OF (nc_function); END_ENTITY; ENTITY program_stop (* m0 *) SUBTYPE OF (nc_function); END_ENTITY; ENTITY set_mark (* m0 *) SUBTYPE OF (nc_function); END_ENTITY; ENTITY wait_for_mark (* m0 *) SUBTYPE OF (nc_function); its_channel: channel; END_ENTITY; ENTITY extended_nc_function -- ADDED BY 10303-238 SUBTYPE OF (nc_function); description: text; END_ENTITY; (* ************************************************************ *) (* Program structure *) (* ************************************************************ *) ENTITY program_structure (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(workplan, parallel, non_sequential, selective, if_statement, while_statement, assignment)) SUBTYPE OF (executable); END_ENTITY; (* ************************************************************ *) (* Workplan *) (* ************************************************************ *) ENTITY workplan (* m0 *) SUBTYPE OF (program_structure); its_elements: LIST[0:?] OF executable; its_channel: OPTIONAL channel; its_setup: OPTIONAL setup; its_effect: OPTIONAL in_process_geometry; its_minimum_machine_params: OPTIONAL machine_parameters; -- ADDED BY 10303-238 WHERE WR1: SIZEOF(QUERY(it <* its_elements | it = SELF)) = 0; END_ENTITY; ENTITY channel; (* m0 *) its_id: identifier; END_ENTITY; ENTITY setup; (* m0 *) its_id: identifier; its_origin: OPTIONAL axis2_placement_3d; its_secplane: elementary_surface; its_workpiece_setup: LIST [0:?] OF workpiece_setup; (* Informal proposition: If its_origin is not set, the default for the origin of the setup is identical with the machine origin. *) END_ENTITY; ENTITY workpiece_setup; (* m0 *) its_workpiece: workpiece; its_origin: axis2_placement_3d; its_offset: OPTIONAL offset_vector; its_restricted_area: OPTIONAL restricted_area_select; its_instructions: LIST [0:?] OF setup_instruction; END_ENTITY; TYPE restricted_area_select = SELECT ( bounded_surface, (* ISO 10303-42 *) bounding_geometry_select); END_TYPE; ENTITY machine_parameters; -- ADDED BY 10303-238 feedrate: OPTIONAL speed_measure; spindle_speed: OPTIONAL rot_speed_measure; spindle_power: OPTIONAL value_with_unit; spindle_torque: OPTIONAL value_with_unit; number_of_control_axis: OPTIONAL INTEGER; number_of_simultaneous_axis: OPTIONAL INTEGER; positioning_accuracy: OPTIONAL length_measure; table_indexing: OPTIONAL BOOLEAN; table_length: OPTIONAL length_measure; table_width: OPTIONAL length_measure; axis_travel: SET [0:?] OF machine_axis_travel; work_volume_length: OPTIONAL length_measure; work_volume_width: OPTIONAL length_measure; work_volume_height: OPTIONAL length_measure; WHERE WR1: (0 = SIZEOF(axis_travel)) OR ((NOT EXISTS (work_volume_length)) AND (NOT EXISTS (work_volume_width)) AND (NOT EXISTS (work_volume_length))); END_ENTITY; ENTITY machine_axis_travel; -- ADDED BY 10303-238 axis_identifier: STRING; travel_distance: value_with_unit; END_ENTITY; ENTITY setup_instruction; (* m1 *) description: OPTIONAL text; external_document: OPTIONAL identifier; WHERE WR1: EXISTS (description) OR EXISTS (external_document); END_ENTITY; ENTITY parallel (* m1 *) SUBTYPE OF (program_structure); branches: SET [2:?] OF executable; END_ENTITY; ENTITY non_sequential (* m1 *) SUBTYPE OF (program_structure); its_elements: SET[2:?] OF executable; END_ENTITY; ENTITY selective (* m1 *) SUBTYPE OF (program_structure); its_elements: SET[2:?] OF executable; END_ENTITY; ENTITY if_statement (* m1 *) SUBTYPE OF (program_structure); condition: boolean_expression; true_branch: executable; false_branch: OPTIONAL executable; END_ENTITY; ENTITY while_statement (* m1 *) SUBTYPE OF (program_structure); condition: boolean_expression; body: executable; END_ENTITY; ENTITY assignment (* m1 *) SUBTYPE OF (program_structure); its_lvalue: nc_variable; its_rvalue: rvalue; END_ENTITY; ENTITY nc_variable; (* m1 *) its_name: LABEL; initial_value: OPTIONAL NUMBER; END_ENTITY; ENTITY nc_constant; (* m1 *) its_name: LABEL; its_value: OPTIONAL NUMBER; END_ENTITY; TYPE rvalue = SELECT(nc_constant, nc_variable); END_TYPE; ENTITY boolean_expression (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(unary_boolean_expression, binary_boolean_expression, multiple_arity_boolean_expression, comparison_expression)); END_ENTITY; ENTITY unary_boolean_expression (* m1 *) ABSTRACT SUPERTYPE OF(not_expression) SUBTYPE OF (boolean_expression); operand: boolean_expression; END_ENTITY; ENTITY not_expression (* m1 *) SUBTYPE OF (unary_boolean_expression); END_ENTITY; ENTITY binary_boolean_expression (* m1 *) ABSTRACT SUPERTYPE OF(xor_expression) SUBTYPE OF (boolean_expression); operand1: boolean_expression; operand2: boolean_expression; END_ENTITY; ENTITY xor_expression (* m1 *) SUBTYPE OF (binary_boolean_expression); END_ENTITY; ENTITY multiple_arity_boolean_expression (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(and_expression, or_expression)) SUBTYPE OF (boolean_expression); operands: LIST [2:?] OF boolean_expression; END_ENTITY; ENTITY and_expression (* m1 *) SUBTYPE OF (multiple_arity_boolean_expression); END_ENTITY; ENTITY or_expression (* m1 *) SUBTYPE OF (multiple_arity_boolean_expression); END_ENTITY; ENTITY comparison_expression (* m1 *) ABSTRACT SUPERTYPE OF(ONEOF(comparison_equal, comparison_not_equal, comparison_greater, comparison_greater_equal, comparison_less, comparison_less_equal))SUBTYPE OF (boolean_expression); operand1: nc_variable; operand2: rvalue; END_ENTITY; ENTITY comparison_equal (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; ENTITY comparison_not_equal (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; ENTITY comparison_greater (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; ENTITY comparison_greater_equal (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; ENTITY comparison_less (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; ENTITY comparison_less_equal (* m1 *) SUBTYPE OF (comparison_expression); END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* Operation *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF (machining_operation, rapid_movement, touch_probing)); its_toolpath: OPTIONAL toolpath_list; its_tool_direction: OPTIONAL tool_direction; END_ENTITY; ENTITY toolpath_list; (* m0 *) its_list: LIST [1:?] OF toolpath; END_ENTITY; ENTITY tool_direction (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF (two_axes, three_axes)); END_ENTITY; ENTITY two_axes (* m0 *) SUBTYPE OF (tool_direction); END_ENTITY; ENTITY three_axes (* m0 *) SUBTYPE OF (tool_direction); END_ENTITY; (* ************************************************************ *) (* Machining operation *) (* ************************************************************ *) ENTITY machining_operation (* m0 *) ABSTRACT SUPERTYPE SUBTYPE OF (operation); its_id: identifier; retract_plane: OPTIONAL length_measure; start_point: OPTIONAL cartesian_point; its_tool: machining_tool; its_technology: technology; its_machine_functions: machine_functions; (* Informal proposition: If attribute SELF\operation.its_toolpath exists, then attributes its_machining_strategy, retract_plane and start_point, if present, are for information only. *) END_ENTITY; (* ************************************************************ *) (* Technology *) (* ************************************************************ *) ENTITY technology (* m0 *) ABSTRACT SUPERTYPE; feedrate: OPTIONAL speed_measure; feedrate_reference: tool_reference_point; END_ENTITY; TYPE tool_reference_point = ENUMERATION OF (tcp, ccp); END_TYPE; (* ************************************************************ *) (* Machine functions *) (* ************************************************************ *) ENTITY machine_functions (* m0 *) ABSTRACT SUPERTYPE; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* Toolpath *) (* *) (* ************************************************************ *) (* ************************************************************ *) ENTITY toolpath (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(feedstop, trajectory, parameterised_path)); its_priority: BOOLEAN; its_type : toolpath_type; its_speed : OPTIONAL toolpath_speedprofile; its_technology: OPTIONAL technology; its_machine_functions: OPTIONAL machine_functions; its_id: identifier; -- ADDED BY 10303-238 END_ENTITY; (* ************************************************************ *) (* Toolpath type *) (* ************************************************************ *) TYPE toolpath_type = ENUMERATION OF ( approach, lift, connect, non_contact, contact, trajectory_path ); END_TYPE; (* ************************************************************ *) (* Toolpath speedprofile *) (* ************************************************************ *) TYPE toolpath_speedprofile = SELECT ( toolpath_speed, positive_ratio_measure, speed_name ); END_TYPE; ENTITY toolpath_speed; (* m1 *) -- speed: b_spline_curve; speed: bounded_curve; -- RELAXED BY 10303-238 -- WHERE -- WR1: speed\geometric_representation_item.dim = 1; (* Informal proposition: - speed shall have only values greater than zero. *) END_ENTITY; TYPE speed_name = ENUMERATION OF(RAPID); END_TYPE; (* ************************************************************ *) (* Feedstop *) (* ************************************************************ *) ENTITY feedstop (* m0 *) SUBTYPE OF (toolpath); dwell: time_measure; END_ENTITY; (* ************************************************************ *) (* Trajectory *) (* ************************************************************ *) ENTITY trajectory (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(cutter_location_trajectory, cutter_contact_trajectory, axis_trajectory)) SUBTYPE OF (toolpath); its_direction: OPTIONAL BOOLEAN; -- ADDED BY 10303-238, document material removed by TP, used -- for adaptive control its_material_removal_depth: OPTIONAL material_removal_measure; its_material_removal_overcut: OPTIONAL material_removal_measure; its_material_removal_total_volume: OPTIONAL volume_measure; END_ENTITY; TYPE material_removal_curve = bounded_curve; END_TYPE; TYPE material_removal_measure = SELECT ( length_measure, material_removal_curve ); END_TYPE; (* ************************************************************ *) (* Cutter location trajectory *) (* ************************************************************ *) ENTITY cutter_location_trajectory (* m0 *) SUBTYPE OF (trajectory); basiccurve: bounded_curve; its_toolaxis: OPTIONAL bounded_curve; surface_normal: OPTIONAL bounded_curve; path_maximum_deviation: OPTIONAL length_measure; -- ADDED BY 10303-238 tool_axis_maximum_deviation: OPTIONAL plane_angle_measure;-- ADDED BY 10303-238 (* Information proposition: its_toolaxis must have the same must have the same parameter range as basiccurve. *) END_ENTITY; (* ************************************************************ *) (* Cutter contact trajectory *) (* ************************************************************ *) ENTITY cutter_contact_trajectory (* m1 *) SUBTYPE OF (trajectory); basiccurve: curve_with_surface_normal; its_toolaxis: OPTIONAL bounded_curve; its_contact_type: OPTIONAL contact_type; path_maximum_deviation: OPTIONAL length_measure; -- ADDED BY 10303-238 tool_axis_maximum_deviation: OPTIONAL plane_angle_measure;-- ADDED BY 10303-238 (* Informal proposition: its_toolaxis must have the same must have the same parameter range as basiccurve. *) END_ENTITY; TYPE curve_with_surface_normal = SELECT ( bounded_pcurve, curve_with_normal_vector ); END_TYPE; ENTITY curve_with_normal_vector; (* m1 *) basiccurve: bounded_curve; surface_normal: bounded_curve; (* Informal proposition: basiccurve and surface_normal must have the same parameter range *) END_ENTITY; TYPE contact_type = ENUMERATION OF (side, front); END_TYPE; (* ************************************************************ *) (* Axis trajectory *) (* ************************************************************ *) ENTITY axis_trajectory (* m0 *) SUBTYPE OF (trajectory); axis_list: LIST [1:?] OF identifier; commands: LIST [1:?] OF bounded_curve; -- WHERE -- WR1: SIZEOF(QUERY(cmd <* commands | -- cmd\geometric_representation_item.dim <> 1)) = 0; END_ENTITY; (* ************************************************************ *) (* Parameterised path *) (* ************************************************************ *) ENTITY parameterised_path (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF (approach_lift_path, connector)) SUBTYPE OF (toolpath); END_ENTITY; (* ************************************************************ *) (* Connector *) (* ************************************************************ *) ENTITY connector (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(connect_secplane, connect_direct)) SUBTYPE OF (parameterised_path); END_ENTITY; ENTITY connect_secplane (* m1 *) SUBTYPE OF (connector); up_dir : OPTIONAL direction; down_dir: OPTIONAL direction; END_ENTITY; ENTITY connect_direct (* m1 *) SUBTYPE OF (connector); END_ENTITY; (* ************************************************************ *) (* Approach and lift movement *) (* ************************************************************ *) ENTITY approach_lift_path (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (ap_lift_path_angle, ap_lift_path_tangent)) SUBTYPE OF (parameterised_path); fix_point: cartesian_point; fix_point_dir: OPTIONAL direction; END_ENTITY; ENTITY ap_lift_path_angle (* m1 *) SUBTYPE OF (approach_lift_path); angle: plane_angle_measure; benddist: length_measure; END_ENTITY; ENTITY ap_lift_path_tangent (* m1 *) SUBTYPE OF (approach_lift_path); radius: length_measure; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* TYPES DEFINED IN TOOLS FOR MILLING ISO 14649-111 *) (* *) (* Version 14.1 date: 2004-04-30 *) (* Author: ISO TC184/SC1/WG7 *) (* ************************************************************ *) (* ************************************************************ *) ENTITY milling_machine_cutting_tool ABSTRACT SUPERTYPE OF ( ONEOF(milling_cutting_tool, drilling_cutting_tool, tapping_cutting_tool, rotating_boring_cutting_tool, reaming_cutting_tool)) SUBTYPE OF (machining_tool); its_cutting_edges: SET [1:?] OF cutting_component; overall_assembly_length: length_measure; effective_cutting_diameter: length_measure; maximum_depth_of_cut: length_measure; hand_of_cut: OPTIONAL hand_of_cut_type; coolant_through_tool: OPTIONAL BOOLEAN; END_ENTITY; ENTITY cutting_component; tool_functional_length: length_measure; its_material: OPTIONAL material; expected_tool_life: OPTIONAL time_measure; its_technology: OPTIONAL technology; END_ENTITY; TYPE hand_of_cut_type = ENUMERATION OF(left, neutral, right); END_TYPE; ENTITY drilling_cutting_tool SUPERTYPE OF (ONEOF(counterbore, countersink, spade_drill, spotdrill, step_drill, twist_drill)) SUBTYPE OF (milling_machine_cutting_tool); point_angle: plane_angle_measure; END_ENTITY; ENTITY spotdrill SUBTYPE OF (drilling_cutting_tool); END_ENTITY; ENTITY counterbore SUBTYPE OF (drilling_cutting_tool); END_ENTITY; ENTITY countersink SUBTYPE OF (drilling_cutting_tool); -- corrected cut and paste error -- effective_cutting_diameter: OPTIONAL length_measure; minimum_cutting_diameter: OPTIONAL length_measure; maximum_usable_length: length_measure; END_ENTITY; ENTITY twist_drill SUPERTYPE OF (tapered_drill) SUBTYPE OF (drilling_cutting_tool); END_ENTITY; ENTITY tapered_drill SUBTYPE OF (twist_drill); taper_angle: plane_angle_measure; END_ENTITY; ENTITY spade_drill SUBTYPE OF (drilling_cutting_tool); END_ENTITY; ENTITY step_drill SUBTYPE OF (drilling_cutting_tool); diameters: LIST [1:?] of length_measure; step_length: LIST [1:?] of length_measure; END_ENTITY; ENTITY milling_cutting_tool ABSTRACT SUPERTYPE OF (ONEOF(dovetail_mill, endmill, facemill, shouldermill, side_mill, t_slot_mill, thread_mill)) SUBTYPE OF (milling_machine_cutting_tool); number_of_effective_teeth: OPTIONAL INTEGER; edge_radius: OPTIONAL length_measure; END_ENTITY; ENTITY facemill SUBTYPE OF (milling_cutting_tool); tool_cutting_edge_angle: plane_angle_measure; END_ENTITY; ENTITY shouldermill SUBTYPE OF (milling_cutting_tool); END_ENTITY; ENTITY endmill SUPERTYPE OF (ONEOF(ballnose_endmill, bullnose_endmill, profiled_end_mill)) SUBTYPE OF (milling_cutting_tool); tool_cutting_edge_angle: plane_angle_measure; END_ENTITY; ENTITY ballnose_endmill SUBTYPE OF (endmill); WHERE WR1: NOT EXISTS(SELF.edge_radius) OR (EXISTS(SELF.edge_radius) AND EXISTS(SELF.effective_cutting_diameter) AND (SELF.edge_radius = SELF.effective_cutting_diameter/2)); END_ENTITY; ENTITY bullnose_endmill SUBTYPE OF (endmill); WHERE WR1: EXISTS(SELF.edge_radius) AND EXISTS(SELF.effective_cutting_diameter) AND (SELF.edge_radius < SELF.effective_cutting_diameter/2); END_ENTITY; ENTITY profiled_end_mill SUBTYPE OF (endmill); END_ENTITY; ENTITY t_slot_mill SUBTYPE OF (milling_cutting_tool); cutting_width: length_measure; END_ENTITY; ENTITY dovetail_mill SUBTYPE OF (milling_cutting_tool); included_angle: plane_angle_measure; END_ENTITY; ENTITY side_mill SUBTYPE OF (milling_cutting_tool); cutter_width: length_measure; END_ENTITY; ENTITY thread_mill SUBTYPE OF (milling_cutting_tool); thread_form_type: STRING; thread_size: length_measure; thread_pitch: REAL; END_ENTITY; ENTITY reaming_cutting_tool SUPERTYPE OF (ONEOF (tapered_reamer, combined_drill_and_reamer)) SUBTYPE OF (milling_machine_cutting_tool); taper_length: length_measure; END_ENTITY; ENTITY tapered_reamer SUBTYPE OF (reaming_cutting_tool); taper_angle: plane_angle_measure; END_ENTITY; ENTITY combined_drill_and_reamer SUBTYPE OF (reaming_cutting_tool); drill_length: length_measure; END_ENTITY; ENTITY rotating_boring_cutting_tool SUBTYPE OF (milling_machine_cutting_tool); retract_movement_forbidden: BOOLEAN; END_ENTITY; ENTITY tapping_cutting_tool SUPERTYPE OF (combined_drill_and_tap) SUBTYPE OF (milling_machine_cutting_tool); thread_form_type: STRING; thread_size: length_measure; thread_pitch: REAL; taper_thread_count: REAL; END_ENTITY; ENTITY combined_drill_and_tap SUBTYPE OF (tapping_cutting_tool); drill_length: OPTIONAL length_measure; END_ENTITY; ENTITY user_defined_milling_tool SUBTYPE OF (milling_machine_cutting_tool); corner_radius: OPTIONAL length_measure; corner_radius_center_horizontal: OPTIONAL length_measure; corner_radius_center_vertical: OPTIONAL length_measure; description: OPTIONAL text; taper_angle: OPTIONAL plane_angle_measure; tip_outer_angle: OPTIONAL plane_angle_measure; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* TYPES DEFINED IN PROCESS DATA FOR MILLING ISO 14649-11 *) (* *) (* Version IS date: 2004-12-15 *) (* Version 19.1 date: 2004-06-25 (unchanged) *) (* Author: ISO TC184/SC1/WG7 *) (* ************************************************************ *) (* ************************************************************ *) (* ************************************************************ *) (* NC functions for milling *) (* ************************************************************ *) ENTITY exchange_pallet (* m0 *) SUBTYPE OF (nc_function); END_ENTITY; ENTITY index_pallet (* m0 *) SUBTYPE OF (nc_function); its_index: INTEGER; END_ENTITY; ENTITY index_table (* m0 *) SUBTYPE OF (nc_function); its_index: INTEGER; END_ENTITY; ENTITY load_tool (* m0 *) SUBTYPE OF (nc_function); its_tool: machining_tool; END_ENTITY; ENTITY unload_tool (* m0 *) SUBTYPE OF (nc_function); its_tool: OPTIONAL machining_tool; END_ENTITY; (* ************************************************************ *) (* Technology-specific Tool direction select *) (* ************************************************************ *) ENTITY tool_direction_for_milling (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(three_axes_tilted_tool, five_axes_var_tilt_yaw, five_axes_const_tilt_yaw)) SUBTYPE OF (tool_direction); END_ENTITY; ENTITY three_axes_tilted_tool (* m0 *) SUBTYPE OF (tool_direction_for_milling); its_tool_direction: direction; END_ENTITY; ENTITY five_axes_var_tilt_yaw (* m1 *) SUBTYPE OF (tool_direction_for_milling); END_ENTITY; ENTITY five_axes_const_tilt_yaw (* m0 *) SUBTYPE OF (tool_direction_for_milling); tilt_angle : plane_angle_measure; yaw_angle : plane_angle_measure; END_ENTITY; (* ************************************************************ *) (* Base class for technology specific operation and strategy *) (* ************************************************************ *) ENTITY milling_machining_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(milling_type_operation, drilling_type_operation)) SUBTYPE OF (machining_operation); overcut_length: OPTIONAL length_measure; WHERE WR1: (EXISTS(SELF.its_technology.feedrate_per_tooth) AND EXISTS(SELF.its_tool.number_of_effective_teeth)) OR (NOT(EXISTS(SELF.its_technology.feedrate_per_tooth))); END_ENTITY; (* ************************************************************ *) (* Milling technology *) (* ************************************************************ *) ENTITY milling_technology (* m0 *) SUBTYPE OF (technology); cutspeed: OPTIONAL speed_measure; spindle: OPTIONAL rot_speed_measure; feedrate_per_tooth: OPTIONAL length_measure; synchronize_spindle_with_feed: BOOLEAN; inhibit_feedrate_override: BOOLEAN; inhibit_spindle_override: BOOLEAN; its_adaptive_control: OPTIONAL adaptive_control; WHERE WR1: (EXISTS(cutspeed) AND NOT EXISTS(spindle)) OR (EXISTS(spindle) AND NOT EXISTS(cutspeed)) OR (EXISTS(its_adaptive_control)); WR2: (EXISTS(SELF.feedrate) AND NOT EXISTS(feedrate_per_tooth)) OR (EXISTS(feedrate_per_tooth) AND NOT EXISTS(SELF.feedrate)) OR (EXISTS(its_adaptive_control)); END_ENTITY; ENTITY adaptive_control; (* m1 *) END_ENTITY; (* ************************************************************ *) (* Milling machine functions *) (* ************************************************************ *) ENTITY milling_machine_functions (* m0 *) SUBTYPE OF (machine_functions); coolant : BOOLEAN; coolant_pressure : OPTIONAL pressure_measure; mist : OPTIONAL BOOLEAN; through_spindle_coolant: BOOLEAN; through_pressure: OPTIONAL pressure_measure; axis_clamping : LIST [0:?] OF identifier; chip_removal : BOOLEAN; oriented_spindle_stop: OPTIONAL direction; its_process_model: OPTIONAL process_model_list; other_functions : SET [0:?] OF property_parameter; axis_constraints: OPTIONAL SET [0:?] OF machine_axis_constraint;-- ADDED BY 10303-238 END_ENTITY; ENTITY machine_axis_constraint; -- ADDED BY 10303-238 axis_identifier: STRING; axis_range: value_range; END_ENTITY; ENTITY process_model_list; (* m1 *) its_list: LIST [1:?] OF process_model; END_ENTITY; ENTITY process_model; (* m1 *) ini_data_file: label; its_type: label; END_ENTITY; (* ************************************************************ *) (* Milling type operation *) (* ************************************************************ *) ENTITY milling_type_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(freeform_operation, two5D_milling_operation)) SUBTYPE OF (milling_machining_operation); approach: OPTIONAL approach_retract_strategy; retract: OPTIONAL approach_retract_strategy; END_ENTITY; (* ************************************************************ *) (* approach retract strategy *) (* ************************************************************ *) ENTITY approach_retract_strategy (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (plunge_strategy, air_strategy, along_path)); tool_orientation: OPTIONAL direction; END_ENTITY; ENTITY plunge_strategy (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (plunge_toolaxis, plunge_ramp, plunge_helix, plunge_zigzag)) SUBTYPE OF (approach_retract_strategy); END_ENTITY; ENTITY plunge_toolaxis (* m1 *) SUBTYPE OF (plunge_strategy); END_ENTITY; ENTITY plunge_ramp (* m1 *) SUBTYPE OF (plunge_strategy); angle: plane_angle_measure; END_ENTITY; ENTITY plunge_helix (* m1 *) SUBTYPE OF (plunge_strategy); radius : length_measure; angle : plane_angle_measure; END_ENTITY; ENTITY plunge_zigzag (* m1 *) SUBTYPE OF (plunge_strategy); angle: plane_angle_measure; width: length_measure; END_ENTITY; ENTITY air_strategy (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (ap_retract_angle, ap_retract_tangent)) SUBTYPE OF (approach_retract_strategy); END_ENTITY; ENTITY ap_retract_angle (* m1 *) SUBTYPE OF (air_strategy); angle: plane_angle_measure; travel_length: length_measure; END_ENTITY; ENTITY ap_retract_tangent (* m1 *) SUBTYPE OF (air_strategy); radius: length_measure; END_ENTITY; ENTITY along_path (* m1 *) SUBTYPE OF (approach_retract_strategy); path: toolpath_list; END_ENTITY; (* ************************************************************ *) (* Freeform operation *) (* ************************************************************ *) ENTITY freeform_operation (* m0 *) SUBTYPE OF (milling_type_operation); its_machining_strategy: OPTIONAL freeform_strategy; END_ENTITY; ENTITY freeform_rough_milling -- ADDED BY 10303-238 SUBTYPE OF (freeform_operation); END_ENTITY; ENTITY freeform_finish_milling -- ADDED BY 10303-238 SUBTYPE OF (freeform_operation); END_ENTITY; (* ************************************************************ *) (* Freeform strategy *) (* ************************************************************ *) ENTITY freeform_strategy (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF(uv_strategy, plane_cc_strategy, plane_cl_strategy, leading_line_strategy)); pathmode: pathmode_type; cutmode: cutmode_type; its_milling_tolerances: tolerances; stepover: OPTIONAL length_measure; END_ENTITY; TYPE pathmode_type = ENUMERATION OF ( forward, zigzag ); END_TYPE; TYPE cutmode_type = ENUMERATION OF ( climb, conventional ); END_TYPE; ENTITY tolerances; (* m1 *) chordal_tolerance : length_measure; scallop_height : length_measure; END_ENTITY; ENTITY uv_strategy (* m1 *) SUBTYPE OF (freeform_strategy); forward_direction: direction; sideward_direction: direction; END_ENTITY; ENTITY plane_cc_strategy (* m1 *) SUBTYPE OF (freeform_strategy); its_plane_normal: direction; END_ENTITY; ENTITY plane_cl_strategy (* m1 *) SUBTYPE OF (freeform_strategy); its_plane_normal: direction; END_ENTITY; ENTITY leading_line_strategy (* m1 *) SUBTYPE OF (freeform_strategy); its_line : bounded_curve; END_ENTITY; (* ************************************************************ *) (* two5D milling operation *) (* ************************************************************ *) ENTITY two5D_milling_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(plane_milling, side_milling, bottom_and_side_milling)) SUBTYPE OF (milling_type_operation); its_machining_strategy: OPTIONAL two5D_milling_strategy; END_ENTITY; (* ************************************************************ *) (* two5D_milling_strategy *) (* ************************************************************ *) ENTITY two5D_milling_strategy (* m1 *) ABSTRACT SUPERTYPE OF (ONEOF (unidirectional, bidirectional, contour_parallel, bidirectional_contour, contour_bidirectional, contour_spiral, center_milling, explicit_strategy)); overlap: OPTIONAL positive_ratio_measure; allow_multiple_passes: OPTIONAL BOOLEAN; END_ENTITY; ENTITY unidirectional (* m1 *) SUBTYPE OF (two5D_milling_strategy); feed_direction: OPTIONAL direction; cutmode: OPTIONAL cutmode_type; END_ENTITY; ENTITY bidirectional (* m1 *) SUBTYPE OF (two5D_milling_strategy); feed_direction: OPTIONAL direction; stepover_direction: OPTIONAL left_or_right; its_stroke_connection_strategy: OPTIONAL stroke_connection_strategy; END_ENTITY; TYPE left_or_right = ENUMERATION OF (left, right); END_TYPE; TYPE stroke_connection_strategy = ENUMERATION OF (straghtline, lift_shift_plunge, degouge, loop_back); END_TYPE; ENTITY contour_parallel (* m1 *) SUBTYPE OF (two5D_milling_strategy); rotation_direction: OPTIONAL rot_direction; cutmode: OPTIONAL cutmode_type; END_ENTITY; ENTITY bidirectional_contour (* m1 *) SUBTYPE OF (two5D_milling_strategy); feed_direction: OPTIONAL direction; stepover_direction: OPTIONAL left_or_right; rotation_direction: OPTIONAL rot_direction; spiral_cutmode: OPTIONAL cutmode_type; END_ENTITY; ENTITY contour_bidirectional (* m1 *) SUBTYPE OF (two5D_milling_strategy); feed_direction: OPTIONAL direction; stepover_direction: OPTIONAL left_or_right; rotation_direction: OPTIONAL rot_direction; spiral_cutmode: OPTIONAL cutmode_type; END_ENTITY; ENTITY contour_spiral (* m1 *) SUBTYPE OF (two5D_milling_strategy); rotation_direction: OPTIONAL rot_direction; cutmode: OPTIONAL cutmode_type; END_ENTITY; ENTITY center_milling (* m1 *) SUBTYPE OF (two5D_milling_strategy); END_ENTITY; ENTITY explicit_strategy (* m1 *) SUBTYPE OF (two5D_milling_strategy); END_ENTITY; (* ************************************************************ *) (* plane_milling, side_milling, bottom_and_side_milling *) (* ************************************************************ *) ENTITY plane_milling (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(plane_rough_milling, plane_finish_milling)) SUBTYPE OF (two5D_milling_operation); axial_cutting_depth: OPTIONAL length_measure; allowance_bottom: OPTIONAL length_measure; END_ENTITY; ENTITY plane_rough_milling (* m0 *) SUBTYPE OF (plane_milling); WHERE WR1: EXISTS(SELF.allowance_bottom) AND (SELF.allowance_bottom>=0.0); END_ENTITY; ENTITY plane_finish_milling (* m0 *) SUBTYPE OF (plane_milling); END_ENTITY; ENTITY side_milling (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(side_rough_milling, side_finish_milling)) SUBTYPE OF (two5D_milling_operation); axial_cutting_depth: OPTIONAL length_measure; radial_cutting_depth: OPTIONAL length_measure; allowance_side: OPTIONAL length_measure; END_ENTITY; ENTITY side_rough_milling (* m0 *) SUBTYPE OF (side_milling); WHERE WR1: EXISTS(SELF.allowance_side) AND (SELF.allowance_side>=0.0); END_ENTITY; ENTITY side_finish_milling (* m0 *) SUBTYPE OF (side_milling); END_ENTITY; ENTITY bottom_and_side_milling (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(bottom_and_side_rough_milling, bottom_and_side_finish_milling)) SUBTYPE OF (two5D_milling_operation); axial_cutting_depth: OPTIONAL length_measure; radial_cutting_depth: OPTIONAL length_measure; allowance_side: OPTIONAL length_measure; allowance_bottom: OPTIONAL length_measure; END_ENTITY; ENTITY bottom_and_side_rough_milling (* m0 *) SUBTYPE OF (bottom_and_side_milling); WHERE WR1: EXISTS(SELF.allowance_side) AND (SELF.allowance_side>=0.0); WR2: EXISTS(SELF.allowance_bottom) AND (SELF.allowance_bottom>=0.0); END_ENTITY; ENTITY bottom_and_side_finish_milling (* m0 *) SUBTYPE OF (bottom_and_side_milling); END_ENTITY; (* ************************************************************ *) (* Drilling type operation *) (* ************************************************************ *) ENTITY drilling_type_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(drilling_operation, boring_operation, back_boring, tapping, thread_drilling)) SUBTYPE OF (milling_machining_operation); cutting_depth: OPTIONAL length_measure; previous_diameter: OPTIONAL length_measure; dwell_time_bottom: OPTIONAL time_measure; feed_on_retract: OPTIONAL positive_ratio_measure; its_machining_strategy: OPTIONAL drilling_type_strategy; END_ENTITY; (* ************************************************************ *) (* Drilling type strategy *) (* ************************************************************ *) ENTITY drilling_type_strategy; (* m0 *) reduced_cut_at_start: OPTIONAL positive_ratio_measure; reduced_feed_at_start: OPTIONAL positive_ratio_measure; depth_of_start: OPTIONAL length_measure; reduced_cut_at_end: OPTIONAL positive_ratio_measure; reduced_feed_at_end: OPTIONAL positive_ratio_measure; depth_of_end: OPTIONAL length_measure; WHERE WR1: EXISTS(depth_of_start) OR NOT (EXISTS(reduced_cut_at_start) OR EXISTS(reduced_feed_at_start)); WR2: EXISTS(depth_of_end) OR NOT (EXISTS(reduced_cut_at_end) OR EXISTS(reduced_feed_at_end)); END_ENTITY; (* ************************************************************ *) (* Drilling operation *) (* ************************************************************ *) ENTITY drilling_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(drilling, center_drilling, counter_sinking, multistep_drilling)) SUBTYPE OF (drilling_type_operation); END_ENTITY; ENTITY drilling (* m0 *) SUBTYPE OF (drilling_operation); END_ENTITY; ENTITY center_drilling (* m0 *) SUBTYPE OF (drilling_operation); END_ENTITY; ENTITY counter_sinking (* m0 *) SUBTYPE OF (drilling_operation); END_ENTITY; ENTITY multistep_drilling (* m0 *) SUBTYPE OF (drilling_operation); retract_distance: length_measure; first_depth: length_measure; depth_of_step: length_measure; dwell_time_step: OPTIONAL time_measure; END_ENTITY; (* ************************************************************ *) (* Boring operation *) (* ************************************************************ *) ENTITY boring_operation (* m0 *) ABSTRACT SUPERTYPE OF (ONEOF(boring, reaming)) SUBTYPE OF (drilling_type_operation); spindle_stop_at_bottom: BOOLEAN; depth_of_testcut: OPTIONAL length_measure; waiting_position: OPTIONAL cartesian_point; END_ENTITY; ENTITY boring (* m0 *) SUBTYPE OF (boring_operation); END_ENTITY; ENTITY reaming (* m0 *) SUBTYPE OF (boring_operation); END_ENTITY; ENTITY back_boring (* m0 *) SUBTYPE OF (drilling_type_operation); WHERE WR1: EXISTS(SELF.its_machine_functions.oriented_spindle_stop); END_ENTITY; ENTITY tapping (* m0 *) SUBTYPE OF (drilling_type_operation); compensation_chuck: BOOLEAN; END_ENTITY; ENTITY thread_drilling (* m0 *) SUBTYPE OF (drilling_type_operation); helical_movement_on_forward: BOOLEAN; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* TYPES DEFINED IN TOOLS FOR TURNING ISO 14649-121 *) (* *) (* Version IS date: 2005-09-01 *) (* Version 11 date: 2005-01-04 (unchanged) *) (* Author: ISO TC184/SC1/WG7 *) (* ************************************************************ *) (* ************************************************************ *) ENTITY turning_machine_cutting_tool SUBTYPE OF (machining_tool); functional_length : length_measure; f_dimension : length_measure; minimum_cutting_diameter : OPTIONAL length_measure; a_dimension_on_f : OPTIONAL length_measure; a_dimension_on_lf : OPTIONAL length_measure; cutting_edge : cutting_edge_properties; hand_of_tool : OPTIONAL hand_of_tool_type; END_ENTITY; ENTITY cutting_edge_properties; its_material : OPTIONAL material; expected_tool_life : OPTIONAL time_measure; its_technology : OPTIONAL technology; cutting_edge_length : OPTIONAL length_measure; tool_cutting_edge_angle : OPTIONAL plane_angle_measure; tool_cutting_edge_angle_type : OPTIONAL STRING; tool_included_angle : OPTIONAL plane_angle_measure; corner_transitions : LIST [0:?] OF corner_transition; maximum_side_cutting_depth : OPTIONAL length_measure; maximum_end_cutting_depth : OPTIONAL length_measure; END_ENTITY; ENTITY corner_transition; corner_identity : INTEGER; transition : corner_transition_select; END_ENTITY; TYPE corner_transition_select = SELECT (chamfered_corner, rounded_corner, profiled_corner); END_TYPE; ENTITY chamfered_corner; corner_chamfer_angle : plane_angle_measure; corner_chamfer_length : OPTIONAL length_measure; corner_chamfer_width : OPTIONAL length_measure; END_ENTITY; ENTITY rounded_corner; corner_radius : length_measure; END_ENTITY; ENTITY profiled_corner; transition_profile : open_profile; END_ENTITY; TYPE hand_of_tool_type = ENUMERATION OF (left,right,neutral); END_TYPE; ENTITY general_turning_tool SUBTYPE OF (turning_machine_cutting_tool); END_ENTITY; ENTITY turning_threading_tool SUBTYPE OF (turning_machine_cutting_tool); threading_pitch : length_measure; thread_hand : thread_hand_type; its_thread_type : thread_type; thread_profile : thread_profile_type; thread_form_type : STRING; END_ENTITY; TYPE thread_hand_type = ENUMERATION OF (left, right); END_TYPE; TYPE thread_type = ENUMERATION OF (internal, external); END_TYPE; TYPE thread_profile_type = ENUMERATION OF (full_profile, partial_profile); END_TYPE; ENTITY grooving_tool SUBTYPE OF (turning_machine_cutting_tool); cutting_width : length_measure; maximum_grooving_depth : length_measure; corner_radius : OPTIONAL length_measure; maximum_axial_grooving_diameter : OPTIONAL length_measure; minimum_axial_grooving_diameter : OPTIONAL length_measure; END_ENTITY; ENTITY knurling_tool SUBTYPE OF (turning_machine_cutting_tool); knurl_pattern : knurl_pattern_type; cutting_length : OPTIONAL length_measure; angle : OPTIONAL plane_angle_measure; pitch : OPTIONAL length_measure; END_ENTITY; TYPE knurl_pattern_type = ENUMERATION OF (straight, diagonal, diamond); END_TYPE; ENTITY user_defined_turning_tool SUBTYPE OF (turning_machine_cutting_tool); identifier: label; END_ENTITY; (* ************************************************************ *) (* ************************************************************ *) (* *) (* TYPES DEFINED IN PROCESS DATA FOR TURNING ISO 14649-12 *) (* *) (* Version IS date: 2005-12-15 *) (* Version 15 date: 2005-01-05 (unchanged) *) (* Author: ISO TC184/SC1/WG7 *) (* ************************************************************ *) (* ************************************************************ *) (* * Turning features ***************************************************** *) ENTITY turning_feature ABSTRACT SUPERTYPE OF (ONEOF(outer_round, revolved_feature, knurl)) SUBTYPE OF (two5D_manufacturing_feature); END_ENTITY; ENTITY outer_round ABSTRACT SUPERTYPE OF (ONEOF (outer_diameter, outer_diameter_to_shoulder)) SUBTYPE OF (turning_feature); END_ENTITY; ENTITY outer_diameter SUBTYPE OF (outer_round); diameter_at_placement : toleranced_length_measure; feature_length : toleranced_length_measure; reduced_size : OPTIONAL taper_select; END_ENTITY; ENTITY outer_diameter_to_shoulder SUBTYPE OF (outer_round); diameter_at_placement : toleranced_length_measure; v_shape_boundary : vee_profile; END_ENTITY; ENTITY revolved_feature ABSTRACT SUPERTYPE OF (ONEOF (revolved_round, revolved_flat, groove, general_revolution)) SUBTYPE OF (turning_feature); material_side : OPTIONAL direction; radius : length_measure; END_ENTITY; ENTITY revolved_flat SUBTYPE OF (revolved_feature); flat_edge_shape : linear_profile; END_ENTITY; ENTITY revolved_round SUBTYPE OF (revolved_feature); rounded_edge_shape : partial_circular_profile; END_ENTITY; ENTITY groove SUBTYPE OF (revolved_feature); sweep : open_profile; END_ENTITY; ENTITY general_revolution SUBTYPE OF (revolved_feature); outer_edge_profile : general_profile; END_ENTITY; ENTITY knurl ABSTRACT SUPERTYPE OF (ONEOF(straight_knurl, diagonal_knurl, diamond_knurl, tool_knurl)) SUBTYPE OF (turning_feature); base_feature : turning_feature; partial_profile : OPTIONAL partial_area_definition; tooth_depth : OPTIONAL toleranced_length_measure; diametral_pitch : OPTIONAL toleranced_length_measure; root_fillet : OPTIONAL toleranced_length_measure; number_of_teeth : OPTIONAL INTEGER; major_diameter : OPTIONAL toleranced_length_measure; nominal_diameter : OPTIONAL toleranced_length_measure; END_ENTITY; ENTITY straight_knurl SUBTYPE OF (knurl); END_ENTITY; ENTITY diagonal_knurl SUBTYPE OF (knurl); helix_angle : plane_angle_measure; END_ENTITY; ENTITY diamond_knurl SUBTYPE OF (knurl); helix1_angle : plane_angle_measure; helix2_angle : OPTIONAL plane_angle_measure; END_ENTITY; ENTITY tool_knurl SUBTYPE OF (knurl); END_ENTITY; (* ***** Turning workingstep ********************************************** *) ENTITY turning_workingstep SUBTYPE OF (workingstep); its_features : LIST [2:?] OF manufacturing_feature; its_operation : turning_machining_operation; its_effect : OPTIONAL in_process_geometry; END_ENTITY; (* ***** Turning technology *********************************************** *) ENTITY turning_technology SUBTYPE OF (technology); spindle_speed : speed_select; feed_per_revolution : OPTIONAL feed_per_rev_type; sync_spindle_and_z_feed : BOOLEAN; inhibit_feedrate_override : BOOLEAN; inhibit_spindle_override : BOOLEAN; its_adaptive_control : OPTIONAL adaptive_control; WHERE WR1: (EXISTS(SELF.feedrate) AND NOT EXISTS(SELF.feed_per_revolution)) OR (NOT EXISTS(SELF.feedrate) AND EXISTS(SELF.feed_per_revolution)); END_ENTITY; TYPE speed_select = SELECT (const_spindle_speed, const_cutting_speed); END_TYPE; ENTITY const_spindle_speed; rot_speed : rot_speed_measure; END_ENTITY; ENTITY const_cutting_speed; speed : speed_measure; max_speed : OPTIONAL rot_speed_measure; END_ENTITY; TYPE feed_per_rev_type = REAL; END_TYPE; TYPE feed_select = SELECT ( speed_measure, -- feed_velocity_type feed_per_rev_type); END_TYPE; (* ***** Turning machine functions **************************************** *) ENTITY turning_machine_functions SUBTYPE OF (machine_functions); coolant : BOOLEAN; coolant_type : OPTIONAL coolant_select; coolant_pressure : OPTIONAL pressure_measure; axis_clamping : LIST [0:?] OF identifier; chip_removal : OPTIONAL BOOLEAN; oriented_spindle_stop : OPTIONAL direction; its_process_model : OPTIONAL process_model_list; other_functions : SET [0:?] OF property_parameter; tail_stock : OPTIONAL BOOLEAN; steady_rest : OPTIONAL BOOLEAN; follow_rest : OPTIONAL BOOLEAN; END_ENTITY; TYPE coolant_select = ENUMERATION OF (flood, mist, through_tool); END_TYPE; (* ***** Turning strategy ************************************************* *) ENTITY turning_machining_strategy ABSTRACT SUPERTYPE OF (ONEOF (unidirectional_turning, bidirectional_turning, thread_strategy, contour_turning, grooving_strategy, explicit_turning_strategy)); overcut_length : OPTIONAL length_measure; allow_multiple_passes : OPTIONAL BOOLEAN; cutting_depth : LIST[0:?] OF length_measure; variable_feedrate : OPTIONAL positive_ratio_measure; END_ENTITY; ENTITY unidirectional_turning SUBTYPE OF (turning_machining_strategy); feed_direction : OPTIONAL direction; back_path_direction : OPTIONAL direction; lift_direction : OPTIONAL direction; stepover_direction : OPTIONAL direction; lift_height : OPTIONAL length_measure; lift_feed : OPTIONAL feed_select; stepover_feed : OPTIONAL feed_select; END_ENTITY; ENTITY bidirectional_turning SUBTYPE OF (turning_machining_strategy); feed_direction : OPTIONAL direction; stepover_direction : OPTIONAL direction; stepover_feed : OPTIONAL feed_select; END_ENTITY; ENTITY contour_turning SUBTYPE OF (turning_machining_strategy); feed_direction : OPTIONAL direction; back_path_direction : OPTIONAL direction; lift_direction : OPTIONAL direction; stepover_direction : OPTIONAL direction; lift_height : OPTIONAL length_measure; lift_feed : OPTIONAL feed_select; stepover_feed : OPTIONAL feed_select; variable_stepover_feed : OPTIONAL positive_ratio_measure; END_ENTITY; ENTITY thread_strategy SUBTYPE OF (turning_machining_strategy); cut_in_amount_function : thread_cut_depth_type; threading_direction : threading_direction_type; path_return_angle : OPTIONAL plane_angle_measure; lift_height : OPTIONAL length_measure; END_ENTITY; TYPE thread_cut_depth_type = ENUMERATION OF (constant_depth, variable_depth, constant_removal_amount); END_TYPE; TYPE threading_direction_type = ENUMERATION OF (left, right, center, left_zigzag, right_zigzag); END_TYPE; ENTITY grooving_strategy SUPERTYPE OF (multistep_grooving_strategy) SUBTYPE OF (turning_machining_strategy); grooving_direction : OPTIONAL direction; travel_distance : OPTIONAL length_measure; END_ENTITY; ENTITY multistep_grooving_strategy SUBTYPE OF (grooving_strategy); retract_distance : length_measure; END_ENTITY; ENTITY explicit_turning_strategy SUBTYPE OF (turning_machining_strategy); END_ENTITY; (* ***** Turning operations *********************************************** *) ENTITY turning_machining_operation ABSTRACT SUPERTYPE OF (ONEOF(facing, grooving, contouring, threading, knurling)) SUBTYPE OF (machining_operation); approach : OPTIONAL approach_retract_strategy; retract : OPTIONAL approach_retract_strategy; its_machining_strategy : OPTIONAL turning_machining_strategy; END_ENTITY; ENTITY facing ABSTRACT SUPERTYPE OF (ONEOF(facing_rough, facing_finish)) SUBTYPE OF (turning_machining_operation); allowance : OPTIONAL length_measure; END_ENTITY; ENTITY facing_rough SUBTYPE OF (facing); WHERE WR1: EXISTS(SELF.allowance) AND (SELF.allowance >= 0.0); END_ENTITY; ENTITY facing_finish SUBTYPE OF (facing); END_ENTITY; ENTITY grooving ABSTRACT SUPERTYPE OF (ONEOF(grooving_rough, grooving_finish, cutting_in)) SUBTYPE OF (turning_machining_operation); dwell : OPTIONAL dwell_select; allowance : OPTIONAL length_measure; END_ENTITY; ENTITY grooving_rough SUBTYPE OF (grooving); WHERE WR1: EXISTS(SELF.allowance) AND (SELF.allowance >= 0.0); END_ENTITY; ENTITY grooving_finish SUBTYPE OF (grooving); END_ENTITY; ENTITY cutting_in SUBTYPE OF (grooving); WHERE WR1: NOT(EXISTS(SELF.allowance)); END_ENTITY; TYPE dwell_revolution = REAL; END_TYPE; TYPE dwell_select = SELECT ( time_measure, -- dwell_time dwell_revolution); END_TYPE; ENTITY contouring ABSTRACT SUPERTYPE OF (ONEOF(contouring_rough, contouring_finish)) SUBTYPE OF (turning_machining_operation); allowance : OPTIONAL length_measure; END_ENTITY; ENTITY contouring_rough SUBTYPE OF (contouring); WHERE WR1: EXISTS(SELF.allowance) AND (SELF.allowance >= 0.0); END_ENTITY; ENTITY contouring_finish SUBTYPE OF (contouring); END_ENTITY; ENTITY threading ABSTRACT SUPERTYPE OF (ONEOF(threading_rough, threading_finish)) SUBTYPE OF (turning_machining_operation); allowance : OPTIONAL length_measure; END_ENTITY; ENTITY threading_rough SUBTYPE OF (threading); WHERE WR1: EXISTS(SELF.allowance) AND (SELF.allowance >= 0.0); END_ENTITY; ENTITY threading_finish SUBTYPE OF (threading); END_ENTITY; ENTITY knurling SUBTYPE OF (turning_machining_operation); END_ENTITY; END_SCHEMA;