ISO 10303-238:2022(E)

5 Application interpreted model

5.1 Mapping specification

5.1.1 General

This clause specifies how each UoF and application object in clause 4 shall be represented by one or more AIM EXPRESS constructs given by Annex A. Each mapping specification contains up to five elements.

NOTE It is customary to present mapping specifications in alphabetical order by UoF name, however this document presents the mapping specification in the same order as they appear in clause 4.2. This ordering matches the ordering of clauses in the ISO 14649 parts and is intended to simplify reference between these documents.

Application element: The mapping for each application element is specified in a separate sub-clause below. Application element names are given in title case. Attribute names and assertions are listed after the the application object to which they belong and are given in lower case.

AIM element: The name of one or more AIM entity data types (see Annex A), the term "IDENTICAL MAPPING", or the term "PATH". AIM entity data type names are given in lower case. Attributes of AIM entity data types are referred to as <entity name>.<attribute name>. The mapping of an application element may involve more than one AIM element. Each of these AIM elements is presented on a separate line in the mapping specification. The term "IDENTICAL MAPPING" indicates that both application objects involved in an application assertion map to the same instance of an AIM entity data type. The term "PATH" indicates that the application assertion maps to a collection of related AIM entity instances specified by the entire reference path.

Source: For those AIM elements that are interpreted from any common resource, this is the ISO standard number and part number in which the resource is defined. For those AIM elements that are created for the purposes of this document, this is "ISO 10303-" followed by the number of this part.

Rules: One or more global rules may be specified that apply to the population of the AIM entity data types specified as the AIM element or in the reference path. For rules that are derived from relationships between application objects, the same rule is referred to by the mapping entries of all the involved AIM elements. A reference to a global rule may be accompanied by a reference to the subclause in which the rule is defined.

Reference path: To describe fully the mapping of an application object, it may be necessary to specify a reference path involving several related AIM elements. Each line in the reference path documents the role of an AIM element relative to the AIM element in the line following it. Two or more such related AIM elements define the interpretation of the integrated resources that satisfies the requirement specified by the application object. For each AIM element that has been created for use within this document, a reference path to its supertype from an integrated resource is specified.

For the expression of reference paths and of the constraints between AIM elements, the following notational conventions apply:

[] enclosed section constrains multiple AIM elements or sections of the reference path are required to satisfy an information requirement;
() enclosed section constrains multiple AIM elements or sections of the reference path are identified as alternatives within the mapping to satisfy an information requirement;
{} enclosed section constrains the reference path to satisfy an information requirement;
<> enclosed section constrains at one or more required reference path;
|| enclosed section constrains the supertype entity;
-> the attribute, whose name precedes the -> symbol, references the entity or select type whose name follows the -> symbol;
<- the entity or select type, whose name precedes the <- symbol, is referenced by the entity attribute whose name follows the <- symbol;
[i] the attribute, whose name precedes the [i] symbol, is an aggregate; any element of that aggregate is referred to;
[n] the attribute, whose name precedes the [n] symbol, is an ordered aggregate; member n of that aggregate is referred to;
=> the entity, whose name precedes the => symbol, is a supertype of the entity whose name follows the => symbol;
<= the entity, whose name precedes the <= symbol, is a subtype of the entity whose name follows the <= symbol;
= the string, select, or enumeration type is constrained to a choice or value;
\ the reference path expression continues on the next line;
* one or more instances of the relationship entity data type may be assembled in a relationship tree structure. The path between the relationship entity and the related entities, is enclosed with braces;
-- the text following is a comment or introduces a clause reference;
*> the select or enumeration type, whose name precedes the *> symbol, is extended into the select or enumeration type whose name follows the *> symbol;
<* the select or enumeration type, whose name precedes the <* symbol, is an extension of the select or enumeration type whose name follows the <* symbol;
!{} section enclosed by {} indicates a negative constraint placed on the mapping.

5.1.2 Mapping specification for measure UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1054, ISO 10303-1106, ISO 10303-1753, and ISO 10303-1782.

5.1.3 Mapping specification for project UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1011 and the specification below.

AO ARM

5.1.3.1 MANUFACTURING_PROJECT

AIM element: product_definition_formation
Source: 10303-41
Reference path: product_definition_formation { product_definition_formation.of_product -> product => machining_project }
5.1.3.1.1 manufacturing_project to workplan (as main_workplan)
AIM element: PATH
Reference path: product_definition_formation <- product_definition.formation product_definition characterized_product_definition = product_definition characterized_product_definition <- process_product_association.defined_product process_product_association process_product_association.process -> product_definition_process <= action { action.name = 'machining' } action.chosen_method -> action_method => machining_process_executable => machining_workplan
5.1.3.1.2 manufacturing_project to product_view_definition (as its_workpieces)
AIM element: PATH
Reference path: product_definition_formation <- product_definition.formation product_definition <- product_definition_relationship.relating_product_definition product_definition_relationship { product_definition_relationship => machining_project_workpiece_relationship } product_definition_relationship.related_product_definition -> product_definition
5.1.3.1.3 manufacturing_project to person_in_organization (as its_owner)
AIM element: PATH
Reference path: product_definition_formation person_and_organization_item = product_definition_formation person_and_organization_item <- applied_person_and_organization_assignment.items[i] applied_person_and_organization_assignment <= person_and_organization_assignment { person_and_organization_assignment.role -> person_and_organization_role person_and_organization_role.name = 'owner' } person_and_organization_assignment.assigned_person_and_organization -> person_and_organization person_and_organization.the_person -> person
5.1.3.1.4 its_release
AIM element: date_and_time
Source: 10303-41
Reference path: product_definition_formation date_and_time_item = product_definition_formation date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment <= date_and_time_assignment { date_and_time_assignment.role -> date_time_role date_time_role.name = 'release date' } date_and_time_assignment.assigned_date_and_time -> date_and_time
5.1.3.1.5 manufacturing_project to approval (as its_status)
AIM element: PATH
Reference path: product_definition_formation approval_item = product_definition_formation approval_item <- applied_approval_assignment.items[i] applied_approval_assignment <= approval_assignment approval_assignment.assigned_approval -> approval

5.1.4 Mapping specification for workpiece UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1006, ISO 10303-1026, ISO 10303-1030, ISO 10303-1110, ISO 10303-1118, ISO 10303-1681, and the specification below.

AO ARM

5.1.4.1 WORKPIECE

AIM element: product_definition
Source: 10303-41
5.1.4.1.1 global_tolerance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'global tolerance' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation => shape_representation representation.items[i]-> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.4.1.2 workpiece to workpiece (as its_rawpiece)
AIM element: PATH
Reference path: product_definition <- product_definition_relationship.relating_product_definition {product_definition_relationship => product_definition_usage => make_from_usage_option} product_definition_relationship.related_product_definition -> product_definition
5.1.4.1.3 its_geometry
AIM element: shape_representation
Source: 10303-41
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition => product_definition_shape } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition {property_definition_representation => shape_definition_representation } property_definition_representation property_definition_representation.used_representation -> representation => shape_representation
5.1.4.1.4 its_bounding_geometry

#1: if bounding geometry is a block

#2: if bounding geometry is a right_circular_cylinder

#3: if bounding geometry is any other shape representation

See NOTE 1

AIM element: #1: block_shape_representation #2: cylindrical_shape_representation #3: shape_representation
Source: 10303-238 10303-238 10303-41
Reference path: product_definition <- product_definition_relationship.relating_product_definition {product_definition_relationship => product_definition_usage => make_from_usage_option} product_definition_relationship product_definition_relationship.related_product_definition -> product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition => product_definition_shape } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition {property_definition_representation => shape_definition_representation } property_definition_representation property_definition_representation.used_representation -> representation => shape_representation => #1: (shape_representation_with_parameters => block_shape_representation) #2: (shape_representation_with_parameters => cylindrical_shape_representation) #3: (shape_representation)
5.1.4.1.5 clamping_positions
AIM element: cartesian_point
Source: 10303-42
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'clamping position' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation => shape_representation representation.items[i]-> representation_item => geometric_representation_item => point => cartesian_point
5.1.4.1.6 workpiece to approval (as its_approvals)
AIM element: PATH
Reference path: product_definition approval_item = product_definition approval_item <- applied_approval_assignment.items[i] applied_approval_assignment <= approval_assignment approval_assignment.assigned_approval -> approval
5.1.4.1.7 its_categories
AIM element: product_category.name
Source: 10303-41
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product <- product_related_product_category.products[i] product_related_product_category => product_category { (product_category.name = 'fixture') (product_category.name = 'fixtured workpiece') (product_category.name = 'rawpiece') (product_category.name = 'tool') (product_category.name = 'workpiece') (product_category.name) } product_category.name
5.1.4.1.8 workpiece to next_assembly_usage (as its_components)
AIM element: PATH
Reference path: product_definition <- product_definition_relationship.relating_product_definition product_definition_relationship => product_definition_usage => assembly_component_usage => next_assembly_usage_occurrence
5.1.4.1.9 workpiece to date_or_date_time_assignment (as its_datestamps)
AIM element: PATH
Reference path: product_definition date_item = product_definition date_item <- applied_date_assignment.items[i] applied_date_assignment
5.1.4.1.10 workpiece to organization_or_person_in_organization_assignment (as its_orgs)
AIM element: PATH
Reference path: product_definition organization_item = product_definition organization_item <- applied_organization_assignment.items[i] applied_organization_assignment
5.1.4.1.11 workpiece to organization_or_person_in_organization_assignment (as its_people)
AIM element: PATH
Reference path: product_definition person_and_organization_item = product_definition person_and_organization_item <- applied_person_and_organization_assignment.items[i] applied_person_and_organization_assignment
AIM element: shape_representation
Source: 10303-41
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition => product_definition_shape } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition {property_definition_representation => shape_definition_representation } property_definition_representation property_definition_representation.used_representation -> { representation => shape_representation } representation <- representation_relationship.rep_1 { representation_relationship => shape_representation_relationship } representation_relationship representation_relationship.rep_2 -> representation => shape_representation
5.1.4.1.13 workpiece to date_or_date_time_assignment (as its_timestamps)
AIM element: PATH
Reference path: product_definition date_and_time_item = product_definition date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment
5.1.4.1.14 workpiece to approval (as product_approvals)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product approval_item = product approval_item <- applied_approval_assignment.items[i] applied_approval_assignment <= approval_assignment approval_assignment.assigned_approval -> approval
5.1.4.1.15 workpiece to date_or_date_time_assignment (as product_datestamps)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product date_item = product date_item <- applied_date_assignment.items[i] applied_date_assignment
5.1.4.1.16 workpiece to organization_or_person_in_organization_assignment (as product_orgs)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product organization_item = product organization_item <- applied_organization_assignment.items[i] applied_organization_assignment
5.1.4.1.17 workpiece to organization_or_person_in_organization_assignment (as product_people)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product person_and_organization_item = product person_and_organization_item <- applied_person_and_organization_assignment.items[i] applied_person_and_organization_assignment
5.1.4.1.18 workpiece to date_or_date_time_assignment (as product_timestamps)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.of_product -> product date_and_time_item = product date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment
5.1.4.1.19 workpiece to approval (as revision_approvals)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation approval_item = product_definition_formation approval_item <- applied_approval_assignment.items[i] applied_approval_assignment <= approval_assignment approval_assignment.assigned_approval -> approval
5.1.4.1.20 workpiece to date_or_date_time_assignment (as revision_datestamps)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation date_item = product_definition_formation date_item <- applied_date_assignment.items[i] applied_date_assignment
5.1.4.1.21 revision_id
AIM element: product_definition_formation.id
Source: 10303-41
Reference path: product_definition product_definition.formation -> product_definition_formation product_definition_formation.id See NOTE 2
5.1.4.1.22 workpiece to organization_or_person_in_organization_assignment (as revision_orgs)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation organization_item = product_definition_formation organization_item <- applied_organization_assignment.items[i] applied_organization_assignment
5.1.4.1.23 workpiece to organization_or_person_in_organization_assignment (as revision_people)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation person_and_organization_item = product_definition_formation person_and_organization_item <- applied_person_and_organization_assignment.items[i] applied_person_and_organization_assignment
5.1.4.1.24 workpiece to date_or_date_time_assignment (as revision_timestamps)
AIM element: PATH
Reference path: product_definition product_definition.formation -> product_definition_formation date_and_time_item = product_definition_formation date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment

5.1.5 Mapping specification for manufacturing feature UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1814 and ISO 10303-1846.

5.1.6 Mapping specification for executable UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1526 and the specification below.

AO ARM

5.1.6.1 ASSIGNMENT

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'assignment' }
5.1.6.1.1 assignment to nc_variable (as its_lvalue)
AIM element: PATH
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lvalue' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => expression_item_representation_item
5.1.6.1.2 assignment to rvalue (as its_rvalue)
AIM element: PATH
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'rvalue' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => expression_item_representation_item
AO ARM

5.1.6.2 CHANNEL

AIM element: representation
Source: 10303-43
Reference path: representation { representation.name = 'channel' }
5.1.6.2.1 its_id
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
AO ARM

5.1.6.3 DISPLAY_MESSAGE

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'display message' }
5.1.6.3.1 its_text
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_nc_function <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'message text' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
AO ARM

5.1.6.4 EXECUTABLE

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method
5.1.6.4.1 executable to product_view_definition (as as_is)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action.chosen_method { action.name = 'as-is shape' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.4.2 enabled

#1: if value is true (mapping may be omitted if value is true)

#2: if value is false

AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'enabled' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'enabled' ) #2: (descriptive_representation_item.description = 'disabled')}
5.1.6.4.3 executable to machine_usage (as machine_used)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_usage_relationship } action_method_relationship.related_method -> action_method => machining_machine_usage
5.1.6.4.4 executable to process_property (as process_properties)
AIM element: PATH
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition action_property => machining_process_property
5.1.6.4.5 executable to product_view_definition (as removal)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action.chosen_method { action.name = 'removal shape' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.4.6 executable to product_view_definition (as to_be)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action.chosen_method { action.name = 'to-be shape' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.4.7 twin_end
AIM element: date_and_time
Source: 10303-41
Reference path: machining_process_executable date_and_time_item = machining_process_executable date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment <= date_and_time_assignment { date_and_time_assignment.role -> date_time_role date_time_role.name = 'twin end' } date_and_time_assignment.assigned_date_and_time -> date_and_time
5.1.6.4.8 twin_exception
AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'twin exception' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.6.4.9 executable to executable (as twin_plan)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_twin_relationship } action_method_relationship.related_method -> action_method => machining_process_executable
5.1.6.4.10 twin_source
AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'twin source' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.6.4.11 twin_start
AIM element: date_and_time
Source: 10303-41
Reference path: machining_process_executable date_and_time_item = machining_process_executable date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment <= date_and_time_assignment { date_and_time_assignment.role -> date_time_role date_time_role.name = 'twin start' } date_and_time_assignment.assigned_date_and_time -> date_and_time
5.1.6.4.12 twin_worktime
AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'twin worktime' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
AO ARM

5.1.6.5 EXTENDED_NC_FUNCTION

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'extended function' }
5.1.6.5.1 extended_description
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_nc_function <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'description' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
AO ARM

5.1.6.6 FEATURE_COMPLETE_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { action_method.description = 'feature complete probing' }
5.1.6.6.1 feature_complete_probing to manufacturing_feature (as expected_value)
AIM element: PATH
Source:
Reference path: machining_touch_probing <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_feature_relationship } action_method_relationship.related_method -> { action_method => machining_process_executable => machining_feature_process } action_method <- action.chosen_method { action.name = 'expected value' } action => property_process <- process_property_association.process process_property_association process_property_association.property_or_shape -> property_or_shape_select property_or_shape_select = shape_definition shape_definition shape_definition = shape_aspect shape_aspect
5.1.6.6.2 feature_complete_probing to touch_probe (as its_probe)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
5.1.6.6.3 start_position
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'start position' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
AO ARM

5.1.6.7 FIXTURE_USAGE

AIM element: machining_fixture_usage
Source: 10303-238
Reference path: machining_fixture_usage <= action_method
5.1.6.7.1 description
AIM element: action_method.description
Source: 10303-41
Reference path: machining_fixture_usage <= action_method action_method.description
5.1.6.7.2 its_id
AIM element: action_method.name
Source: 10303-41
Reference path: machining_fixture_usage <= action_method action_method.name
5.1.6.7.3 fixture_usage to product_view_definition (as its_product)
AIM element: PATH
Reference path: machining_fixture_usage <= action_method <- action.chosen_method { action.name = 'fixture workpiece' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.7.4 mount_reference
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_fixture_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'mount reference' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
5.1.6.7.5 workpiece_reference
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_fixture_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'workpiece reference' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
AO ARM

5.1.6.8 IF_STATEMENT

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'if statement' }
5.1.6.8.1 if_statement to boolean_expression (as condition)
AIM element: PATH
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'condition' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => boolean_expression
5.1.6.8.2 if_statement to executable (as true_branch)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_process_body_relationship => machining_process_branch_relationship } { action_method_relationship.name = 'true branch' } action_method_relationship.related_method -> action_method => machining_process_executable
5.1.6.8.3 if_statement to executable (as false_branch)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_process_body_relationship => machining_process_branch_relationship } { action_method_relationship.name = 'false branch' } action_method_relationship.related_method -> action_method => machining_process_executable
AO ARM

5.1.6.9 MACHINE_AXIS_TRAVEL

AIM element: measure_with_unit
Source: 10303-41
Reference path: measure_with_unit => measure_representation_item <= representation_item { representation_item <- representation.items[i] representation <- resource_property_representation.representation resource_property_representation resource_property_representation.property -> resource_property resource_property.name = 'axis travel' }
5.1.6.9.1 axis_identifier
AIM element: representation_item.name
Source: 10303-41
Reference path: measure_with_unit measure_representation_item <= representation_item representation_item.name
5.1.6.9.2 travel_distance
AIM element: measure_with_unit
Source: 10303-41
Reference path: IDENTICAL MAPPING
AO ARM

5.1.6.10 MACHINE_PARAMETERS

AIM element: machining_execution_resource
Source: 10303-238
Reference path: machining_execution_resource <= action_resource
5.1.6.10.1 machine_parameters to machine_axis_travel (as axis_travel)
AIM element: PATH
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'axis travel' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.2 feedrate
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'feedrate' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'feed speed' } representation.items[i] -> { representation_item.name = 'feed speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.6.10.3 number_of_control_axis
AIM element: count_measure
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'number of control axis' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
5.1.6.10.4 number_of_simultaneous_axis
AIM element: count_measure
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'number of simultaneous axis' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
5.1.6.10.5 positioning_accuracy
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'positioning accuracy' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.6 spindle_power
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'spindle power' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.6.10.7 spindle_torque
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'spindle torque' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.6.10.8 spindle_speed
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'spindle' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_spindle_speed_representation } representation { representation.name = 'spindle speed' } representation.items[i] -> { representation_item.name = 'rotational speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.6.10.9 table_indexing
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'table indexing' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'required' ) (descriptive_representation_item.description = 'not required' ) }
5.1.6.10.10 table_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'table length' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.11 table_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'table width' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.12 work_volume_height
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'work volume height' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.13 work_volume_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'work volume length' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.10.14 work_volume_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_execution_resource <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'work volume width' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.6.11 MACHINE_USAGE

AIM element: machining_machine_usage
Source: 10303-238
Reference path: machining_machine_usage <= action_method
5.1.6.11.1 description
AIM element: action_method.description
Source: 10303-41
Reference path: machining_machine_usage <= action_method action_method.description
5.1.6.11.2 its_id
AIM element: action_method.name
Source: 10303-41
Reference path: machining_machine_usage <= action_method action_method.name
5.1.6.11.3 machine_usage to product_view_definition (as its_product)
AIM element: PATH
Reference path: machining_machine_usage <= action_method <- action.chosen_method { action.name = 'machine usage' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
AO ARM

5.1.6.12 MACHINE_WITH_KINEMATICS

AIM element: product_definition
Source: 10303-41
5.1.6.12.1 configuration
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'configuration' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.6.12.2 mechanism
AIM element: mechanism_representation
Source: 10303-105
Reference path: product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition => product_definition_kinematics } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition {property_definition_representation => kinematic_property_definition_representation => kinematic_property_mechanism_representation } property_definition_representation property_definition_representation.used_representation -> representation => mechanism_representation
AO ARM

5.1.6.13 MACHINING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource
5.1.6.13.1 its_id
AIM element: action_resource.name
Source: 10303-41
Reference path: machining_tool <= action_resource action_resource.name
5.1.6.13.2 machining_tool to tool_usage (as its_usage)
AIM element: PATH
Reference path: machining_tool <= action_resource <- requirement_for_action_resource.resources[i] requirement_for_action_resource <= action_resource_requirement action_resource_requirement.operations[1] -> characterized_action_definition characterized_action_definition=action_method action_method => machining_tool_usage
AO ARM

5.1.6.14 MACHINING_WORKINGSTEP

AIM element: machining_workingstep
Source: 10303-238
Reference path: machining_workingstep <= machining_process_executable <= action_method { action_method.description = 'machining' }
5.1.6.14.1 machining_workingstep to manufacturing_feature (as its_feature)
AIM element: PATH
Rules: feature_optional_machining_property_process
Reference path: machining_workingstep <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_feature_relationship } action_method_relationship.related_method -> { action_method => machining_process_executable => machining_feature_process } action_method <- action.chosen_method { action.name = 'machining' } action => property_process <- process_property_association.process process_property_association process_property_association.property_or_shape -> property_or_shape_select property_or_shape_select = shape_definition shape_definition shape_definition = shape_aspect shape_aspect
AO ARM

5.1.6.15 NC_CONSTANT

AIM element: expression_item_representation_item
Source: 10303-61
Reference path: expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => numeric_expression => simple_numeric_expression => literal_number => (int_literal) (real_literal)
5.1.6.15.1 its_name
AIM element: representation_item.name
Source: 10303-41
Reference path: expression_item_representation_item <= representation_item representation_item.name
5.1.6.15.2 its_value
AIM element: literal_number.the_value
Source: 13584-20
Reference path: expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => numeric_expression => simple_numeric_expression => literal_number literal_number.the_value
AO ARM

5.1.6.16 NC_FUNCTION

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method
AO ARM

5.1.6.17 NC_VARIABLE

AIM element: expression_item_representation_item
Source: 10303-61
Rules: nc_variable_compatible_initial_value
Reference path: expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => numeric_expression => simple_numeric_expression => numeric_variable => (int_numeric_variable) (real_numeric_variable)
5.1.6.17.1 its_name
AIM element: representation_item.name
Source: 10303-41
Reference path: expression_item_representation_item <= representation_item representation_item.name
5.1.6.17.2 initial_value

See NOTE 4

AIM element: literal_number.the_value
Source: 13584-20
Rules: nc_variable_compatible_initial_value
Reference path: expression_item_representation_item <= representation_item <- representation_item_relationship.relating_representation_item { representation_item_relationship.description = 'initial value' } representation_item_relationship representation_item_relationship.related_representation_item -> representation_item => expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => numeric_expression => simple_numeric_expression => literal_number { literal_number => (int_literal) (real_literal) } literal_number.the_value
AO ARM

5.1.6.18 NON_SEQUENTIAL

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'non-sequential' }
5.1.6.18.1 non_sequential to executable (as its_elements)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_process_body_relationship } action_method_relationship.related_method -> action_method => machining_process_executable
AO ARM

5.1.6.19 OFFSET_VECTOR

AIM element: machining_offset_vector_representation
Source: 10303-43
Reference path: machining_offset_vector_representation <= representation
5.1.6.19.1 offset_vector to nc_variable (as translate)
AIM element: PATH
Reference path: machining_offset_vector_representation <= representation representation.items[i] -> { representation_item.name = 'translate' } representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => expression_item_representation_item
5.1.6.19.2 offset_vector to nc_variable (as rotate)
AIM element: PATH
Reference path: machining_offset_vector_representation <= representation representation.items[i] -> { representation_item.name = 'rotate' } representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => expression_item_representation_item
AO ARM

5.1.6.20 OPTIONAL_STOP

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'optional stop' }
AO ARM

5.1.6.21 PARALLEL

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'parallel' }
5.1.6.21.1 parallel to executable (as branches)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => [ machining_process_body_relationship => ] [ concurrent_action_method => ] machining_process_concurrent_relationship } action_method_relationship.related_method -> action_method => machining_process_executable
AO ARM

5.1.6.22 PROCESS_PROPERTY

AIM element: machining_process_property
Source: 10303-238
Reference path: machining_process_property <= action_property
5.1.6.22.1 property_date
AIM element: date_and_time
Source: 10303-41
Reference path: machining_process_property <= action_property date_and_time_item = action_property date_and_time_item <- applied_date_and_time_assignment.items[i] applied_date_and_time_assignment <= date_and_time_assignment { date_and_time_assignment.role -> date_time_role date_time_role.name = 'property date' } date_and_time_assignment.assigned_date_and_time -> date_and_time
AO ARM

5.1.6.23 PROGRAM_STOP

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'program stop' }
AO ARM

5.1.6.24 PROGRAM_STRUCTURE

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method
AO ARM

5.1.6.25 RAPID_MOVEMENT

AIM element: machining_rapid_movement
Source: 10303-238
Reference path: machining_rapid_movement <= machining_operation <= action_method
AO ARM

5.1.6.26 RETURN_HOME

AIM element: machining_rapid_movement
Source: 10303-238
Reference path: machining_rapid_movement <= machining_operation <= action_method { action_method.description = 'return home' }
AO ARM

5.1.6.27 SELECTIVE

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'selective' }
5.1.6.27.1 selective to executable (as its_elements)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_process_body_relationship => machining_process_branch_relationship } action_method_relationship.related_method -> action_method => machining_process_executable
AO ARM

5.1.6.28 SET_MARK

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'set mark' }
AO ARM

5.1.6.29 SETUP

AIM element: product_definition_formation
Source: 10303-41
Reference path: product_definition_formation { product_definition_formation.of_product -> product => machining_setup }
5.1.6.29.1 its_id
AIM element: product.id
Source: 10303-41
Reference path: product_definition_formation product_definition_formation.of_product -> product product.id
5.1.6.29.2 its_origin
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: product_definition_formation <- product_definition.formation product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition => product_definition_shape } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition {property_definition_representation => shape_definition_representation } property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'orientation'} representation_item => geometric_representation_item => placement => axis2_placement_3d
5.1.6.29.3 setup to elementary_surface (as its_secplane)
AIM element: elementary_surface
Source: 10303-42
Reference path: product_definition_formation <- product_definition.formation product_definition characterized_product_definition = product_definition characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'security plane' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> representation_item => geometric_representation_item => surface => elementary_surface
5.1.6.29.4 setup to workpiece_setup (as its_workpiece_setup)
AIM element: PATH
Reference path: product_definition_formation <- product_definition.formation product_definition <- product_definition_relationship.relating_product_definition product_definition_relationship => machining_setup_workpiece_relationship
5.1.6.29.5 setup to fixture_usage (as its_fixture_usage)
AIM element: PATH
Reference path: product_definition_formation <- product_definition_formation <- product_definition.formation product_definition characterized_product_definition = product_definition characterized_product_definition <- process_product_association.defined_product process_product_association process_product_association.process -> product_definition_process <= action { action.name = 'fixture usage' } action.chosen_method -> action_method => machining_fixture_usage
AO ARM

5.1.6.30 SETUP_INSTRUCTION

AIM element: machining_operator_instruction
Source: 10303-238
Reference path: machining_operator_instruction <= action_method_with_associated_documents <= action_method
5.1.6.30.1 description
AIM element: action_method.description
Source: 10303-41
Reference path: machining_operator_instruction <= action_method_with_associated_documents <= action_method action_method.description
5.1.6.30.2 external_document
AIM element: document.id
Source: 10303-41
Reference path: machining_operator_instruction <= action_method_with_associated_documents action_method_with_associated_documents.documents[i] -> document document.id
AO ARM

5.1.6.31 TOOL_LENGTH_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { action_method.description = 'tool length probing' }
AO ARM

5.1.6.32 TOOL_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { (action_method.description = 'tool length probing') (action_method.description = 'tool radius probing') }
5.1.6.32.1 offset
AIM element: cartesian_point
Source: 10303-42
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'offset' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => point => cartesian_point
5.1.6.32.2 max_wear
AIM element: positive_length_measure
Source: 10303-41
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'maximum wear' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit measure_with_unit.value_component -> measure_value measure_value = positive_length_measure positive_length_measure
5.1.6.32.3 tool_probing to machining_tool (as its_tool)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
AO ARM

5.1.6.33 TOOL_RADIUS_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { action_method.description = 'tool radius probing' }
AO ARM

5.1.6.34 TOOL_USAGE

AIM element: machining_tool_usage
Source: 10303-238
Reference path: machining_tool_usage <= action_method
5.1.6.34.1 description
AIM element: action_method.description
Source: 10303-41
Reference path: machining_tool_usage <= action_method action_method.description
5.1.6.34.2 gage_placement
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_tool_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'gage placement' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool carousel' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.6.34.4 its_id
AIM element: action_method.name
Source: 10303-41
Reference path: machining_tool_usage <= action_method action_method.name
5.1.6.34.5 tool_usage to externally_defined_representation (as its_library_reference)
AIM element: PATH
Reference path: machining_tool_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'library reference' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation => externally_defined_representation_with_parameters
5.1.6.34.6 its_position
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool position' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.6.34.7 tool_usage to workpiece (as its_product)
AIM element: PATH
Reference path: machining_tool_usage <= action_method <- action.chosen_method { action.name = 'tool usage' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.34.8 tool_end_placement
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_tool_usage <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool end placement' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
AO ARM

5.1.6.35 TOUCH_PROBE

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'touch probe' }
5.1.6.35.1 ball_radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'ball radius' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.35.2 overall_assembly_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'overall assembly length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.35.3 stylus_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'stylus diameter' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.6.36 TOUCH_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method
5.1.6.36.1 touch_probing to nc_variable (as measured_offset)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'measured offset' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => expression_item_representation_item
AO ARM

5.1.6.37 WAIT_FOR_MARK

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'wait for mark' }
5.1.6.37.1 wait_for_mark to channel (as its_channel)
AIM element: PATH
Reference path: machining_nc_function <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'channel' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation
AO ARM

5.1.6.38 WHILE_STATEMENT

AIM element: machining_process_executable
Source: 10303-238
Reference path: machining_process_executable <= action_method { action_method.description = 'while statement' }
5.1.6.38.1 while_statement to boolean_expression (as condition)
AIM element: PATH
Reference path: machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'condition' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => expression_item_representation_item expression_item_representation_item.item -> expression_element expression_element = expression expression => boolean_expression
5.1.6.38.2 while_statement to executable (as body)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_process_body_relationship } action_method_relationship.related_method -> action_method => machining_process_executable
AO ARM

5.1.6.39 WORKINGSTEP

AIM element: machining_workingstep
Source: 10303-238
Reference path: machining_workingstep <= machining_process_executable <= action_method
5.1.6.39.1 its_secplane
AIM element: elementary_surface
Source: 10303-42
Reference path: machining_workingstep <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'security plane' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => surface => elementary_surface
5.1.6.39.2 workingstep to manufacturing_feature (as final_features)
AIM element: PATH
Rules: feature_optional_machining_property_process
Reference path: machining_workingstep <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_final_feature_relationship } action_method_relationship.related_method -> { action_method => machining_process_executable => machining_feature_process } action_method <- action.chosen_method { action.name = 'machining' } action => property_process <- process_property_association.process process_property_association process_property_association.property_or_shape -> property_or_shape_select property_or_shape_select = shape_definition shape_definition shape_definition = shape_aspect shape_aspect
5.1.6.39.3 workingstep to machining_operation (as its_operation)
AIM element: PATH
Reference path: machining_workingstep <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_operation_relationship } action_method_relationship.related_method -> action_method => machining_operation
5.1.6.39.4 toolpath_orientation
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_workingstep <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'toolpath orientation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
AO ARM

5.1.6.40 WORKPIECE_COMPLETE_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { action_method.description = 'workpiece complete probing' }
5.1.6.40.1 workpiece_complete_probing to product_view_definition (as its_workpiece)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method <- action.chosen_method { action.name = 'workpiece complete probing' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.40.2 probing_distance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'probing distance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.40.3 workpiece_complete_probing to touch_probe (as its_probe)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
5.1.6.40.4 workpiece_complete_probing to offset_vector (as computed_offset)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'computed offset' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation => machining_offset_vector_representation
AO ARM

5.1.6.41 WORKPIECE_PROBING

AIM element: machining_touch_probing
Source: 10303-238
Reference path: machining_touch_probing <= machining_operation <= action_method { action_method.description = 'workpiece probing' }
5.1.6.41.1 start_position
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'start position' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d
5.1.6.41.2 workpiece_probing to product_view_definition (as its_workpiece)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method <- action.chosen_method { action.name = 'workpiece probing' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
5.1.6.41.3 its_direction
AIM element: direction
Source: 10303-42
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.6.41.4 expected_value
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_touch_probing <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'expected value' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.6.41.5 workpiece_probing to touch_probe (as its_probe)
AIM element: PATH
Reference path: machining_touch_probing <= machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
AO ARM

5.1.6.42 WORKPIECE_SETUP

AIM element: product_definition_relationship
Source: 10303-41
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship
5.1.6.42.1 workpiece_setup to product_view_definition (as its_workpiece)
AIM element: PATH
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship product_definition_relationship.related_product_definition -> product_definition
5.1.6.42.2 its_origin
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship characterized_product_definition = product_definition_relationship characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition property_definition => product_definition_shape <- context_dependent_shape_representation.represented_product_relation context_dependent_shape_representation context_dependent_shape_representation.representation_relation -> [ shape_representation_relationship ] [ representation_relationship_with_transformation ] representation_relationship_with_transformation.transformation_operator -> transformation transformation = item_defined_transformation item_defined_transformation item_defined_transformation.transform_item_2 -> representation_item => axis2_placement_3d See NOTE 5
5.1.6.42.3 workpiece_setup to offset_vector (as its_offset)
AIM element: PATH
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship characterized_product_definition = product_definition_relationship characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'computed offset' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation => machining_offset_vector_representation
5.1.6.42.4 workpiece_setup to restricted_area_select (as its_restricted_area)

#1: if restricted_area is a block

#2: if restricted_area is a right_circular_cylinder

#3: if restricted_area is an advanced_brep_shape_representation

#4: if restricted_area is a bounded_surface

AIM element: PATH
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship characterized_product_definition = product_definition_relationship characterized_product_definition characterized_definition = characterized_product_definition characterized_definition <- property_definition.definition { property_definition.name = 'restricted area' } property_definition represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation => shape_representation => #1: (shape_representation_with_parameters => block_shape_representation) #2: (shape_representation_with_parameters => cylindrical_shape_representation) #3: (advanced_brep_shape_representation) #4: ( geometrically_bounded_surface_shape_representation <= representation representation.items[i] -> representation_item => geometric_set geometric_set.elements[i] -> geometric_set_select geometric_set_select = surface surface => bounded_surface)
5.1.6.42.5 workpiece_setup to setup_instruction (as its_instructions)
AIM element: PATH
Reference path: machining_setup_workpiece_relationship <= product_definition_relationship characterized_product_definition = product_definition_relationship characterized_product_definition <- process_product_association.defined_product process_product_association process_product_association.process -> product_definition_process <= action { action.name = 'setup instructions' } action.chosen_method -> { action_method => machining_process_executable } { action_method.description = 'setup instructions' } action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => serial_action_method => sequential_method => machining_operator_instruction_relationship } action_method_relationship.related_method -> action_method => machining_operator_instruction See NOTE 6
AO ARM

5.1.6.43 WORKPLAN

AIM element: machining_workplan
Source: 10303-238
Reference path: machining_workplan <= machining_process_executable <= action_method
5.1.6.43.1 workplan to executable (as its_elements)
AIM element: PATH
Reference path: machining_workplan <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => [ machining_process_body_relationship => ] [ serial_action_method => sequential_method => ] machining_process_sequence_relationship } action_method_relationship.related_method -> action_method => machining_process_executable See NOTE 6
5.1.6.43.2 workplan to channel (as its_channel)
AIM element: PATH
Reference path: machining_workplan <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'channel' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation
5.1.6.43.3 workplan to setup (as its_setup)
AIM element: PATH
Reference path: machining_workplan <= machining_process_executable <= action_method <- action.chosen_method { action.name = 'setup' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition product_definition.formation -> product_definition_formation
5.1.6.43.4 workplan to machine_parameters (as its_minimum_machine_params)
AIM element: PATH
Reference path: machining_workplan <= machining_process_executable <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_execution_resource
5.1.6.43.5 toolpath_orientation
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: machining_workplan <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'toolpath orientation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => placement => axis2_placement_3d

5.1.7 Mapping specification for operation UoF

AO ARM

5.1.7.1 EXTENDED_OPERATION

AIM element: extended_type_operation
Source: 10303-238
Reference path: extended_type_operation <= machining_operation <= action_method
5.1.7.1.1 description
AIM element: action_method.description
Source: 10303-49
Reference path: extended_type_operation <= machining_operation <= action_method action_method.description
5.1.7.1.2 extended_operation to machine_functions (as its_machine_functions)
AIM element: PATH
Reference path: extended_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_functions_relationship } action_method_relationship.related_method -> action_method => machining_functions
5.1.7.1.3 extended_operation to technology (as its_technology)
AIM element: PATH
Reference path: extended_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_technology_relationship } action_method_relationship.related_method -> action_method => machining_technology
5.1.7.1.4 extended_operation to machining_tool (as its_tool)
AIM element: PATH
Reference path: extended_type_operation <= machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
AO ARM

5.1.7.2 MACHINE_FUNCTIONS

AIM element: machining_functions
Source: 10303-238
Reference path: machining_functions <= action_method
5.1.7.2.1 machine_functions to representation_item (as other_functions)
AIM element: PATH
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'other functions' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item
AO ARM

5.1.7.3 MACHINING_OPERATION

AIM element: machining_operation
Source: 10303-238
Reference path: machining_operation <= action_method
5.1.7.3.1 retract_plane
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'retract plane' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.7.3.2 start_point
AIM element: cartesian_point
Source: 10303-42
Reference path: machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cut start point' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => point => cartesian_point
5.1.7.3.3 machining_operation to machining_tool (as its_tool)
AIM element: PATH
Reference path: machining_operation <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
5.1.7.3.4 machining_operation to technology (as its_technology)
AIM element: PATH
Reference path: machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_technology_relationship } action_method_relationship.related_method -> action_method => machining_technology
5.1.7.3.5 machining_operation to machine_functions (as its_machine_functions)
AIM element: PATH
Reference path: machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_functions_relationship } action_method_relationship.related_method -> action_method => machining_functions
AO ARM

5.1.7.4 OPERATION

AIM element: machining_operation
Source: 10303-238
Reference path: machining_operation <= action_method
5.1.7.4.1 its_id
AIM element: action_method.name
Source: 10303-49
Reference path: machining_operation <= action_method action_method.name
5.1.7.4.2 operation to toolpath (as its_toolpath)

See NOTE 7

AIM element: PATH
Reference path: machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => serial_action_method => sequential_method => machining_toolpath_sequence_relationship } action_method_relationship.related_method -> action_method => machining_toolpath
5.1.7.4.3 operation to tool_direction (as its_tool_direction)
AIM element: PATH
Reference path: machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation => machining_tool_direction_representation
5.1.7.4.4 operation to process_property (as process_properties)
AIM element: PATH
Reference path: machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition action_property => machining_process_property
AO ARM

5.1.7.5 TECHNOLOGY

AIM element: machining_technology
Source: 10303-238
Reference path: machining_technology <= action_method
5.1.7.5.1 feedrate
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'feed speed' } representation.items[i] -> { representation_item.name = 'feed speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.7.5.2 feedrate_reference

#1: if value is tool center point (mapping may be omitted if value is tool center point)

#2: if value is cutter contact point

AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feedrate reference' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: ( descriptive_representation_item.description = 'tool center point') #2: (descriptive_representation_item.description = 'cutter contact point')}
AO ARM

5.1.7.6 THREE_AXES

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation {representation.name = 'three axes' }
AO ARM

5.1.7.7 TOOL_DIRECTION

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation
AO ARM

5.1.7.8 TOOLPATH_LIST

AIM element: NOT MAPPED See NOTE 7
AO ARM

5.1.7.9 TWO_AXES

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation {representation.name = 'two axes' }

5.1.8 Mapping specification for toolpath UoF

AO ARM

5.1.8.1 AP_LIFT_PATH_ANGLE

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'approach lift path angle' }
5.1.8.1.1 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.8.1.2 benddist
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'bend distance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.8.2 AP_LIFT_PATH_TANGENT

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'approach lift path tangent' }
5.1.8.2.1 radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'radius' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.8.3 APPROACH_LIFT_PATH

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { (action_method.description = 'approach lift path angle') (action_method.description = 'approach lift path tangent') }
5.1.8.3.1 fix_point
AIM element: cartesian_point
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'fix point' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => point => cartesian_point
5.1.8.3.2 fix_point_dir
AIM element: direction
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'fix point direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.8.4 AXIS_TRAJECTORY

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'axis trajectory' }
5.1.8.4.1 axis_list

See NOTE 8

AIM element: representation_item.name
Source: 10303-43
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axis commands' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> { representation_item => geometric_representation_item => curve => bounded_curve } representation_item representation_item.name
5.1.8.4.2 commands

See NOTE 8

AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axis commands' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
AO ARM

5.1.8.5 CONNECT_DIRECT

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'connect direct' }
AO ARM

5.1.8.6 CONNECT_SECPLANE

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'connect security plane' }
5.1.8.6.1 up_dir
AIM element: direction
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'up direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.8.6.2 down_dir
AIM element: direction
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'down direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.8.7 CONNECTOR

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { (action_method.description = 'connect direct') (action_method.description = 'connect security plane') }
AO ARM

5.1.8.8 CURVE_WITH_NORMAL_VECTOR

AIM element: [ bounded_curve] [ bounded_curve]
Source: 10303-42 10303-42
Reference path: [ bounded_curve <= representation_item <- representation.items[i] representation <- action_property_representation.representation action_property_representation action_property_representation.property -> action_property { action_property.name = 'basic curve' } ] [ bounded_curve <= representation_item <- representation.items[i] representation <- action_property_representation.representation action_property_representation action_property_representation.property -> action_property { action_property.name = 'surface normal' } ]
5.1.8.8.1 basiccurve
AIM element: bounded_curve
Source: 10303-42
Reference path: bounded_curve <= representation_item <- representation.items[i] representation <- action_property_representation.representation action_property_representation action_property_representation.property -> action_property { action_property.name = 'basic curve' }
5.1.8.8.2 surface_normal
AIM element: bounded_curve
Source: 10303-42
Reference path: bounded_curve <= representation_item <- representation.items[i] representation <- action_property_representation.representation action_property_representation action_property_representation.property -> action_property { action_property.name = 'surface normal' }
AO ARM

5.1.8.9 CUTTER_CONTACT_TRAJECTORY

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'cutter contact trajectory' }
5.1.8.9.1 basiccurve

#1: if the basiccurve is a bounded_pcurve

#2: if the basiccurve is a curve_with_normal_vector

AIM element: #1: ( bounded_pcurve ) #2: ( [ bounded_curve] [ bounded_curve] )
Source: 10303-42 10303-42 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- #1: ( action_property.definition { action_property.name = 'basic curve' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => bounded_curve => bounded_pcurve ) #2: ( [ action_property.definition { action_property.name = 'basic curve' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => bounded_curve ] [ action_property.definition { action_property.name = 'surface normal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => bounded_curve ] )
5.1.8.9.2 its_toolaxis
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool axis' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.9.3 its_toolref_direction
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool reference direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.9.4 its_contact_type
AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'contact type' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'side' ) (descriptive_representation_item.description = 'front' ) }
5.1.8.9.5 path_maximum_deviation
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'path maximum deviation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.8.9.6 tool_axis_maximum_deviation
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool axis maximum deviation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.8.10 CUTTER_LOCATION_TRAJECTORY

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'cutter location trajectory' }
5.1.8.10.1 basiccurve
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'basic curve' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.10.2 its_toolaxis
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool axis' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.10.3 its_toolref_direction
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool reference direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.10.4 surface_normal
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'surface normal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
5.1.8.10.5 path_maximum_deviation
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'path maximum deviation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.8.10.6 tool_axis_maximum_deviation
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool axis maximum deviation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.8.11 FEEDSTOP

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { action_method.description = 'feedstop' }
5.1.8.11.1 dwell
AIM element: time_measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'dwell' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_dwell_time_representation } representation { representation.name = 'dwell time' } representation.items[i] -> { representation_item.name = 'dwell time' } representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
AO ARM

5.1.8.12 PARAMETERISED_PATH

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { (action_method.description = 'approach lift path angle') (action_method.description = 'approach lift path tangent') (action_method.description = 'connect direct') (action_method.description = 'connect security plane') }
AO ARM

5.1.8.13 TOOLPATH

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method
5.1.8.13.1 its_priority

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'priority' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'required' ) #2: (descriptive_representation_item.description = 'suggested' ) }
5.1.8.13.2 its_type

#1: if value is approach

#2: if value is lift

#3: if value is connect

#4: if value is non-contact

#5: if value is contact

#6: if value is trajectory path (mapping may be omitted if value is trajectory path)

AIM element:  
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'trajectory type' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'approach' ) #2: (descriptive_representation_item.description = 'lift' ) #3: (descriptive_representation_item.description = 'connect' ) #4: (descriptive_representation_item.description = 'non-contact' ) #5: (descriptive_representation_item.description = 'contact' ) #6: (descriptive_representation_item.description = 'trajectory path' ) }
5.1.8.13.3 its_speed
AIM element: (descriptive_representation_item) (ratio_measure_with_unit) (bounded_curve)
Source: 10303-45 10303-41 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'speed profile' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_toolpath_speed_profile_representation } representation representation.items[i] -> ( representation_item => descriptive_representation_item descriptive_representation_item.description { descriptive_representation_item.description = 'rapid' } ) ( representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit ) ( representation_item => geometric_representation_item => curve => bounded_curve )
5.1.8.13.4 toolpath to technology (as its_technology)
AIM element: PATH
Reference path: machining_toolpath <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_technology_relationship } action_method_relationship.related_method -> action_method => machining_technology
5.1.8.13.5 toolpath to machine_functions (as its_machine_functions)
AIM element: PATH
Reference path: machining_toolpath <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_functions_relationship } action_method_relationship.related_method -> action_method => machining_functions
5.1.8.13.6 its_id
AIM element: action_method.name
Source: 10303-49
Reference path: machining_toolpath <= action_method action_method.name
AO ARM

5.1.8.14 TOOLPATH_SPEED

AIM element: bounded_curve
Source: 10303-42
Reference path: bounded_curve { bounded_curve <- representation.items[i] representation => machining_toolpath_speed_profile_representation }
5.1.8.14.1 speed
AIM element: IDENTICAL MAPPING
AO ARM

5.1.8.15 TRAJECTORY

AIM element: machining_toolpath
Source: 10303-238
Reference path: machining_toolpath <= action_method { (action_method.description = 'axis trajectory') (action_method.description = 'cutter contact trajectory') (action_method.description = 'cutter location trajectory') }
5.1.8.15.1 its_direction

#1: if value is true (mapping may be omitted if value is true)

#2: if value is false

AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'beginning to end' ) #2: (descriptive_representation_item.description = 'end to beginning' ) }
5.1.8.15.2 its_material_removal_depth

#1: if the depth value is described as a constant length

#2: if the depth value is described as a curve specifying a length at each point along the toolpath.

AIM element: (length_measure_with_unit) (bounded_curve)
Source: 10303-41 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'material removal depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> #1: (representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit) #2: ( representation_item => geometric_representation_item => curve => bounded_curve )
5.1.8.15.3 its_material_removal_overcut

#1: if the overcut value is described as a constant length

#2: if the overcut value is described as a curve specifying a length at each point along the toolpath.

AIM element: (length_measure_with_unit) (bounded_curve)
Source: 10303-41 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'material removal overcut' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> #1: (representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit) #2: ( representation_item => geometric_representation_item => curve => bounded_curve )
5.1.8.15.4 its_material_removal_total_volume
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'material removal total volume' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = volume_measure volume_measure }
5.1.8.15.5 cross_section_area_parameters
AIM element: bounded_curve
Source: 10303-42
Reference path: machining_toolpath <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cross section area parameters' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve

5.1.9 Mapping specification for process data for milling UoF

AO ARM

5.1.9.1 ADAPTIVE_CONTROL

AIM element: machining_technology
Source: 10303-238
Reference path: machining_technology <= action_method { action_method.description = 'adaptive control' }
AO ARM

5.1.9.2 AIR_STRATEGY

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { (action_method.description = 'approach retract angle') (action_method.description = 'approach retract tangent') }
AO ARM

5.1.9.3 ALONG_PATH

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'along path' }
5.1.9.3.1 along_path to toolpath (as path)

See NOTE 7

AIM element: PATH
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_toolpath_sequence_relationship } action_method_relationship.related_method -> action_method => machining_toolpath
AO ARM

5.1.9.4 AP_RETRACT_ANGLE

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'approach retract angle' }
5.1.9.4.1 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'travel angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.9.4.2 travel_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'travel length' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.5 AP_RETRACT_TANGENT

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'approach retract tangent' }
5.1.9.5.1 radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'travel radius' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.6 APPROACH_RETRACT_STRATEGY

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method
5.1.9.6.1 tool_orientation
AIM element: direction
Source: 10303-42
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tool orientation' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.9.7 BACK_BORING

AIM element: back_boring_operation
Source: 10303-238
Reference path: back_boring_operation <= drilling_type_operation <= machining_operation <= action_method
AO ARM

5.1.9.8 BIDIRECTIONAL

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'bidirectional' }
5.1.9.8.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.8.2 stepover_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) }
5.1.9.8.3 its_stroke_connection_strategy
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'connection strategy' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'straight line' ) (descriptive_representation_item.description = 'lift shift plunge' ) (descriptive_representation_item.description = 'degouge' ) (descriptive_representation_item.description = 'loop back' ) }
AO ARM

5.1.9.9 BIDIRECTIONAL_CONTOUR

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'bidirectional contour' }
5.1.9.9.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.9.2 stepover_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) }
5.1.9.9.3 rotation_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'rotation direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'clockwise' ) (descriptive_representation_item.description = 'counterclockwise' ) }
5.1.9.9.4 spiral_cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spiral cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
AO ARM

5.1.9.10 BORING

AIM element: boring_operation
Source: 10303-238
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'boring' }
AO ARM

5.1.9.11 BORING_OPERATION

AIM element: boring_operation
Source: 10303-238
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method
5.1.9.11.1 spindle_stop_at_bottom

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spindle stop' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'spindle stop at bottom' ) #2: (descriptive_representation_item.description = 'spindle nonstop' ) }
5.1.9.11.2 depth_of_testcut
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'testcut depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.11.3 waiting_position
AIM element: cartesian_point
Source: 10303-42
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'waiting position' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => point => cartesian_point
AO ARM

5.1.9.12 BOTTOM_AND_SIDE_FINISH_MILLING

AIM element: bottom_and_side_milling_operation
Source: 10303-238
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.9.13 BOTTOM_AND_SIDE_MILLING

AIM element: bottom_and_side_milling_operation
Source: 10303-238
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method
5.1.9.13.1 axial_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axial cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.13.2 radial_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'radial cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.13.3 allowance_side
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance side' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.13.4 allowance_bottom
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance bottom' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.14 BOTTOM_AND_SIDE_ROUGH_MILLING

AIM element: bottom_and_side_milling_operation
Source: 10303-238
Reference path: bottom_and_side_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.9.15 CENTER_DRILLING

AIM element: drilling_operation
Source: 10303-238
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'center drilling' }
AO ARM

5.1.9.16 CENTER_MILLING

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'center milling' }
AO ARM

5.1.9.17 CONTOUR_BIDIRECTIONAL

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'contour bidirectional' }
5.1.9.17.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.17.2 stepover_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) }
5.1.9.17.3 rotation_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'rotation direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'clockwise' ) (descriptive_representation_item.description = 'counterclockwise' ) }
5.1.9.17.4 spiral_cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spiral cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
AO ARM

5.1.9.18 CONTOUR_PARALLEL

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'contour parallel' }
5.1.9.18.1 rotation_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'rotation direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'clockwise' ) (descriptive_representation_item.description = 'counterclockwise' ) }
5.1.9.18.2 cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
AO ARM

5.1.9.19 CONTOUR_SPIRAL

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'contour spiral' }
5.1.9.19.1 rotation_direction
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'rotation direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'clockwise' ) (descriptive_representation_item.description = 'counterclockwise' ) }
5.1.9.19.2 cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
AO ARM

5.1.9.20 COUNTER_SINKING

AIM element: drilling_operation
Source: 10303-238
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'counter sinking' }
AO ARM

5.1.9.21 DRILLING

AIM element: drilling_operation
Source: 10303-238
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'drilling' }
AO ARM

5.1.9.22 DRILLING_OPERATION

AIM element: drilling_operation
Source: 10303-238
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method
AO ARM

5.1.9.23 DRILLING_TYPE_OPERATION

AIM element: drilling_type_operation
Source: 10303-238
Reference path: drilling_type_operation <= machining_operation <= action_method
5.1.9.23.1 cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.23.2 previous_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'previous diameter' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.23.3 dwell_time_bottom
AIM element: time_measure_with_unit
Source: 10303-41
Reference path: drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'dwell time bottom' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_dwell_time_representation } representation { representation.name = 'dwell time' } representation.items[i] -> { representation_item.name = 'dwell time' } representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
5.1.9.23.4 feed_on_retract
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feedrate on retract' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.23.5 drilling_type_operation to drilling_type_strategy (as its_machining_strategy)
AIM element: PATH
Reference path: drilling_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'machining' } action_method_relationship.related_method -> action_method => machining_strategy => drilling_type_strategy
AO ARM

5.1.9.24 DRILLING_TYPE_STRATEGY

AIM element: drilling_type_strategy
Source: 10303-238
Reference path: drilling_type_strategy <= machining_strategy <= action_method
5.1.9.24.1 reduced_cut_at_start
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'reduced cut at start' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_spindle_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.24.2 reduced_feed_at_start
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'reduced feedrate at start' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.24.3 depth_of_start
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'depth of start' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.24.4 reduced_cut_at_end
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'reduced cut at end' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_spindle_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.24.5 reduced_feed_at_end
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'reduced feedrate at end' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.24.6 depth_of_end
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'depth of end' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.25 EXCHANGE_PALLET

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'exchange pallet' }
AO ARM

5.1.9.26 EXPLICIT_STRATEGY

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'explicit' }
AO ARM

5.1.9.27 FIVE_AXES_CONST_TILT_YAW

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation {representation.name = 'five axes const tilt yaw' }
5.1.9.27.1 tilt_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool_direction_representation <= representation representation.items[i] -> { representation_item.name = 'tool direction tilt angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.9.27.2 yaw_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool_direction_representation <= representation representation.items[i] -> { representation_item.name = 'tool direction yaw angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.9.28 FIVE_AXES_VAR_TILT_YAW

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation {representation.name = 'five axes var tilt yaw' }
AO ARM

5.1.9.29 FREEFORM_FINISH_MILLING

AIM element: freeform_milling_operation
Source: 10303-238
Reference path: freeform_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.9.30 FREEFORM_OPERATION

AIM element: freeform_milling_operation
Source: 10303-238
Reference path: freeform_milling_operation <= milling_type_operation <= machining_operation <= action_method
5.1.9.30.1 freeform_operation to freeform_strategy (as its_machining_strategy)
AIM element: PATH
Reference path: freeform_milling_operation <= milling_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'machining' } action_method_relationship.related_method -> action_method => machining_strategy => milling_type_strategy => freeform_milling_strategy
AO ARM

5.1.9.31 FREEFORM_ROUGH_MILLING

AIM element: freeform_milling_operation
Source: 10303-238
Reference path: freeform_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.9.32 FREEFORM_STRATEGY

AIM element: freeform_milling_strategy
Source: 10303-238
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method
5.1.9.32.1 pathmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'pathmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'forward' ) (descriptive_representation_item.description = 'zigzag' ) }
5.1.9.32.2 cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
5.1.9.32.3 freeform_strategy to tolerances (as its_milling_tolerances)
AIM element: PATH
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'milling tolerances' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation => freeform_milling_tolerance_representation
5.1.9.32.4 stepover
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover length' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.33 INDEX_PALLET

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'index pallet' }
5.1.9.33.1 its_index
AIM element: count_measure
Source: 10303-41
Reference path: machining_nc_function <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'pallet index' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
AO ARM

5.1.9.34 INDEX_TABLE

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'index table' }
5.1.9.34.1 its_index
AIM element: count_measure
Source: 10303-41
Reference path: machining_nc_function <= machining_process_executable <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'table index' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
AO ARM

5.1.9.35 LEADING_LINE_STRATEGY

AIM element: freeform_milling_strategy
Source: 10303-238
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'leading line' }
5.1.9.35.1 its_line
AIM element: bounded_curve
Source: 10303-42
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'leading line' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => curve => bounded_curve
AO ARM

5.1.9.36 LOAD_TOOL

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'load tool' }
5.1.9.36.1 load_tool to machining_tool (as its_tool)
AIM element: PATH
Reference path: machining_nc_function <= machining_process_executable <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
AO ARM

5.1.9.37 MACHINE_AXIS_CONSTRAINT

AIM element: value_range
Source: 10303-238
Reference path: value_range <= compound_representation_item <= representation_item { representation_item <- representation.items[i] representation <- action_property_representation.representation action_property_representation action_property_representation.property -> action_property action_property.name = 'axis constraint' }
5.1.9.37.1 axis_identifier
AIM element: representation_item.name
Source: 10303-41
Reference path: value_range <= compound_representation_item <= representation_item representation_item.name
5.1.9.37.2 machine_axis_constraint to value_range (as axis_range)
AIM element: PATH
Reference path: IDENTICAL MAPPING
AO ARM

5.1.9.38 MILLING_MACHINE_FUNCTIONS

AIM element: machining_functions
Source: 10303-238
Reference path: machining_functions <= action_method { action_method.description = 'milling' }
5.1.9.38.1 coolant

#1: if value is true

#2: if value is false

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'coolant' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'coolant on' ) #2: (descriptive_representation_item.description = 'coolant off' ) }
5.1.9.38.2 coolant_pressure
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'coolant pressure' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.9.38.3 mist

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'mist' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'mist on' ) #2: (descriptive_representation_item.description = 'mist off' ) }
5.1.9.38.4 through_spindle_coolant

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'through spindle coolant' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'through spindle coolant on' ) #2: (descriptive_representation_item.description = 'through spindle coolant off' ) }
5.1.9.38.5 through_pressure
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'through spindle pressure' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.9.38.6 axis_clamping
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axis clamping' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.9.38.7 chip_removal

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'chip removal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'chip removal on' ) #2: (descriptive_representation_item.description = 'chip removal off' ) }
5.1.9.38.8 oriented_spindle_stop
AIM element: direction
Source: 10303-42
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'oriented spindle stop' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.38.9 milling_machine_functions to process_model (as its_process_model)

See NOTE 9

AIM element: PATH
Reference path: machining_functions <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => serial_action_method => sequential_method => machining_process_model_relationship } action_method_relationship.related_method -> action_method => machining_process_model
5.1.9.38.10 axis_constraints
Reference path: value_range
Source: 10303-238
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axis constraint' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => compound_representation_item => value_range
AO ARM

5.1.9.39 MILLING_MACHINING_OPERATION

AIM element: machining_operation
Source: 10303-238
Reference path: machining_operation <= { machining_operation => (milling_type_operation) (drilling_type_operation) } action_method
5.1.9.39.1 overcut_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'overcut length' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.40 MILLING_TECHNOLOGY

AIM element: machining_technology
Source: 10303-238
Reference path: machining_technology <= action_method { action_method.description = 'milling' }
5.1.9.40.1 cutspeed
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spindle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_spindle_speed_representation } representation { representation.name = 'cutting speed' } representation.items[i] -> { representation_item.name = 'surface speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.9.40.2 spindle
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spindle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_spindle_speed_representation } representation { representation.name = 'spindle speed' } representation.items[i] -> { representation_item.name = 'rotational speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.9.40.3 feedrate_per_tooth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'feed per tooth' } representation.items[i] -> { representation_item.name = 'feed per tooth' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.40.4 synchronize_spindle_with_feed

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'synchronize spindle with feed' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'synchronized' ) #2: (descriptive_representation_item.description = 'not synchronized' ) }
5.1.9.40.5 inhibit_feedrate_override

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'inhibit feedrate override' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'override not allowed' ) #2: (descriptive_representation_item.description = 'override allowed' ) }
5.1.9.40.6 inhibit_spindle_override

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'inhibit spindle override' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'override not allowed' ) #2: (descriptive_representation_item.description = 'override allowed' ) }
5.1.9.40.7 milling_technology to adaptive_control (as its_adaptive_control)
AIM element: PATH
Reference path: machining_technology <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_adaptive_control_relationship } action_method_relationship.related_method -> action_method => machining_technology
AO ARM

5.1.9.41 MILLING_TYPE_OPERATION

Reference path: milling_type_operation
Source: 10303-238
Reference path: milling_type_operation <= machining_operation <= action_method
5.1.9.41.1 milling_type_operation to approach_retract_strategy (as approach)
AIM element: PATH
Reference path: milling_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'approach' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
5.1.9.41.2 milling_type_operation to approach_retract_strategy (as retract)
AIM element: PATH
Reference path: milling_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'retract' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
AO ARM

5.1.9.42 MULTISTEP_DRILLING

AIM element: drilling_operation
Source: 10303-238
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'multistep drilling' }
5.1.9.42.1 retract_distance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'retract distance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.42.2 first_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'first depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.42.3 depth_of_step
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'depth of step' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.42.4 dwell_time_step
AIM element: time_measure_with_unit
Source: 10303-41
Reference path: drilling_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'dwell time step' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_dwell_time_representation } representation { representation.name = 'dwell time' } representation.items[i] -> { representation_item.name = 'dwell time' } representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
AO ARM

5.1.9.43 PLANE_CC_STRATEGY

AIM element: freeform_milling_strategy
Source: 10303-238
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'plane cutter contact' }
5.1.9.43.1 its_plane_normal
AIM element: direction
Source: 10303-42
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plane normal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.9.44 PLANE_CL_STRATEGY

AIM element: freeform_milling_strategy
Source: 10303-238
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'plane cutter location' }
5.1.9.44.1 its_plane_normal
AIM element: direction
Source: 10303-42
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plane normal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.9.45 PLANE_FINISH_MILLING

AIM element: plane_milling_operation
Source: 10303-238
Reference path: plane_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.9.46 PLANE_MILLING

AIM element: plane_milling_operation
Source: 10303-238
Reference path: plane_milling_operation <= milling_type_operation <= machining_operation <= action_method
5.1.9.46.1 axial_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: plane_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axial cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.46.2 allowance_bottom
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: plane_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance bottom' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.47 PLANE_ROUGH_MILLING

AIM element: plane_milling_operation
Source: 10303-238
Reference path: plane_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.9.48 PLUNGE_HELIX

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'plunge helix' }
5.1.9.48.1 radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plunge radius' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.48.2 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plunge angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.9.49 PLUNGE_RAMP

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'plunge ramp' }
5.1.9.49.1 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plunge angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.9.50 PLUNGE_STRATEGY

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { (action_method.description = 'plunge helix') (action_method.description = 'plunge ramp') (action_method.description = 'plunge toolaxis') (action_method.description = 'plunge zigzag') }
AO ARM

5.1.9.51 PLUNGE_TOOLAXIS

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'plunge toolaxis' }
AO ARM

5.1.9.52 PLUNGE_ZIGZAG

AIM element: machining_approach_retract_strategy
Source: 10303-238
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method { action_method.description = 'plunge zigzag' }
5.1.9.52.1 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plunge angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.9.52.2 width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_approach_retract_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'plunge width' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.53 PROCESS_MODEL

AIM element: machining_process_model
Source: 10303-238
Reference path: machining_process_model <= action_method
5.1.9.53.1 ini_data_file
AIM element: descriptive_representation_item
Source: 10303-45
Reference path: machining_process_model <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'initialization data' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.9.53.2 its_type
AIM element: action_method.description
Source: 10303-49
Reference path: machining_process_model <= action_method action_method.description
AO ARM

5.1.9.54 PROCESS_MODEL_LIST

AIM element: NOT MAPPED See NOTE 9
AO ARM

5.1.9.55 REAMING

AIM element: boring_operation
Source: 10303-238
Reference path: boring_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'reaming' }
AO ARM

5.1.9.56 SIDE_FINISH_MILLING

AIM element: side_milling_operation
Source: 10303-238
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.9.57 SIDE_MILLING

AIM element: side_milling_operation
Source: 10303-238
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method
5.1.9.57.1 axial_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axial cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.57.2 radial_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'radial cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.57.3 allowance_side
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance side' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.58 SIDE_ROUGH_MILLING

AIM element: side_milling_operation
Source: 10303-238
Reference path: side_milling_operation <= milling_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.9.59 TAPPING

AIM element: tapping_operation
Source: 10303-238
Reference path: tapping_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'tapping' }
5.1.9.59.1 compensation_chuck

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: tapping_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'compensation chuck' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'compensation chuck used' ) #2: (descriptive_representation_item.description = 'compensation chuck not used' ) }
AO ARM

5.1.9.60 THREAD_DRILLING

AIM element: tapping_operation
Source: 10303-238
Reference path: tapping_operation <= drilling_type_operation <= machining_operation <= action_method { action_method.description = 'thread drilling' }
5.1.9.60.1 helical_movement_on_forward

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: tapping_operation <= drilling_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'helical movement on forward' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'helical movement on forward' ) #2: (descriptive_representation_item.description = 'no helical movement on forward' ) }
AO ARM

5.1.9.61 THREE_AXES_TILTED_TOOL

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation {representation.name = 'three axes tilted tool' }
5.1.9.61.1 its_tool_direction
AIM element: direction
Source: 10303-42
Reference path: machining_tool_direction_representation <= representation representation.items[i] -> { representation_item.name = 'tool direction orientation' } representation_item => geometric_representation_item => direction
AO ARM

5.1.9.62 TOLERANCES

AIM element: freeform_milling_tolerance_representation
Source: 10303-238
Reference path: freeform_milling_tolerance_representation <= representation
5.1.9.62.1 chordal_tolerance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: freeform_milling_tolerance_representation <= representation representation.items[i] -> { representation_item.name = 'chordal tolerance' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.9.62.2 scallop_height
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: freeform_milling_tolerance_representation <= representation representation.items[i] -> { representation_item.name = 'scallop height' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.9.63 TOOL_DIRECTION_FOR_MILLING

AIM element: machining_tool_direction_representation
Source: 10303-238
Reference path: machining_tool_direction_representation <= representation
AO ARM

5.1.9.64 TWO5D_MILLING_OPERATION

AIM element: milling_type_operation
Source: 10303-238
Reference path: milling_type_operation <= machining_operation <= action_method
5.1.9.64.1 two5d_milling_operation to two5d_milling_strategy (as its_machining_strategy)
AIM element: PATH
Reference path: milling_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'machining' } action_method_relationship.related_method -> action_method => machining_strategy => milling_type_strategy
AO ARM

5.1.9.65 TWO5D_MILLING_STRATEGY

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { (action_method.description = 'bidirectional') (action_method.description = 'bidirectional contour') (action_method.description = 'center milling') (action_method.description = 'contour bidirectional') (action_method.description = 'contour parallel') (action_method.description = 'contour spiral') (action_method.description = 'explicit') (action_method.description = 'unidirectional') }
5.1.9.65.1 overlap
Reference path: ratio_measure_with_unit
Source: 10303-41
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'overlap ratio' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.9.65.2 allow_multiple_passes

#1: if value is true (mapping may be omitted if value is true)

#2: if value is false

AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'multiple passes' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'multiple passes allowed' ) #2: (descriptive_representation_item.description = 'multiple passes not allowed' ) }
AO ARM

5.1.9.66 UNIDIRECTIONAL

AIM element: milling_type_strategy
Source: 10303-238
Reference path: milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'unidirectional' }
5.1.9.66.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.66.2 cutmode
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutmode' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'climb' ) (descriptive_representation_item.description = 'conventional' ) }
AO ARM

5.1.9.67 UNLOAD_TOOL

AIM element: machining_nc_function
Source: 10303-238
Reference path: machining_nc_function <= machining_process_executable <= action_method { action_method.description = 'unload tool' }
5.1.9.67.1 unload_tool to machining_tool (as its_tool)
AIM element: PATH
Reference path: machining_nc_function <= machining_process_executable <= action_method supported_item = action_method supported_item <- action_resource.usage[i] action_resource => machining_tool
AO ARM

5.1.9.68 UV_STRATEGY

AIM element: freeform_milling_strategy
Source: 10303-238
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method { action_method.description = 'uv' }
5.1.9.68.1 forward_direction
AIM element: direction
Source: 10303-42
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'forward direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.9.68.2 sideward_direction
AIM element: direction
Source: 10303-42
Reference path: freeform_milling_strategy <= milling_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'sideward direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction

5.1.10 Mapping specification for cutting tools for milling UoF

AO ARM

5.1.10.1 BALLNOSE_ENDMILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'ballnose endmill' }
AO ARM

5.1.10.2 BULLNOSE_ENDMILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'bullnose endmill' }
AO ARM

5.1.10.3 COMBINED_DRILL_AND_REAMER

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'combined drill and reamer' }
5.1.10.3.1 drill_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'drill length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.4 COMBINED_DRILL_AND_TAP

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'combined drill and tap' }
5.1.10.4.1 drill_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'drill length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.5 COUNTERBORE

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'counterbore' }
AO ARM

5.1.10.6 COUNTERSINK

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'countersink' }
5.1.10.6.1 minimum_cutting_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'minimum cutting diameter' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.6.2 maximum_usable_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'maximum usable length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.7 CUTTING_COMPONENT

AIM element: machining_cutting_component
Source: 10303-238
Reference path: machining_cutting_component <= [action_resource] [characterized_object] { action_resource.kind -> action_resource_type action_resource_type.name = 'milling cutting edge' }
5.1.10.7.1 tool_functional_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'functional length' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.7.2 cutting_component to material (as its_material)
AIM element: PATH
Reference path: machining_cutting_component <= characterized_object characterized_definition = characterized_object characterized_definition <- material_designation.definitions[i] material_designation
5.1.10.7.3 expected_tool_life
AIM element: time_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'expected life' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
5.1.10.7.4 cutting_component to milling_technology (as its_technology)
AIM element: PATH
Reference path: machining_cutting_component <= action_resource <- requirement_for_action_resource.resources[i] requirement_for_action_resource <= action_resource_requirement { action_resource_requirement.kind -> resource_requirement_type resource_requirement_type.name = 'cutting component' } action_resource_requirement.operations[i] -> characterized_action_definition characterized_action_definition = action_method action_method => machining_technology
AO ARM

5.1.10.8 DOVETAIL_MILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'dovetail mill' }
5.1.10.8.1 included_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'included angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.9 DRILLING_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'drill') (action_resource.description = 'counterbore') (action_resource.description = 'countersink') (action_resource.description = 'spade drill') (action_resource.description = 'spot drill') (action_resource.description = 'step drill') (action_resource.description = 'tapered drill') (action_resource.description = 'twist drill') }
5.1.10.9.1 point_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'point angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.10 ENDMILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'endmill') (action_resource.description = 'ballnose endmill') (action_resource.description = 'bullnose endmill') (action_resource.description = 'profiled endmill') }
5.1.10.10.1 tool_cutting_edge_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'tool cutting edge angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.11 FACEMILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'facemill' }
5.1.10.11.1 tool_cutting_edge_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'tool cutting edge angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.12 MILLING_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'ballnose endmill') (action_resource.description = 'bullnose endmill') (action_resource.description = 'dovetail mill') (action_resource.description = 'endmill') (action_resource.description = 'facemill') (action_resource.description = 'profiled endmill') (action_resource.description = 'shoulder mill') (action_resource.description = 'tee slot mill') (action_resource.description = 'thread mill') (action_resource.description = 'side mill') }
5.1.10.12.1 number_of_effective_teeth
AIM element: count_measure
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'number of effective teeth' } representation_item => measure_representation_item <= measure_with_unit => measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
5.1.10.12.2 edge_radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'edge radius' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.13 MILLING_MACHINE_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.kind -> action_resource_type action_resource_type.name = 'milling cutting tool' }
5.1.10.13.1 milling_machine_cutting_tool to cutting_component (as its_cutting_edges)
AIM element: PATH
Reference path: machining_tool <= action_resource <- action_resource_relationship.relating_resource action_resource_relationship action_resource_relationship.related_resource -> action_resource => machining_cutting_component
5.1.10.13.2 overall_assembly_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'overall assembly length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.13.3 effective_cutting_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'effective cutting diameter' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.13.4 maximum_depth_of_cut
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'maximum depth of cut' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.13.5 hand_of_cut
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'hand of cut' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) (descriptive_representation_item.description = 'neutral' ) }
5.1.10.13.6 coolant_through_tool
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'coolant through tool' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'supported' ) (descriptive_representation_item.description = 'not supported' ) }
AO ARM

5.1.10.14 PROFILED_END_MILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'profiled endmill' }
AO ARM

5.1.10.15 REAMING_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'reamer') (action_resource.description = 'combined drill and reamer') (action_resource.description = 'tapered reamer') }
5.1.10.15.1 taper_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'taper length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.16 ROTATING_BORING_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'boring tool' }
5.1.10.16.1 retract_movement_forbidden
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'retract movement' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'permitted' ) (descriptive_representation_item.description = 'forbidden' ) }
AO ARM

5.1.10.17 SHOULDERMILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'shoulder mill' }
AO ARM

5.1.10.18 SIDE_MILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'side mill' }
5.1.10.18.1 cutter_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutter width' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.19 SPADE_DRILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'spade drill' }
AO ARM

5.1.10.20 SPOTDRILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'spot drill' }
AO ARM

5.1.10.21 STEP_DRILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'step drill' }
5.1.10.21.1 diameters
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'step diameters' } representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.21.2 step_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'step lengths' } representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.22 T_SLOT_MILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'tee slot mill' }
5.1.10.22.1 cutting_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutting width' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.23 TAPERED_DRILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'tapered drill' }
5.1.10.23.1 taper_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'taper angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.24 TAPERED_REAMER

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'tapered reamer' }
5.1.10.24.1 taper_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'taper angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
AO ARM

5.1.10.25 TAPPING_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'tapping tool') (action_resource.description = 'combined drill and tap') }
5.1.10.25.1 thread_form_type
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread form type' } representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.10.25.2 thread_size
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread size' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.25.3 thread_pitch
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread pitch' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.25.4 taper_thread_count
AIM element: count_measure
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'taper thread count' } representation_item => measure_representation_item <= measure_with_unit measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
AO ARM

5.1.10.26 THREAD_MILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'thread mill' }
5.1.10.26.1 thread_form_type
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread form type' } representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.10.26.2 thread_size
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread size' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.26.3 thread_pitch
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread pitch' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.10.27 TWIST_DRILL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { (action_resource.description = 'twist drill') (action_resource.description = 'tapered drill') }
AO ARM

5.1.10.28 USER_DEFINED_MILLING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'user defined milling tool' }
5.1.10.28.1 corner_radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'corner radius' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.28.2 corner_radius_center_horizontal
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'corner radius center horizontal' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.28.3 corner_radius_center_vertical
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'corner radius center vertical' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.10.28.4 description
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'tool description' } representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.10.28.5 taper_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'taper angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.10.28.6 tip_outer_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'tip outer angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit

5.1.11 Mapping specification for process data for turning UoF

AO ARM

5.1.11.1 BIDIRECTIONAL_TURNING

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'bidirectional' }
5.1.11.1.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.1.2 stepover_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.1.3 stepover_feed
Reference path: machining_feed_speed_representation
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'feed speed') (representation.name = 'feed per revolution') } representation => machining_feed_speed_representation
AO ARM

5.1.11.2 CONST_CUTTING_SPEED

AIM element: machining_spindle_speed_representation
Source: 10303-238
Reference path: machining_spindle_speed_representation <= representation {representation.name = 'cutting speed' }
5.1.11.2.1 speed
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_spindle_speed_representation <= representation representation.items[i] -> { representation_item.name = 'surface speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
5.1.11.2.2 max_speed
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_spindle_speed_representation <= representation representation.items[i] -> { representation_item.name = 'maximum rotational speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
AO ARM

5.1.11.3 CONST_SPINDLE_SPEED

AIM element: machining_spindle_speed_representation
Source: 10303-238
Reference path: machining_spindle_speed_representation <= representation {representation.name = 'spindle speed' }
5.1.11.3.1 rot_speed
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_spindle_speed_representation <= representation representation.items[i] -> { representation_item.name = 'rotational speed' } representation_item => measure_representation_item <= measure_with_unit { measure_with_unit.value_component -> measure_value measure_value = numeric_measure numeric_measure }
AO ARM

5.1.11.4 CONTOUR_TURNING

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'contour' }
5.1.11.4.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.4.2 back_path_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'back path direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.4.3 lift_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.4.4 stepover_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.4.5 lift_height
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift height' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.11.4.6 lift_feed
Reference path: machining_feed_speed_representation
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'feed speed') (representation.name = 'feed per revolution') } representation => machining_feed_speed_representation
5.1.11.4.7 stepover_feed
Reference path: machining_feed_speed_representation
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'feed speed') (representation.name = 'feed per revolution') } representation => machining_feed_speed_representation
5.1.11.4.8 variable_stepover_feed
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'variable stepover feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
AO ARM

5.1.11.5 CONTOURING

AIM element: contouring_turning_operation
Source: 10303-238
Reference path: contouring_turning_operation <= turning_type_operation <= machining_operation <= action_method
5.1.11.5.1 allowance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: contouring_turning_operation <= turning_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.6 CONTOURING_FINISH

AIM element: contouring_turning_operation
Source: 10303-238
Reference path: contouring_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.11.7 CONTOURING_ROUGH

AIM element: contouring_turning_operation
Source: 10303-238
Reference path: contouring_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.11.8 CUTTING_IN

AIM element: grooving_turning_operation
Source: 10303-238
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'cutting in' }
AO ARM

5.1.11.9 EXPLICIT_TURNING_STRATEGY

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'explicit' }
AO ARM

5.1.11.10 FACING

AIM element: facing_turning_operation
Source: 10303-238
Reference path: facing_turning_operation <= turning_type_operation <= machining_operation <= action_method
5.1.11.10.1 allowance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: facing_turning_operation <= turning_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.11 FACING_FINISH

AIM element: facing_turning_operation
Source: 10303-238
Reference path: facing_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.11.12 FACING_ROUGH

AIM element: facing_turning_operation
Source: 10303-238
Reference path: facing_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.11.13 GROOVING

AIM element: grooving_turning_operation
Source: 10303-238
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method
5.1.11.13.1 dwell
Reference path: machining_dwell_time_representation
Source: 10303-238
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'dwell' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'dwell time') (representation.name = 'dwell revolution') } representation => machining_dwell_time_representation
5.1.11.13.2 allowance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.14 GROOVING_FINISH

AIM element: grooving_turning_operation
Source: 10303-238
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.11.15 GROOVING_ROUGH

AIM element: grooving_turning_operation
Source: 10303-238
Reference path: grooving_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.11.16 GROOVING_STRATEGY

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { ( action_method.description = 'grooving') (action_method.description = 'multistep grooving') }
5.1.11.16.1 grooving_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'grooving direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.16.2 travel_distance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'travel distance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.17 KNURLING

AIM element: knurling_turning_operation
Source: 10303-238
Reference path: knurling_turning_operation <= turning_type_operation <= machining_operation <= action_method
AO ARM

5.1.11.18 MULTISTEP_GROOVING_STRATEGY

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'multistep grooving' }
5.1.11.18.1 retract_distance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'retract distance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.19 THREAD_STRATEGY

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'thread' }
5.1.11.19.1 cut_in_amount_function
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cut in amount' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'constant depth' ) (descriptive_representation_item.description = 'variable depth' ) (descriptive_representation_item.description = 'constant removal amount' ) }
5.1.11.19.2 threading_direction
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'threading direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) (descriptive_representation_item.description = 'center' ) (descriptive_representation_item.description = 'left zigzag' ) (descriptive_representation_item.description = 'right zigzag' ) }
5.1.11.19.3 path_return_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'path return angle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.11.19.4 lift_height
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift height' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.20 THREADING

AIM element: threading_turning_operation
Source: 10303-238
Reference path: threading_turning_operation <= turning_type_operation <= machining_operation <= action_method
5.1.11.20.1 allowance
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: threading_turning_operation <= turning_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'allowance' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.11.21 THREADING_FINISH

AIM element: threading_turning_operation
Source: 10303-238
Reference path: threading_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'finishing' }
AO ARM

5.1.11.22 THREADING_ROUGH

AIM element: threading_turning_operation
Source: 10303-238
Reference path: threading_turning_operation <= turning_type_operation <= machining_operation <= action_method { action_method.description = 'roughing' }
AO ARM

5.1.11.23 TURNING_MACHINE_FUNCTIONS

AIM element: machining_functions
Source: 10303-238
Reference path: machining_functions <= action_method { action_method.description = 'turning' }
5.1.11.23.1 coolant

#1: if value is true

#2: if value is false

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'coolant' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'coolant on' ) #2: (descriptive_representation_item.description = 'coolant off' ) }
5.1.11.23.2 coolant_type
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'coolant type' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'flood' ) (descriptive_representation_item.description = 'mist' ) (descriptive_representation_item.description = 'through tool' ) }
5.1.11.23.3 coolant_pressure
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'coolant pressure' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit
5.1.11.23.4 axis_clamping
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'axis clamping' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description
5.1.11.23.5 chip_removal

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'chip removal' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description {#1: (descriptive_representation_item.description = 'chip removal on' ) #2: (descriptive_representation_item.description = 'chip removal off' ) }
5.1.11.23.6 oriented_spindle_stop
AIM element: direction
Source: 10303-42
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'oriented spindle stop' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.23.7 turning_machine_functions to process_model (as its_process_model)

See NOTE 9

AIM element: PATH
Reference path: machining_functions <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => serial_action_method => sequential_method => machining_process_model_relationship } action_method_relationship.related_method -> action_method => machining_process_model
5.1.11.23.8 tail_stock

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'tail stock' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'tail stock used' ) #2: (descriptive_representation_item.description = 'tail stock not used' ) }
5.1.11.23.9 steady_rest

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'steady rest' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'steady rest used' ) #2: (descriptive_representation_item.description = 'steady rest not used' ) }
5.1.11.23.10 follow_rest

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_functions <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'follow rest' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'follow rest used' ) #2: (descriptive_representation_item.description = 'follow rest not used' ) }
AO ARM

5.1.11.24 TURNING_MACHINING_OPERATION

AIM element: turning_type_operation
Source: 10303-238
Reference path: turning_type_operation <= machining_operation <= action_method
5.1.11.24.1 turning_type_operation to approach_retract_strategy (as approach)
AIM element: PATH
Reference path: turning_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'approach' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
5.1.11.24.2 turning_type_operation to approach_retract_strategy (as retract)
AIM element: PATH
Reference path: turning_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'retract' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
5.1.11.24.3 turning_type_operation to turning_machining_strategy (as its_machining_strategy)
AIM element: PATH
Reference path: turning_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'machining' } action_method_relationship.related_method -> action_method => machining_strategy => turning_type_strategy
AO ARM

5.1.11.25 TURNING_MACHINING_STRATEGY

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method
5.1.11.25.1 overcut_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'overcut length' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.11.25.2 allow_multiple_passes

#1: if value is true (mapping may be omitted if value is true)

#2: if value is false

AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'multiple passes' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'multiple passes allowed' ) #2: (descriptive_representation_item.description = 'multiple passes not allowed' ) }
5.1.11.25.3 cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'cutting depth' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => compound_representation_item compound_representation_item.item_element -> compound_item_definition compound_item_definition = list_representation_item list_representation_item[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.11.25.4 variable_feedrate
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'variable feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'relative speed' } representation.items[i] -> { representation_item.name = 'relative speed' } representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
AO ARM

5.1.11.26 TURNING_TECHNOLOGY

AIM element: machining_technology
Source: 10303-238
Reference path: machining_technology <= action_method { action_method.description = 'turning' }
5.1.11.26.1 spindle_speed
AIM element: PATH
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'spindle' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'spindle speed') (representation.name = 'cutting speed') } representation => machining_spindle_speed_representation
5.1.11.26.2 feed_per_revolution
AIM element: measure_with_unit
Source: 10303-41
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { representation => machining_feed_speed_representation } representation { representation.name = 'feed per revolution' } representation.items[i] -> { representation_item.name = 'feed per revolution' } representation_item => measure_representation_item <= measure_with_unit
5.1.11.26.3 sync_spindle_and_z_feed

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'synchronize spindle with z feed' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'synchronized' ) #2: (descriptive_representation_item.description = 'not synchronized' ) }
5.1.11.26.4 inhibit_feedrate_override

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'inhibit feedrate override' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'override not allowed' ) #2: (descriptive_representation_item.description = 'override allowed' ) }
5.1.11.26.5 inhibit_spindle_override

#1: if value is true

#2: if value is false (mapping may be omitted if value is false)

Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_technology <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'inhibit spindle override' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => descriptive_representation_item descriptive_representation_item.description { #1: (descriptive_representation_item.description = 'override not allowed' ) #2: (descriptive_representation_item.description = 'override allowed' ) }
5.1.11.26.6 turning_technology to adaptive_control (as its_adaptive_control)
AIM element: PATH
Reference path: machining_technology <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_adaptive_control_relationship } action_method_relationship.related_method -> action_method => machining_technology
AO ARM

5.1.11.27 TURNING_WORKINGSTEP

AIM element: machining_workingstep
Source: 10303-238
Reference path: machining_workingstep <= machining_process_executable <= action_method { action_method.description = 'turning' }
5.1.11.27.1 turning_workingstep to manufacturing_feature (as its_features)
AIM element: PATH
Reference path: machining_workingstep <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_feature_relationship => machining_feature_sequence_relationship } action_method_relationship.related_method -> { action_method => machining_process_executable => machining_feature_process } action_method <- action.chosen_method { action.name = 'machining' } action => property_process <- process_property_association.process process_property_association process_property_association.property_or_shape -> property_or_shape_select property_or_shape_select = shape_definition shape_definition shape_definition = shape_aspect shape_aspect See NOTE 6
AO ARM

5.1.11.28 UNIDIRECTIONAL_TURNING

AIM element: turning_type_strategy
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method { action_method.description = 'unidirectional' }
5.1.11.28.1 feed_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'feed direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.28.2 back_path_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'back path direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.28.3 lift_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.28.4 stepover_direction
AIM element: direction
Source: 10303-42
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
5.1.11.28.5 lift_height
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift height' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.11.28.6 lift_feed
Reference path: machining_feed_speed_representation
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'lift feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'feed speed') (representation.name = 'feed per revolution') } representation => machining_feed_speed_representation
5.1.11.28.7 stepover_feed
Reference path: machining_feed_speed_representation
Source: 10303-238
Reference path: turning_type_strategy <= machining_strategy <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'stepover feedrate' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> { (representation.name = 'feed speed') (representation.name = 'feed per revolution') } representation => machining_feed_speed_representation

5.1.12 Mapping specification for cutting tools for turning UoF

AO ARM

5.1.12.1 CHAMFERED_CORNER

AIM element: machining_cutting_corner_representation
Source: 10303-238
Reference path: machining_cutting_corner_representation <= representation { representation.name = 'chamfered corner' }
5.1.12.1.1 corner_chamfer_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_corner_representation <= representation representation.items[i] -> { representation_item.name = 'chamfer angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.12.1.2 corner_chamfer_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_corner_representation <= representation representation.items[i] -> { representation_item.name = 'chamfer length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.1.3 corner_chamfer_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_corner_representation <= representation representation.items[i] -> { representation_item.name = 'chamfer width' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.12.2 CORNER_TRANSITION

AIM element: machining_cutting_corner_representation
Source: 10303-238
Reference path: machining_cutting_corner_representation <= representation
5.1.12.2.1 corner_identity
AIM element: count_measure
Source: 10303-41
Reference path: machining_cutting_corner_representation <= representation representation.items[i] -> { representation_item.name = 'corner identity' } representation_item => measure_representation_item <= measure_with_unit => measure_with_unit.value_component -> measure_value measure_value = count_measure count_measure
5.1.12.2.2 corner_transition to chamfered_corner, rounded_corner, or profiled_corner (as transition)
AIM element: IDENTICAL MAPPING
AO ARM

5.1.12.3 CUTTING_EDGE_PROPERTIES

AIM element: machining_cutting_component
Source: 10303-238
Reference path: machining_cutting_component <= [action_resource] [characterized_object] { action_resource.kind -> action_resource_type action_resource_type.name = 'turning cutting edge' }
5.1.12.3.1 cutting_edge_properties to material (as its_material)
AIM element: PATH
Reference path: machining_cutting_component <= characterized_object characterized_definition = characterized_object characterized_definition <- material_designation.definitions[i] material_designation
5.1.12.3.2 expected_tool_life
AIM element: time_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'expected life' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => time_measure_with_unit
5.1.12.3.3 cutting_edge_properties to milling_technology (as its_technology)
AIM element: PATH
Reference path: machining_cutting_component <= action_resource <- requirement_for_action_resource.resources[i] requirement_for_action_resource <= action_resource_requirement { action_resource_requirement.kind -> resource_requirement_type resource_requirement_type.name = 'cutting component' } action_resource_requirement.operations[i] -> characterized_action_definition characterized_action_definition = action_method action_method => machining_technology
5.1.12.3.4 cutting_edge_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'cutting edge length' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.3.5 tool_cutting_edge_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'cutting edge angle' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.12.3.6 cutting_edge_properties to corner_transition (as corner_transitions)
AIM element: PATH
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'corner transitions' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation => machining_cutting_corner_representation See NOTE 10
5.1.12.3.7 tool_included_angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool included angle' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.12.3.8 maximum_side_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'maximum side cutting depth' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.3.9 maximum_end_cutting_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_component <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'maximum end cutting depth' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.12.4 GENERAL_TURNING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'general turning tool' }
AO ARM

5.1.12.5 GROOVING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'grooving tool' }
5.1.12.5.1 cutting_width
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutting width' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.5.2 maximum_grooving_depth
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'maximum grooving depth' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.5.3 corner_radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'corner radius' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.5.4 maximum_axial_grooving_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> {representation_item.name = 'maximum axial grooving diameter'} representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.5.5 minimum_axial_grooving_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> {representation_item.name = 'minimum axial grooving diameter'} representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.12.6 KNURLING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'knurling tool' }
5.1.12.6.1 knurl_pattern
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'knurl pattern' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'straight' ) (descriptive_representation_item.description = 'diagonal' ) (descriptive_representation_item.description = 'diamond' ) }
5.1.12.6.2 cutting_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutting length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.6.3 angle
AIM element: plane_angle_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutting angle' } representation_item => measure_representation_item <= measure_with_unit => plane_angle_measure_with_unit
5.1.12.6.4 pitch
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'cutting pitch' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.12.7 PROFILED_CORNER

AIM element: machining_cutting_corner_representation
Source: 10303-238
Reference path: machining_cutting_corner_representation <= representation { representation.name = 'profiled corner' }
5.1.12.7.1 profiled_corner to open_profile (as transition_profile)
AIM element: PATH
Reference path: machining_cutting_corner_representation <= representation <- property_definition_representation.used_representation property_definition_representation property_definition_representation.definition -> represented_definition represented_definition = shape_aspect shape_aspect (linear_profile) (open_path_profile) (partial_circular_profile) (rounded_u_profile) (square_u_profile) (tee_profile) (vee_profile)
AO ARM

5.1.12.8 ROUNDED_CORNER

AIM element: machining_cutting_corner_representation
Source: 10303-238
Reference path: machining_cutting_corner_representation <= representation { representation.name = 'rounded corner' }
5.1.12.8.1 corner_radius
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_cutting_corner_representation <= representation representation.items[i] -> { representation_item.name = 'radius' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
AO ARM

5.1.12.9 TURNING_MACHINE_CUTTING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.kind -> action_resource_type action_resource_type.name = 'turning cutting tool' }
5.1.12.9.1 functional_length
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'functional length' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.9.2 f_dimension
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'f dimension' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.9.3 minimum_cutting_diameter
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'minimum cutting diameter' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.9.4 a_dimension_on_f
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'a dimension on f' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.9.5 a_dimension_on_lf
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'a dimension on lf' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.9.6 turning_machine_cutting_tool to cutting_edge_properties (as cutting_edge)
AIM element: PATH
Reference path: machining_tool <= action_resource <- action_resource_relationship.relating_resource action_resource_relationship action_resource_relationship.related_resource -> action_resource => machining_cutting_component
5.1.12.9.7 hand_of_tool
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'hand of cut' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) (descriptive_representation_item.description = 'neutral' ) }
AO ARM

5.1.12.10 TURNING_THREADING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'turning threading tool' }
5.1.12.10.1 threading_pitch
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread pitch' } representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.12.10.2 thread_hand
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread hand' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'left' ) (descriptive_representation_item.description = 'right' ) }
5.1.12.10.3 its_thread_type
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread type' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'internal' ) (descriptive_representation_item.description = 'external' ) }
5.1.12.10.4 thread_profile
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread profile' } representation_item => descriptive_representation_item descriptive_representation_item.description { (descriptive_representation_item.description = 'full' ) (descriptive_representation_item.description = 'partial' ) }
5.1.12.10.5 thread_form_type
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'thread form type' } representation_item => descriptive_representation_item descriptive_representation_item.description
AO ARM

5.1.12.11 USER_DEFINED_TURNING_TOOL

AIM element: machining_tool
Source: 10303-238
Reference path: machining_tool <= action_resource { action_resource.description = 'user defined turning tool' }
5.1.12.11.1 identifier
Reference path: descriptive_representation_item.description
Source: 10303-45
Reference path: machining_tool <= action_resource characterized_resource_definition = action_resource characterized_resource_definition <- resource_property.resource { resource_property.name = 'tool body' } resource_property <- resource_property_representation.property resource_property_representation resource_property_representation.representation -> { representation => machining_tool_body_representation } representation representation.items[i] -> { representation_item.name = 'tool identifier' } representation_item => descriptive_representation_item descriptive_representation_item.description

5.1.13 Mapping specification for process data for additive manufacturing UoF

AO ARM

5.1.13.1 AM_COMPOUND_FEATURE

AIM element: [ additive_manufacturing_feature ] [ compound_feature ]
Source: 10303-238
Reference path: [ additive_manufacturing_feature <= ] [ compound_feature <= ] feature_definition <= characterized_object
5.1.13.1.1 its_am_features
AIM element: PATH
Reference path: [ additive_manufacturing_feature <= ] [ compound_feature <= ] feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect => composite_shape_aspect} shape_aspect <- shape_aspect_relationship.relating_shape_aspect {shape_aspect_relationship=> feature_component_relationship} shape_aspect_relationship.related_shape_aspect-> shape_aspect => instanced_feature <= feature_definition => additive_manufacturing_feature
AO ARM

5.1.13.2 AM_CONSTRUCTION

AIM element: additive_manufacturing_construction
Source: 10303-238
Reference path: additive_manufacturing_construction <= shape_aspect { shape_aspect.of_shape-> product_definition_shape <= property_definition property_definition.definition-> characterized_definition characterized_definition = characterized_object characterized_object => feature_component_definition }
AO ARM

5.1.13.3 AM_FEATURE

AIM element: additive_manufacturing_feature
Source: 10303-238
Reference path: additive_manufacturing_feature <= {feature_definition => instanced_feature} feature_definition <= characterized_object
5.1.13.3.1 its_material
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition => characterized_object characterized_definition = characterized_object characterized_definition <- material_designation.definitions[i] material_designation
5.1.13.3.2 primary_colour
AIM element: colour
Source: 10303-46
Reference path: additive_manufacturing_feature <= feature_definition => characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition {property_definition.name = 'primary colour'} represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> representation_item => styled_item styled_item.styles[i] -> presentation_style_assignment presentation_style_assignment.styles[i] -> presentation_style_select presentation_style_select = fill_area_style fill_area_style fill_area_style.fill_styles[i] -> fill_style_select fill_style_select = fill_area_style_colour fill_area_style_colour fill_area_style_colour.fill_colour -> colour
AO ARM

5.1.13.4 AM_GRADIENT_FEATURE

AIM element: additive_manufacturing_feature
Source: 10303-238
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_object.description = 'gradient'
5.1.13.4.1 secondary_feature
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect => composite_shape_aspect} shape_aspect <- shape_aspect_relationship.relating_shape_aspect {shape_aspect_relationship=> feature_component_relationship} shape_aspect_relationship.related_shape_aspect-> shape_aspect => instanced_feature <= feature_definition => additive_manufacturing_feature
5.1.13.4.2 its_construction
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect.description = 'construction occurrence'} shape_aspect <- shape_aspect_relationship.related_shape_aspect {shape_aspect_relationship => feature_component_relationship} {shape_aspect_relationship.description = 'construction usage'} shape_aspect_relationship shape_aspect_relationship.relating_shape_aspect -> shape_aspect => additive_manufacturing_construction
AO ARM

5.1.13.5 AM_HETEROGENUOUS_ATOM

AIM element: additive_manufacturing_atom
Source: 10303-238
Reference path: additive_manufacturing_atom <= shape_aspect { shape_aspect.of_shape-> product_definition_shape <= property_definition property_definition.definition-> characterized_definition characterized_definition = characterized_object characterized_object => feature_component_definition }
5.1.13.5.1 local_coord_axes
AIM element: axis2_placement_3d
Source: 10303-42
Reference path: additive_manufacturing_atom <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'origin'} representation_item => geometric_representation_item => placement => axis2_placement_3d
5.1.13.5.2 its_material
AIM element: PATH
Reference path: additive_manufacturing_atom <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- material_designation.definitions[i] material_designation
5.1.13.5.3 its_colour
AIM element: colour
Source: 10303-46
Reference path: additive_manufacturing_atom <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'colour'} representation_item => styled_item styled_item.styles[i] -> presentation_style_assignment presentation_style_assignment.styles[i] -> presentation_style_select presentation_style_select = fill_area_style fill_area_style fill_area_style.fill_styles[i] -> fill_style_select fill_style_select = fill_area_style_colour fill_area_style_colour fill_area_style_colour.fill_colour -> colour
5.1.13.5.4 its_construction
AIM element: PATH
Reference path: additive_manufacturing_atom <= shape_aspect <- shape_aspect_relationship.related_shape_aspect {shape_aspect_relationship => feature_component_relationship} {shape_aspect_relationship.description = 'construction usage'} shape_aspect_relationship shape_aspect_relationship.relating_shape_aspect -> shape_aspect => additive_manufacturing_construction
5.1.13.5.5 governing_function
AIM element: function_application
Source: 13584-20
Reference path: additive_manufacturing_construction <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> representation_item => {representation_item.name = 'governing function'} expression_representation_item <= generic_expression => multiple_arity_generic_expression => function_application
AO ARM

5.1.13.6 AM_HETEROGENUOUS_FEATURE

AIM element: additive_manufacturing_feature
Source: 10303-238
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_object.description = 'heterogenuous'
5.1.13.6.1 items
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect.description = 'atom occurrence'} shape_aspect <- shape_aspect_relationship.related_shape_aspect {shape_aspect_relationship => feature_component_relationship} {shape_aspect_relationship.description = 'atom usage'} shape_aspect_relationship shape_aspect_relationship.relating_shape_aspect -> shape_aspect => additive_manufacturing_atom
AO ARM

5.1.13.7 AM_INFILL

AIM element: additive_manufacturing_construction
Source: 10303-238
Reference path: additive_manufacturing_construction <= shape_aspect { shape_aspect.description = 'infill' }
5.1.13.7.1 infill_percentage
AIM element: ratio_measure_with_unit
Source: 10303-41
Reference path: additive_manufacturing_construction <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'infill ratio'} representation_item => measure_representation_item <= measure_with_unit => ratio_measure_with_unit
5.1.13.7.2 its_direction
AIM element: direction
Source: 10303-42
Reference path: additive_manufacturing_construction <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'direction'} representation_item => geometric_representation_item => direction
5.1.13.7.3 its_pattern
AIM element: descriptive_representation_item.description
Source: 10303-45
Reference path: additive_manufacturing_construction <= shape_aspect shape_definition = shape_aspect shape_definition characterized_definition = shape_definition characterized_definition <- property_definition.definition property_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i] -> {representation_item.name = 'pattern'} representation_item => descriptive_representation_item descriptive_representation_item.description
AO ARM

5.1.13.8 AM_MACHINE_FUNCTIONS

AIM element: machining_functions
Source: 10303-238
Reference path: machining_functions <= action_method { action_method.description = 'additive' }
AO ARM

5.1.13.9 AM_ONED_OPERATION

AIM element: additive_type_operation
Source: 10303-238
Reference path: additive_type_operation <= machining_operation <= action_method { action_method.description = 'oned' }
5.1.13.9.1 am_oned_operation to approach_retract_strategy (as approach)
AIM element: PATH
Reference path: additive_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'approach' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
5.1.13.9.2 am_oned_operation to approach_retract_strategy (as retract)
AIM element: PATH
Reference path: additive_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_strategy_relationship } { action_method_relationship.name = 'retract' } action_method_relationship.related_method -> action_method => machining_strategy => machining_approach_retract_strategy
AO ARM

5.1.13.10 AM_OPERATION

AIM element: additive_type_operation
Source: 10303-238
Reference path: additive_type_operation <= machining_operation <= action_method
5.1.13.10.1 am_operation to am_machine_functions (as machine_functions)
AIM element: PATH
Reference path: additive_type_operation <= machining_operation <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_functions_relationship } action_method_relationship.related_method -> action_method => machining_functions
AO ARM

5.1.13.11 AM_SIMPLE_FEATURE

AIM element: additive_manufacturing_feature
Source: 10303-238
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_object.description = 'simple'
5.1.13.11.1 skin_thickness
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: additive_manufacturing_feature <= feature_definition => characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition {property_definition.name = 'skin thickness'} represented_definition = property_definition represented_definition <- property_definition_representation.definition property_definition_representation property_definition_representation.used_representation -> representation representation.items[i]-> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.13.11.2 skin_construction
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect.description = 'skin construction occurrence'} shape_aspect <- shape_aspect_relationship.related_shape_aspect {shape_aspect_relationship => feature_component_relationship} {shape_aspect_relationship.description = 'skin construction usage'} shape_aspect_relationship shape_aspect_relationship.relating_shape_aspect -> shape_aspect => additive_manufacturing_construction
5.1.13.11.3 core_construction
AIM element: PATH
Reference path: additive_manufacturing_feature <= feature_definition <= characterized_object characterized_definition = characterized_object characterized_definition <- property_definition.definition property_definition => product_definition_shape <- shape_aspect.of_shape {shape_aspect.description = 'core construction occurrence'} shape_aspect <- shape_aspect_relationship.related_shape_aspect {shape_aspect_relationship => feature_component_relationship} {shape_aspect_relationship.description = 'core construction usage'} shape_aspect_relationship shape_aspect_relationship.relating_shape_aspect -> shape_aspect => additive_manufacturing_construction
AO ARM

5.1.13.12 AM_SOLID

AIM element: additive_manufacturing_construction
Source: 10303-238
Reference path: additive_manufacturing_construction <= shape_aspect { shape_aspect.description = 'solid' }
AO ARM

5.1.13.13 AM_TWOD_OPERATION

AIM element: additive_type_operation
Source: 10303-238
Reference path: additive_type_operation <= machining_operation <= action_method { action_method.description = 'twod' }
5.1.13.13.1 layer_thickness
AIM element: length_measure_with_unit
Source: 10303-41
Reference path: additive_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'layer thickness' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => measure_representation_item <= measure_with_unit => length_measure_with_unit
5.1.13.13.2 am_twod_operation to elementary_surface (as base_layer)
AIM element: elementary_surface
Source: 10303-42
Reference path: additive_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'base_layer' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => surface => elementary_surface
5.1.13.13.3 normal_direction
AIM element: direction
Source: 10303-42
Reference path: additive_type_operation <= machining_operation <= action_method characterized_action_definition = action_method characterized_action_definition <- action_property.definition { action_property.name = 'normal direction' } action_property <- action_property_representation.property action_property_representation action_property_representation.representation -> representation representation.items[i] -> representation_item => geometric_representation_item => direction
AO ARM

5.1.13.14 AM_WORKINGSTEP

AIM element: machining_workingstep
Source: 10303-238
Reference path: machining_workingstep <= machining_process_executable <= action_method { action_method.description = 'additive' }
5.1.13.14.1 am_workingstep to manufacturing_feature (as its_feature)
AIM element: PATH
Rules: feature_optional_machining_property_process
Reference path: machining_workingstep <= machining_process_executable <= action_method <- action_method_relationship.relating_method action_method_relationship { action_method_relationship => machining_feature_relationship } action_method_relationship.related_method -> { action_method => machining_process_executable => machining_feature_process } action_method <- action.chosen_method { action.name = 'machining' } action => property_process <- process_property_association.process process_property_association process_property_association.property_or_shape -> property_or_shape_select property_or_shape_select = shape_definition shape_definition shape_definition = shape_aspect shape_aspect
5.1.13.14.2 am_workingstep to product_view_definition (as its_support_geometry)
AIM element: PATH
Reference path: machining_process_executable <= action_method <- action.chosen_method { action.name = 'support geometry' } action => product_definition_process <- process_product_association.process process_product_association process_product_association.defined_product -> characterized_product_definition characterized_product_definition = product_definition product_definition
AO ARM

5.1.13.15 AM_WORKPIECE

AIM element: product_definition
Source: 10303-41

5.1.14 Mapping specification for geometric dimensioning and tolerancing UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1050, ISO 10303-1051, and ISO 10303-1052.

5.1.15 Mapping specification for library reference UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1129, ISO 10303-1291, ISO 10303-1331, and ISO 10303-1779.

5.1.16 Mapping specification for management UoF

The mapping specification for the application objects in this UoF shall be as defined by ISO 10303-1012, ISO 10303-1013, ISO 10303-1014, ISO 10303-1015, and the specification below.

AO ARM

5.1.16.1 LAST_MODIFIED_TIMESTAMP

AIM element: applied_date_and_time_assignment
Source: 10303-1014
Reference path: applied_date_and_time_assignment <= date_and_time_assignment.role -> date_time_role { date_time_role.name = 'last modified' }

The following notes are referenced in the preceding tables:

1) For bounding geometry that is either a block or cylinder, ISO 14649-10 references block and right_circular_cylinder. For harmonization with AP 224 and AP 214 these two cases have been mapped to the shape_representation subtypes block_shape_representation and cylindrical_shape_representation instead. Aside from these two cases, the mapping for its_bounding_geometry is simply the its_geometry parameter of the its_rawpiece.

2) The product_definition_formation_with_specified_source subtype of product_definition_formation is present in the integrated representation to simplify the use of workpiece descriptions that have originated from an AP 203 process. This use of this subtype is not recommended in the general case.

3) Assembly information is likely to originate in upstream applications using AP 203, AP 214, or AP 242, which permit assembly components to be placed using mapped_item or item_defined_transformation. The originating_orientation and resulting_orientation mappings allow either technique to be used for compatibility with existing APs and data sets. When using item_defined_transformation, some APs have not clearly stated which attribute refers to the component and which refers to the enclosing assembly, which has led to confusion. Here transform_item_1 refers to the original workpiece placement and transform_item_2 refers to the placement within the assembly. Additional discussion on the handling of shape in assemblies can be found in ISO 10303-214.

4) Although the initial_value for Nc_variable is defined as a Number by ISO 14649, the mapping has been constructed as if it were actually of type Nc_constant, so as to avoid introducing a different way of handling essentially the same concept.

5) The item_defined_transformation locates the workpiece within a setup in a manner similar to an assembly. Here transform_item_1 refers to the original workpiece placement and transform_item_2 refers to the placement within the setup. Previous APs have not clearly stated which side of the item_defined_transform refers to the enclosing assembly, which has led to confusion.

6) This ARM attribute is defined as a list. The mapping path shown in the table shows how to relate the elements of the list. Ordering is handled by the sequence_position attribute on the relationship, which is inherited from the sequential_method supertype. This attribute holds a number indicating the position within the list. For exemple, the fifth item in the list would have sequence_position=5.

7) The Toolpath_list application object is not mapped. Instead, the mapping goes directly to the toolpath objects. Ordering is handled by the sequence_position attribute on the relationship as described in NOTE 6

8) The ARM models Axis_trajectory as two parallel lists, where axis_list[1] contains the axis name corresponding to the curve in command[1]. Then, axis_list[2] contains the axis name for command[2] and so on. In the AIM, parallel lists are not used. Instead, the representation.items set contains one bounded curve for each axis to be moved by the trajectory and the axis name is kept in the representation_item.name attribute of each curve.

9) The process_model_list application object is not mapped. Instead, the mapping goes directly to the process model objects. Ordering is handled by the sequence_position attribute on the relationship as described in NOTE 6

10) The ARM attribute corner_transitions is defined as a list, but list ordering is not encoded by the mapping. If ordering is desired, the corner transitions shall be ordered by corner_identity.

5.2 AIM EXPRESS short listing

5.2.1 General

This clause specifies the EXPRESS schema that uses elements from the the common resources and contains the types, entity specializations, rules, and functions that are specific to this document. This clause also specifies modifications to the text for constructs that are imported from the common resources. The definitions and EXPRESS provided in the integrated resources for constructs used in the AIM can include select list items and subtypes that are not imported into the AIM. Requirements stated in the integrated resources that refer to select list items and subtypes apply exclusively to those items that are imported into the AIM.

*)
SCHEMA model_based_integrated_manufacturing_schema;

-- Core workpiece and GDT definition for interoperating with AP242
USE FROM Model_based_3d_geometrical_dimensioning_and_tolerancing_representation_mim;   -- 10303-1816
   -- Activity_mim
   -- Activity_method_mim
   -- Activity_method_assignment_mim
   -- Advanced_boundary_representation_mim
   -- Alias_identification_mim
   -- Alternative_solution_mim
   -- Approval_mim
   -- Assembly_structure_mim
   -- Attribute_classification_mim
   -- Basic_curve_mim
   -- Basic_geometric_topology_mim
   -- Basic_geometry_mim
   -- B_spline_geometry_mim
   -- Certification_mim
   -- Characterizable_object_mim
   -- Classification_assignment_mim
   -- Classification_with_attributes_mim
   -- Class_mim
   -- Condition_mim
   -- Configuration_effectivity_mim
   -- Configuration_item_mim
   -- Construction_geometry_mim
   -- Contextual_shape_positioning_mim
   -- Contract_mim
   -- Date_time_mim
   -- Date_time_assignment_mim
   -- Derived_shape_element_mim
   -- Design_material_aspects_mim
   -- Design_product_data_management_mim
   -- Dimension_tolerance_mim
   -- Document_and_version_identification_mim
   -- Document_assignment_mim
   -- Document_definition_mim
   -- Document_management_mim
   -- Document_properties_mim
   -- Document_structure_mim
   -- Effectivity_application_mim
   -- Effectivity_mim
   -- Elemental_geometric_shape_mim
   -- Elemental_topology_mim
   -- Event_mim
   -- Event_assignment_mim
   -- Extended_date_mim
   -- Extended_measure_representation_mim
   -- External_class_mim
   -- External_item_identification_assignment_mim
   -- External_model_mim
   -- External_source_mim
   -- Feature_and_connection_zone_mim
   -- File_identification_mim
   -- Foundation_representation_mim
   -- Functional_breakdown_mim
   -- Generic_material_aspects_mim
   -- Geometric_model_relationship_mim
   -- Geometric_tolerance_mim
   -- Group_mim
   -- Identification_assignment_mim
   -- Incomplete_data_reference_mechanism_mim
   -- Independent_property_mim
   -- Independent_property_representation_mim
   -- Information_rights_mim
   -- Item_definition_structure_mim
   -- Management_resource_information_mim
   -- Manifold_subsurface_mim
   -- Manifold_surface_mim
   -- Manufacturing_configuration_effectivity_mim
   -- Maths_value_mim
   -- Measure_representation_mim
   -- Multi_linguism_mim
   -- Name_assignment_mim
   -- Parametric_representation_mim
   -- Part_and_version_identification_mim
   -- Part_collection_mim
   -- Part_definition_relationship_mim
   -- Part_shape_mim
   -- Part_view_definition_mim
   -- Person_organization_mim
   -- Person_organization_assignment_mim
   -- Physical_breakdown_mim
   -- Plib_class_reference_mim
   -- Pre_defined_product_data_management_specializations_mim
   -- Process_property_assignment_mim
   -- Product_and_manufacturing_information_with_nominal_3d_models_mim
   -- Product_as_individual_mim
   -- Product_breakdown_mim
   -- Product_class_mim
   -- Product_concept_identification_mim
   -- Product_data_management_mim
   -- Product_identification_mim
   -- Product_occurrence_mim
   -- Product_placement_mim
   -- Product_replacement_mim
   -- Product_structure_mim
   -- Product_version_mim
   -- Product_version_relationship_mim
   -- Product_view_definition_mim
   -- Product_view_definition_properties_mim
   -- Product_view_definition_reference_mim
   -- Product_view_definition_relationship_mim
   -- Project_mim
   -- Property_assignment_mim
   -- Property_as_definition_mim
   -- Qualified_measure_mim
   -- Requirement_assignment_mim
   -- Requirement_identification_and_version_mim
   -- Requirement_view_definition_mim
   -- Requirement_view_definition_relationship_mim
   -- Security_classification_mim
   -- Shape_composition_mim
   -- Shape_feature_mim
   -- Shape_property_assignment_mim
   -- Single_part_representation_mim
   -- Solid_model_mim
   -- Specification_based_configuration_mim
   -- Specification_control_mim
   -- Specified_product_mim
   -- Support_resource_mim
   -- Surface_conditions_mim
   -- Test_select_product_mim
   -- Time_interval_mim
   -- Time_interval_assignment_mim
   -- Topologically_bounded_surface_mim
   -- Value_with_unit_mim
   -- Value_with_unit_extension_mim
   -- Work_order_mim
   -- Work_request_mim

-- Feature definitions harmonized between STEP AP242/238/224 and ISO 141649
USE FROM Mechanical_design_features_and_requirements_mim;	-- 10303-1846
   -- Appearance_assignment_mim
   -- Associative_draughting_elements_mim
   -- Associative_text_mim
   -- Basic_data_representation_mim
   -- Characteristic_mim
   -- Colour_mim
   -- Curve_appearance_mim
   -- Draughting_element_mim
   -- External_library_mim
   -- External_properties_mim
   -- Machining_features_mim
   -- Mechanical_design_features_and_requirements_mim
   -- Specification_document_mim
   -- Styled_curve_mim
   -- Tagged_text_representation_mim
   -- Text_appearance_mim

-- Presentation and other PMI
USE FROM Default_tolerance_mim;					-- 10303-1052
USE FROM Dimension_and_tolerance_callouts_mim;			-- 10303-1362
USE FROM Mechanical_design_presentation_representation_with_draughting_mim; -- 10303-1315
USE FROM Product_and_manufacturing_annotation_presentation_mim; -- 10303-1812
   -- Camera_view_3d_mim
   -- Characterized_representation_mim
   -- Default_setting_association_mim
   -- Extended_basic_geometry_mim
   -- Fill_area_style_mim
   -- General_surface_appearance_mim
   -- Layer_assignment_mim
   -- Mechanical_design_geometric_presentation_mim
   -- Mechanical_design_shaded_presentation_mim
   -- Presentation_hierarchy_mim
   -- Shape_appearance_layers_mim
   -- Draughting_annotation_mim
   -- Draughting_element_specialisations_mim

USE FROM Design_product_data_management_mim;			-- 10303-1628
USE FROM Geometric_validation_property_representation_mim; 	-- 10303-1039

-- Shape representations types
USE FROM Compound_shape_representation_mim;			-- 10303-1327
USE FROM Curve_swept_solid_mim;					-- 10303-1659
USE FROM Edge_based_wireframe_mim;				-- 10303-1501
USE FROM Elementary_boundary_representation_mim;		-- 10303-1329
USE FROM Faceted_boundary_representation_mim; 			-- 10303-1512
USE FROM Geometrically_bounded_surface_mim;			-- 10303-1507
USE FROM Geometrically_bounded_wireframe_mim;			-- 10303-1510
USE FROM Non_manifold_surface_mim;				-- 10303-1324
USE FROM Primitive_solids_mim;					-- 10303-1791
USE FROM Scan_data_3d_shape_mim; 				-- 10303-1831
USE FROM Shell_based_wireframe_mim;				-- 10303-1502
USE FROM Tessellated_geometry_mim;				-- 10303-1819
USE FROM Topologically_bounded_surface_mim;			-- 10303-1511
USE FROM Vertex_colours_for_tessellated_geometry_mim;		-- 10303-1836

-- Machine tool kinematic representation
USE FROM Kinematic_analysis_control_and_result_mim;		-- 10303-1817

-- Additive manufacturing setup and support
USE FROM Additive_manufacturing_part_and_build_information_mim;	-- 10303-1835
   -- Process_plan_mim
   -- Resource_item_mim
   
USE FROM External_representation_item_mim;			-- 10303-1779
USE FROM Numeric_expression_mim;				-- 10303-1526
USE FROM Product_categorization_mim;				-- 10303-1016


USE FROM action_schema						-- 10303-41
    (action_resource_relationship,
     action_resource_type);

USE FROM method_definition_schema				-- 10303-49
    (action_method_with_associated_documents,
     concurrent_action_method,
     sequential_method,
     serial_action_method);

USE FROM representation_schema					-- 10303-43
    (representation_item_relationship);

USE FROM systems_engineering_representation_schema		-- 10303-61
    (expression_item_representation_item);

USE FROM application_context_schema				-- 10303-41
    (application_protocol_definition);
(*

5.2.2 Fundamental concepts and assumptions

5.2.2.1 Introduction

The ISO 10303 application protocols describe various aspects of a product throughout the lifecycle from design to analysis to manufacturing and beyond. By mapping the information requirements to a common set of integrated resources these application protocols describe shared concepts in a consistent manner.

ISO 10303-238 is designed for representation and exchange of data for manufacture using numerically controlled machines. It begins with the information requirements set forth by the ISO 14649 data model for computerized numerical controllers and describes how to represent those within the larger view of product data defined by the combined set of ISO 10303 application protocols.

Where the ISO 14649 standards describe requirements not already handled by other APs, this integration process is straightforward. However, there are several areas where the ISO 14649 standards redefine concepts that have already been addressed by existing application protocols.

The first is the definition of manufacturing features. Requirements for manufacturing features are documented in ISO 10303-1814. During development of the ISO 14649 standards, efforts were made to align ISO 14649 feature definitions with those already existing in ISO 10303. Progress was made, but a number of differences remain. See Manufacturing feature concepts for discussion of the general feature concepts and Manufacturing feature details by type for an explanation of how differences are handled for specific feature types within this document.

The second is the use of units of measurement. The ISO 14649 standards constrain the usage of units to simplify their model. Within the context of ISO 10303 application protocols, this constraint is inappropriate because of the general unit handling mechanism of the ISO 10303 integrated resources. See Measurement concepts for discussion of measurement concepts in more detail.

In addition, there are several places where the ISO 14649 standards directly reference ISO 10303 integrated resources without giving any context as to how they should be used. To cover these situations, additional definitions have been added to Clause 4 to provide guidance. The ISO 10303 integrated representation also requires additional context descriptions for some types of information See Context concepts for discussion of these context descriptions.

Finally, there are information requirements which were not considered by ISO 14649 for the isolated case of input to a CNC control, but which must be considered by this document for integrating across the lifecycle such as geometric dimensions and tolerances. Additional definitions have been added to Clause 4 to handle these.

5.2.2.2 Manufacturing feature concepts

5.2.2.2.1 Implicit shape by profile and travel path

In the ISO 10303 integrated representation, the shape of many manufacturing feature types can be described as a profile swept along a travel path. This implicit description of feature shape is controlled by characteristic parameters of the Profile and Travel_path subtypes.

EXAMPLE 1 The profile and path representation of several feature types is shown in Figure 5. The shape of the features are controlled by such characteristic parameters as the length of the sweep path, the diameter of the swept circular profile, the length and width of the swept rectangular profile, etc.

Profile and path of features
Key

1 Round Hole, circular profile swept along a linear path

2 Pocket, closed profile swept along a linear path

3 Step, vee profile swept along a linear path

Figure 5 — Profile and path definition of features

Most of the machining_feature types defined by ISO 14649-10 use the same profile and path information requirements as the ISO 10303 integrated representation. However, in some, the authors of ISO 14649-10 chose to merge profile parameters into the feature definition, change orientations, or change conventions for reference points.

Several common cases are discussed below. See Manufacturing feature details by type for a systematic review of the profile and path conventions for feature types in the integrated representation, and an explanation of how to convert to the conventions used by ISO 14649.

EXAMPLE 2 The ISO 14649-10 definition of a round hole has a diameter measure. In the AIM mappings, we tie this to the diameter measure of a circular profile. The profile and path representation is still used at the AIM level for harmonization, even when the concepts are only tangentially represented in the ARM.

5.2.2.2.1.1 Feature placement and depth

Each feature has a placement parameter that describes the location and orientation of the feature in space. The origin of the feature is the reference point for the placement. In the integrated representation, placement is conveyed as an instance of axis2_placement3d. A Cartesian point gives the location in space of the feature origin, and a pair of direction vectors gives the orientation of the Z and X axes of the feature.

To describe feature depth, the ISO 10303 integrated representation uses a parameter of the profile or path. This varies by feature type but is often the length of the sweep path. The origin of the feature is at the start of the sweep path, with the Z axis of the feature aligned along the path. This means that the feature origin is at the bottom of the feature with Z either pointed up and out of the material (pocket, round hole, outside profile), or along the material (slot, step, planar face).

The authors of ISO 14649 chose a different method and instead encode depth as a surface representing the deepest part of the feature. As part of this, ISO 14649 defines the origin of the feature at the top of the feature, so that depth can be computed geometrically as the distance between the feature placement and the depth surface.

Consequently, a feature can have different values for placement location, and possibly orientation, in the ISO 10303 integrated representation and the ISO 14649 representation.

EXAMPLE Consider Figure 6 and assume a round hole 2 units deep, with the bottom centre of the hole located at (0, 0, 0). In the ISO 10303 representation, the placement location of the hole is (0, 0, 0) and the length of the sweep path is 2 units. In the ISO 14649 representation, the placement location of the hole would be (0, 0, +2) and the feature would point to an instance of elementary_surface defining a plane at z=0;

Feature placement differences
Key

1 ISO 10303 representation

2 ISO 14649 representation

3 path

4 profile

5 feature placement reference point

6 depth surface

Figure 6 — Feature placement differences

ISO 14649 requires a depth surface for all machining_feature types, even where profile and path information is available. Within this document, this constraint is relaxed since depth is already available from the profile and path parameters. The depth surface is represented by a parameter called "maximum feature depth," which is also an optional parameter in the AP 224 and AP 214 models.

NOTE Why were the reference points for features done this way? Before it is machined, the top of a feature often corresponds to a tangible location on the stock where a machinist could measure or make a mark. The bottom of the feature is usually buried within the stock.

The ISO 10303 standards originally defined features on the final form of the part as input to process planning. However, the features on the final part may not exactly match the features as machined. Consider a flat surface with a hole drilled in it. If the hole is drilled before the face is machined, the top of the hole will be higher than if it is drilled after the face is machined. The location in space of the bottom of the hole remains the same regardless of the sequence of operations.

Since planning activity can explore different operation sequences, describing the location from a reference point at the bottom of the feature allows the numeric value of the location to remain constant, even if the volume of the feature changes during process planning. Subsequent ISO 10303 standards continue to use this convention for compatibility.

ISO 14649 chose to use the top to more closely match the conventions used by machinists. Application software built around AP 238 may find it useful to present location information to a human using the ISO 14649 conventions, while still using the ISO 10303 convention for data exchange.

5.2.2.2.1.2 Orientation of profiles

The placement of a feature is described by an axis2_placement_3d, which contains a pair of direction vectors that give the orientation of the Z and X axes of the feature. From these, the orientation of the Y axis is computed by vector cross product, and the orientation of the other feature aspects are determined by conventions established in the feature definitions.

In the ISO 10303 integrated representation, profiles are defined to exist in the XY plane. Most features sweep the profile in the Z direction (the one exception is planar face, which uses a linear profile defined to lie along the X axis and is swept along the Y axis). The origin of a feature, its profile, and its path are all at the same point in space. Within the AIM instance data, it is recommended that the "placement" parameters of all three share the same axis2_placement_3d instance.

In ISO 14649, profiles are also defined in the XY plane, but sometimes interpreted as lying in the XZ plane because of the way feature orientation is defined. In the ISO 14649 representation, the origin of the profile, path, and feature can lie at different points. See Manufacturing feature details by type for a listing of specific differences for each feature type.

EXAMPLE Figure 7 shows a slot made up of a rounded u profile. In the ISO 10303 representation, the feature placement gives the origin of both the sweep path and the profile, with the profile in the XY plane and the sweep along the Z axis.

Feature placement differences
Key

1 profile (swept_shape)

2 profile depth

3 ISO 10303 feature origin

4 path (course_of_travel)

5 ISO 14649 origin (note orientation of axes)

Figure 7 — Feature placement differences

In the ISO 14649 representation, the feature placement location defines the top centre of the slot, with the profile assumed to lie in the XZ plane, and swept along the Y axis. To find the origin of the profile, offset by the depth of the profile. Because of the change in axes, the direction of sweep is reversed, which means that the placement is also at the other end of the slot from the ISO 10303 representation.

5.2.2.2.2 Explicit shape by geometry

In the ISO 10303 integrated representation, feature shape can be described implicitly using a collection of characteristic parameters like depth, width, etc. This is done using the profile and path representation discussed in previous sections. It is also possible to describe feature shape using an explicit representation based on faces from a boundary representation.

ISO 14649 only supports implicit representation of feature shape. For harmonization, an explicit_representation parameter has been added to Manufacturing_feature to support the explicit representation approach.

Within the AIM instance data, an explicit shape description appears as face instances in the items set of a shape_representation. The characteristic parameters for the implicit shape description appear as measure_representation_item instances in the items set of a shape_representation_with_parameters. The characteristic parameters for profile and path instances are handled in the same way.

Both of these representations are associated with the feature through shape_definition_representation instances which refer to a property_definition. The property_definition refers to the shape_aspect instances representing the feature. Features that inherit from characterized_object (all except for transition features) use the product_definition_shape subtype instead. Local rules permit only one product_definition_shape instance per feature, so the instance is shared by both implicit and explicit representations, as well as the reference paths for any profile and path instances.

Implicit and explicit feature shape
Figure 8 — Instances for implicit and explicit feature shape

EXAMPLE 1 Figure 8 shows an instance diagram for a feature containing implicit and explicit representations. The instances describing the profile and path are not shown, but each is a shape_aspect subtype similar to the feature instance. The parameters describing each is held by a shape_representation_with_parameters instance and related to the profile or path using the same pattern of shape_definition_representation and product_definition_shape instances as shown below.

An alternate mapping path is given for the explicit_representation parameter that does not use the shape_representation or shape_definition_representation subtypes. This alternate should only be used for reading instance data that has originated from an AP 224 process. The preferred mapping should be used for any new instance data. Examples 2 and 3 illustrate both mappings.

EXAMPLE 2 The preferred explicit_representation encoding. In the exchange file fragment below, #10 describes a round hole feature on a workpiece (#100, not shown). The explicit shape description is given by the advanced_face instances (#50, #60, #70) in a shape_representation (#40) with a name of "explicit feature shape", and is related to the feature through a shape_definition_representation (#30) and product_definition_shape (#20).

#10=(
  CHARACTERIZED_OBJECT('',$)
  FEATURE_DEFINITION()
  INSTANCED_FEATURE()
  ROUND_HOLE()
  SHAPE_ASPECT('',$,#100,.T.)
);

#20=PRODUCT_DEFINITION_SHAPE('','',#10);
#30=SHAPE_DEFINITION_REPRESENTATION(#20,#40);
#40=SHAPE_REPRESENTATION('explicit feature shape',(#50,#60,#70),#200);
#50=ADVANCED_FACE( ... );
#60=ADVANCED_FACE( ... );
#70=ADVANCED_FACE( ... );

#100= [ ... to workpiece ... ]
#200= [ ... to geometric context ... ]

EXAMPLE 3 The alternate explicit_representation encoding. The exchange file fragment below describes the same feature as the previous example, but the advanced_face instances are in an instance of the representation base type (#40) with no name, and is related to the feature through a property_definition_representation (#30) and property_definition (#20) with no name. Since other feature properties can have representations containing faces, there can be some ambiguity.

#10=(
  CHARACTERIZED_OBJECT('',$)
  FEATURE_DEFINITION()
  INSTANCED_FEATURE()
  ROUND_HOLE()
  SHAPE_ASPECT('',$,#100,.T.)
);

#20=PROPERTY_DEFINITION('',$,#10);
#30=PROPERTY_DEFINITION_REPRESENTATION(#20,#40);
#40=REPRESENTATION('',(#50,#60,#70),#200);
#50=ADVANCED_FACE( ... );
#60=ADVANCED_FACE( ... );
#70=ADVANCED_FACE( ... );

#100=PRODUCT_DEFINITION_SHAPE('','',#210);
#110=PRODUCT_DEFINITION( ... workpiece product definition ... );
#200= [ ... geometric context omitted ... ]
5.2.2.2.3 Features describing process or final form

A machining workplan is composed of machining workingsteps, each of which refers to a feature that defines a volume of space acted upon by that workingstep. This volume of space is empty of material when the operation is finished, subject to any finishing allowance or overcut modifiers in the associated operation parameters. Furthermore, the workingstep shall not remove any material outside of the feature volume.

NOTE It is possible that the volume defined by the feature is not be the exact removal volume if some of the material has already been removed by previous workingsteps. Consider roughing and finishing of a pocket. Both workingsteps would refer to the pocket. The roughing step removes the entire volume except for a finishing allowance, while the finishing step removes only a thin shell.

These features are tightly tied to the machining process defined by the workplan. If a manufacturing engineer creates an alternate workplan to make the same workpiece, the new workplan can use a completely different set of features.

EXAMPLE 1 Figure 9 shows a stairway-shaped workpiece and two different machining processes to produce that workpiece. The example on the right shows a depth-first machining workplan while the example on the left shows a breadth-first machining workplan. Both workplans produce the same result, but each calls out very different features.

Alternate machining processes and features
Figure 9 — Alternate machining processes and features

AP 224 and other parts of ISO 10303 identify features on the final form of the workpiece that are not necessarily tied to a specific sequence of machining processes. These features are used as input to the process planning activity. The output of macro process-planning can be described as an AP 240 data set that includes these features with additional intermediate features related to a particular process. This document describes the micro process-plan and is concerned with the features associated with a particular process, but it is desirable to link the features on the final form with the set of workingsteps that contribute to their manufacture. This associativity through the entire design to manufacturing path is useful for related downstream tasks, such as inspection, which could use the tracability to pinpoint critical areas of interest in the micro and macro process-plans.

EXAMPLE 2 Figure 10 shows a workpiece whose final form contains a step and an open slot. The input to the process planner was an open slot and step, and for whatever reason, he decided to machine the slot first and the step second. The workplan contains two workingsteps, the first of which refers to a closed slot and the second of which refers to the step.

With the first workingstep, ISO 14649 is only concerned with the closed slot, and there is no way to trace back to the open slot feature on the final part. In the second workingstep, of course, the process and final form feature are the same thing.

A similar situation arises for "consumed" features such as entry holes, which are drilled to provide a starting point for an endmill to facilitate later machining operations. The entry hole feature never appears on the final workpiece because it is machined away by subsequent operations.

Process and final form features
Key

1 open slot (final form feature)

2 closed slot (process feature)

3 workingstep #1 (bottom and side mill)

4 workingstep #2 (bottom and side mill)

5 step (both process and final form feature)

Figure 10 — Example of process and final form features

ISO 14649 links the machining_workingstep application object to the feature that defines its removal volume through the its_feature attribute. In this document, an optional attribute called final_features has been added to workingstep to support traceability back to the features used as input to the process planning activity.

If used, this attribute contains a set of one or more features visible on the final form of the workpiece that the process planner was targeting when he or she added the workingstep to the machining workplan.

5.2.2.3 Manufacturing feature details by type

5.2.2.3.1 Planar face

In the ISO 10303 integrated representation, a planar face is represented by a linear profile swept along a linear path to form the plane that results after material has been removed. The origin of the feature lies on the plane. The depth of material removed is given by the removal_depth length parameter associated with the feature. Figure 11 illustrates the planar face parameters.

Planar face origin and parameters
Key

1 ISO 14649 origin

2 feature originxs

3 profile

4 path

5 removal depth

Figure 11 — Planar face origin and parameters

Two direction vectors are associated with the planar face. One is part of the linear path and defines the direction that the swept profile sweeps along the path direction. This shall be aligned along the Y axis of the feature placement. The other direction vector is the removal_direction, which defines the surface normal of the plane. This shall be aligned with the Z axis of the feature placement. The profile is defined to extend along the X axis of the feature placement.

In ISO 14649, the placement of the feature is defined to lie at the top of the material to be removed. One must then geometrically evaluate the distance between this placement and the depth surface to determine the depth of material.

This document adds the removal_depth and removal_direction attributes to the planar_face application object. These attributes are present for harmonization with the other ISO 10303 parts and also simplify conversion between the two conventions.

To convert to the ISO 14649 representation, move the placement along the direction given by the removal_direction by the distance given by the removal_depth attribute.

5.2.2.3.2 Round hole

In the ISO 10303 integrated representation, a round hole is represented by a circular closed profile swept along a linear path. The diameter of the profile is the diameter of the circle and the length of the travel path is the depth of the hole. The Round_hole bottom_at_path_end parameter determines whether the placement is at the bottom of the hole with the Z axis pointing up out of the material or at the top of the hole with the Z axis pointing down into the material. Figure 12 illustrates the handling of round hole placement.

Round hole origin
Key

1 ISO 10303 feature origin, bottom_at_path_end = TRUE

2 ISO 10303 feature origin, bottom_at_path_end = FALSE

3 ISO 14649 feature origin

4 path

5 bottom of the hole

6 depth surface

Figure 12 — Round hole origin

A direction vector is part of the linear path and defines the direction that the profile is swept. This shall be aligned along the Z axis of the feature placement. The profile lies in the XY plane of the feature placement with the feature placement at the centre of the profile.

In ISO 14649, a hole does not use profile or path definitions. Instead, the diameter is an attribute of the Round_hole definition. To convey depth, the feature placement is assumed to be at the top of the hole with Z pointed away from the material. To determine the depth of the hole, one must geometrically evaluate the distance in the negative Z direction between this placement and the depth surface.

This document adds the course_of_travel attribute to the Round_hole application object. This attribute represents the travel path for harmonization with the other ISO 10303 parts and simplifies conversion between the two conventions.

To convert to the ISO 14649 representation, construct the depth surface if it is not present and adjust the feature placement. For a placement at the top of the hole (bottom_at_path_end is TRUE), rotate the feature placement about the X axis so that Z => -Z and Y => -Y. For a placement at the bottom of the hole (bottom_at_path_end is FALSE), move the placement in the Z direction by the length of the course_of_travel path.

5.2.2.3.3 Pocket

In the ISO 10303 integrated representation, a pocket is represented by a profile swept along a linear path. Material is removed on the inside of the profile, and the length of the travel path is the depth of the pocket. The Pocket bottom_at_path_end parameter determines whether the placement is at the bottom of the pocket with the Z axis pointing up out of the material or at the top of the pocket with the Z axis pointing down into the material. Figure 13 illustrates the handling of pocket placement.

Pocket origin
Key

1 ISO 10303 feature origin, bottom_at_path_end = TRUE

2 ISO 10303 feature origin, bottom_at_path_end = FALSE

3 ISO 14649 feature origin

4 path

5 bottom of the pocket

6 depth surface

Figure 13 — Pocket origin

A direction vector is part of the linear path and defines the direction that the profile is swept. This shall be aligned along the Z axis of the feature placement. The profile lies in the XY plane of the feature placement with the profile origin aligned with feature placement.

In ISO 14649, the pocket definitions have a profile but not a path attribute. In order to convey depth, the placement of the feature is assumed to be at the top of the feature with Z pointed away from the material. To determine the depth of the pocket, one must geometrically evaluate the distance in the negative Z direction between this placement and the depth surface.

This document adds the course_of_travel attribute to the Pocket application object. This attribute represents the travel path for harmonization with the other ISO 10303 parts and simplifies conversion between the two conventions.

To convert to the ISO 14649 representation, construct the depth surface if it is not present and adjust the feature placement. For a placement at the top of the pocket (bottom_at_path_end is TRUE), rotate the feature placement about the X axis so that Z => -Z and Y => -Y. For a placement at the bottom of the pocket (bottom_at_path_end is FALSE), move the placement in the Z direction by the length of the course_of_travel path.

5.2.2.3.4 General outside and shape profile features

In the ISO 10303 integrated representation, a Profile_feature (General_outside_profile or Shape_profile) is represented by a profile swept along a linear path. Material is removed on the outside of the swept profile. The length of the travel path is the depth of the profile_feature.

For a general outside profile, the feature placement is at the bottom with the Z axis pointing up out of the material. Figure 14 illustrates the parameters associated with all Profile_features as well as the placement of a general outside profile.

General Outside profile origin
Key

1 ISO 14649 feature origin

2 profile (feature_boundary)

3 ISO 10303 feature origin

4 material to be removed

5 path (profile_swept_shape)

Figure 14 — General Outside profile origin

Shape profiles have an additional floor condition that determines the feature placement. For shape profiles, the Profile_floor start_or_end parameter determines whether the feature placement is at the bottom of the profile with the Z axis pointing up out of the material (start_or_end is FALSE), or at the top of the profile with the Z axis pointing down into the material (start_or_end is TRUE). Figure 15 illustrates the placement of a shape profile.

A direction vector is part of the linear path and defines the direction that the profile is swept. This shall be aligned along the Z axis of the feature placement. The swept profile lies in the XY plane of the feature placement with the origin of the swept profile aligned with feature placement.

In ISO 14649, the feature definitions have a profile and path, but use a different convention for placement. The placement of the feature is assumed to be at the top of the feature with Z pointed away from the material. To determine the depth of the Profile_feature, one must geometrically evaluate the distance in the negative Z direction between this placement and the depth surface. However, the depth is also present in the length of the travel path, given by the profile_swept_shape attribute.

Shape profile origin
Key

1 ISO 10303 feature origin, start_or_end = TRUE

2 ISO 10303 feature origin, start_or_end = FALSE

3 ISO 14649 feature origin

4 path

5 shape_profile floor_condition

6 depth surface

Figure 15 — Shape profile origin

To convert a General_outside_profile to the ISO 14649 representation, construct the depth surface if it is not present and move the placement in the Z direction by the length of the profile_swept_shape path.

To convert a Shape_profile to the ISO 14649 representation, construct the depth surface if it is not present and adjust the feature placement. For a placement at the top of the Shape_profile (start_or_end is TRUE), rotate the feature placement about the X axis so that Z => -Z and Y => -Y. For a placement at the bottom of the Shape_profile (start_or_end is FALSE), move the placement in the Z direction by the length of the profile_swept_shape path.

5.2.2.3.5 Slot

In the ISO 10303 integrated representation, a slot feature is represented by an open profile swept along a travel path. Material is removed on the inside of the swept profile. The depth of the open profile gives the depth of the slot feature. The feature placement is at the bottom of the feature with the Z axis pointing along the travel path. Figure 16 illustrates the slot parameters.

Slot origin and orientation
Key

1 profile (swept_shape)

2 profile depth

3 ISO 10303 feature origin

4 path (course_of_travel)

5 ISO 14649 origin (note orientation of axes)

Figure 16 — Slot origin and orientation

A direction vector is part of the travel path and defines the direction that the profile is swept. This shall be aligned along the Z axis of the feature placement. The profile lies in the XY plane of the feature placement with the profile origin aligned with feature placement at the bottom of the slot feature.

In ISO 14649, the slot definition has a profile and path, but uses a different convention for the location and orientation of the feature placement. The placement is defined at the top of the material with the Z axis pointing up and the travel path is defined to extend along the Y axis. To determine the depth of the slot, one must geometrically evaluate the distance in the negative Z direction between this placement and the depth surface.

This document adds depth attributes to the Square_u_profile and Rounded_u_profile application objects. These attributes represent the depth of the profiles for harmonization with the other ISO 10303 parts and to simplify conversion between the two conventions. The depths of other open profile types can be computed from existing parameters.

To convert to the ISO 14649 representation, rotate the feature placement about the X axis so that Z => Y and Y => -Z. Then move the placement along the length of the course_of_travel and depth of the swept profile.

Change the direction on the course_of_travel path so that it points along the new Y axis rather than the Z axis. The origin of the open profile is defined at the bottom of the profile, so it can no longer share the placement of the feature. Assign it a separate placement offset by the profile depth. Finally, construct the depth surface if it is not present.

5.2.2.3.6 Step

In the ISO 10303 integrated representation, a step feature is represented by a vee profile swept along a linear path. Material is removed on the inside of the vee profile. The length of one arm of the vee profile gives the depth of the step feature. The length of the other arm gives the width of the step feature. The feature placement is at the point of the vee profile with the Z axis pointing along the travel path. Figure 17 illustrates the step parameters.

Step origin and orientation
Key

1 profile (wall_boundary)

2 second_side_length (from profile)

3 ISO 10303 feature origin

4 first_side_length (from profile)

5 path (open_boundar2)

6 ISO 14649 feature origin (note orientation of axes)

Figure 17 — Step origin and orientation

A direction vector is part of the travel path and defines the direction that the profile is swept. This shall be aligned along the Z axis of the feature placement. The profile lies in the XY plane of the feature placement with the profile origin aligned with feature placement at the point of the vee profile.

In ISO 14649, the step definition has a profile and path, but uses a different convention for the location and orientation of the feature placement. The placement is defined at the top of the material with the Z axis pointing up and the travel path is defined to extend along the Y axis. To determine the depth of the step, one must geometrically evaluate the distance in the negative Z direction between this placement and the depth surface.

This document adds the first_side_length and second_side_length attributes to the Vee_profile application object. These attributes represent the length of each arm of the vee for harmonization with the other ISO 10303 parts and to simplify conversion between the two conventions.

To convert to the ISO 14649 representation, rotate the feature placement about the X axis so that Z => Y and Y => -Z. Then move the placement along the length of the course_of_travel and the second_side_length arm of the vee profile.

Change the direction on the course_of_travel path so that it points along the new Y axis rather than the Z axis. The origin of the vee_profile is defined as the point of the vee, so it can no longer share the placement of the feature. Assign it a separate placement offset by the second_side_length. Finally, construct the depth surface if it is not present.

5.2.2.3.7 Transition Features

In the ISO 10303 application protocols, chamfers and edge rounds are defined as a relationship between two sets of geometric elements on the boundary representation of the workpiece. Each transition feature has a first_face_shape and a second_face_shape parameter. Each contains a set of face_surface or oriented_face instances taken from the brep description of the workpiece shape. In addition, several characteristic parameters are associated with each feature type. Chamfers have an offset and face angle, while edge rounds have two offsets and a radius to describe the transition surface.

ISO 14649 calls out the same characteristic parameters, but defines chamfers and edge rounds as a relationship between two features. Each transition feature has a first_feature and a second_feature parameter referring to the features on either side of the transition.

NOTE 1 Why were two approaches used? Historically, the ISO 10303 approach was defined first, but this requires that brep geometry be present in order to describe transition features. From the ISO 14649 perspective, geometry is optional and may be omitted, so it made sense to define transition features as a relationship between two features instead.

This document extends the Chamfer and Edge_round application objects to support the use of both approaches. This was done by adding chamfer_face, first_face_shape and second_face_shape attributes to Chamfer and adding edge_round_face, first_face_shape and second_face_shape attributes to Edge_round. These attributes are optional and represent the faces associated with the transition features for harmonization with the other ISO 10303 parts. Figure 18 shows both approaches for transition features.

Transition features
Key

1 first_feature (planar face feature) or first_face_shape (brep faces)

2 chamfer_face (brep face)

3 second_feature (outside profile feature) or second_face_shape (brep faces)

4 edge_round_face (brep face)

Figure 18 — Transition features relating faces or features

The chamfer_requires_faces_or_features and edge_round_requires_faces_or_features rules have been added to require transition features to use at least one of the approaches.

NOTE 2 The AIC 522 rules originally required chamfers and edge rounds to have associated sets of faces. In order to accommodate either style, these rules were changed from required ("exactly one") to optional ("at most one") in AIC 522 Edition 2. APs that wish to permit only the face style can add a global rule to strengthen these constraints if desired.

As originally mapped in AP 224, Edge_round has three face sets, each mapped to a face_shape_representation. They are attached through the common product_definition_shape instance, but the mapping calls for the edge_round_face to be associated via a shape_definition_representation (and thus is also the feature's explicit representation) while the first and second_face_shapes are called to be associated only by plain property_definition_representation instances.

5.2.2.4 Measurement concepts

5.2.2.4.1 Measurement values and units

In the ISO 10303 integrated representation, measurements such as length, angle, and time are represented as instances of the measure_with_unit type. A subtype is used when one exists for the particular type of measure value. The following sections discuss measure_with_unit subtypes in greater detail.

Within each instance, the value_component attribute holds the numeric value of a measure and the unit_component attribute holds a reference to an instance of named_unit or derived_unit defining the unit of measurement for the value. In this way, each numeric value is accompanied by a unit to provide context. In general, only one instance of each unit is needed, as a single unit instance can be shared by many measure_with_unit instances.

Measurements most often appear in the items set of the representation of an action_property, resource_property, or property_definition. The items set must refer to representation_item instances, so measurements are encoded as a measure_representation_item, which is a subtype of measure_with_unit and representation_item. The measure_with_unit subtypes for specific types of values are still used by creating a complex entity instance with measure_representation_item.

EXAMPLE 1 No value-specific subtype of measure_with_unit exists for count measurements, so a count value is simply encoded as an instance of measure_representation_item. In the exchange file fragment below, #10 is an instance of this type describing a count of 5. The unit for the value is encoded by #20, which is a context_dependent_unit with a name of "count".

#10=MEASURE_REPRESENTATION_ITEM('', COUNT_MEASURE(5.),#20);
#20=CONTEXT_DEPENDENT_UNIT(#30,'count');
#30=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);

EXAMPLE 2 A length measurement would be encoded as a complex instance of length_measure_with_unit and measure_representation_item. In the exchange file fragment below, #40 is a complex instance of these types describing a value of 22.5mm. The millimetre unit is encoded by #50, which is also a complex instance of length_unit and si_unit. In general, each value-specific subtype of measure_with_unit has a corresponding subtypes of named_unit that is used in a complex instance with either si_unit or conversion_based_unit for units describing those types of values.

#40=(
  LENGTH_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(LENGTH_MEASURE(22.5),#50)
  REPRESENTATION_ITEM('')
);

#50=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

In ISO 14649 all basic measures are defined using specific, fixed units (all lengths are expressed in millimeters, all plane angles are expressed in degrees), so units do not appear explicitly in the data sets. ISO 14649 is unable to transmit measurements defined by other units without first numerically converting the values to the specified units.

To convert to the ISO 14649 representation, convert the numeric value of each measure from the unit description provided with the measure to the default unit specified by ISO 14649.

5.2.2.4.2 Tolerance qualifications

In the ISO 10303 integrated representation, qualifications such as plus/minus bounds, significant digits, limits and fits, or maximum/minimum can be applied to measurement values. This is encoded by creating a complex entity instance of qualified_representation_item, measure_representation_item, and, if one exists, a value-specific measure_with_unit subtype. The qualified_representation_item adds a set of value qualifiers to the instance that describe the conditions placed on the value.

EXAMPLE 1 A length measurement with a plus/minus tolerance is encoded as a complex instance of length_measure_with_unit, measure_representation_item, and qualified_representation_item. In the exchange file fragment below, #10 describes a value of 80mm plus or minus 0.1, with 5 significant digits of precision. The upper and lower bounds (#20 and #30) are encoded using standard_uncertainty instances, while the digits of precision (#40) are encoded using a a precision_qualifier.

#10=(
  LENGTH_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(LENGTH_MEASURE(80.),#50)
  QUALIFIED_REPRESENTATION_ITEM((#20,#30,#40))
  REPRESENTATION_ITEM('')
);
#20=STANDARD_UNCERTAINTY('upper limit','',0.1);
#30=STANDARD_UNCERTAINTY('lower limit','',0.1);
#40=PRECISION_QUALIFIER(5);

#50=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

EXAMPLE 2 A length measurement with a value limitation is encoded in the same way, but a type_qualifier is used to indicate the type of limitation. In the exchange file fragment below, #10 describes a maximum value of 80mm.

#10=(
  LENGTH_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(LENGTH_MEASURE(80.),#30)
  QUALIFIED_REPRESENTATION_ITEM((#20))
  REPRESENTATION_ITEM('')
);
#20=TYPE_QUALIFIER('maximum');

#30=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

NOTE The qualified_representation_item encoding is used for all measure types, including lengths and plane angles, with one exception. When a length or plane angle measure appears as the dimension_value of a Geometric_dimension, a plus/minus or limits and fits qualification is encoded differently for harmonization reasons. See the mapping specifications for Plus_minus_value and Limits_and_fits for details.

5.2.2.4.3 Angle (plane) measure

A plane angle measure is encoded using an instance of plane_angle_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a plane_angle_unit, so a complex entity instance with si_unit or a conversion_based_unit is used.

EXAMPLE A plane angle measurement used in a representation would be encoded as a complex instance of plane_angle_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a value of 90 degrees.

#10=(
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(90.),#30)
  PLANE_ANGLE_MEASURE_WITH_UNIT()
  REPRESENTATION_ITEM('')
);

The degree unit is encoded by #30, which is a complex instance of plane_angle_unit and conversion_based_unit that defines one degree as PI/180 radians. The name attribute has a value of "degree", which is not required, but is good form. The radian unit is encoded by #20, which is a complex instance of plane_angle_unit and si_unit.

#20=(
  NAMED_UNIT(*)
  PLANE_ANGLE_UNIT()
  SI_UNIT($,.RADIAN.)
);

#30=(
  CONVERSION_BASED_UNIT('degree',#50)
  NAMED_UNIT(#40)
  PLANE_ANGLE_UNIT()
);
#40=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
#50=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.01745329252),#20);
5.2.2.4.4 Angle (solid) measure

A solid angle measure is encoded using an instance of solid_angle_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a solid_angle_unit, so a complex entity instance with si_unit or a conversion_based_unit is used.

EXAMPLE A solid angle measurement used in a representation would be encoded as a complex instance of solid_angle_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a value of 0.5 steradian.

#10=(
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(SOLID_ANGLE_MEASURE(0.5),#20)
  REPRESENTATION_ITEM('')
  SOLID_ANGLE_MEASURE_WITH_UNIT()
);

The steradian unit is encoded by #20, which is a complex instance of solid_angle_unit and si_unit. Conversion-based solid angle units, such as square degrees, are possible but not used in practice.

#20=(
  NAMED_UNIT(*)
  SI_UNIT($,.STERADIAN.)
  SOLID_ANGLE_UNIT()
);
5.2.2.4.5 Area measure

An area measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). A derived_unit consisting of a length unit squared is used to describe the measure.

NOTE ISO 10303-41 defines value-specific subtypes area_measure_with_unit and area_unit, but the use of these is deprecated because they are not usable as defined. The unit for an area measure is described as a derived_unit, but a complex instance of area_unit and derived_unit is not permitted by the EXPRESS definition.

EXAMPLE An area measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 10 square millimetres.

#10=MEASURE_REPRESENTATION_ITEM('',AREA_MEASURE(10.),#20);

The square millimetre unit is encoded by #20, which is a derived_unit based on one derived_unit_element which references a millimetre unit (#50) with an exponent of 2. The derived_unit has an associated name_attribute instance with a value of "square millimetre", which is not required, but is good form.

#20=DERIVED_UNIT((#30));
#30=DERIVED_UNIT_ELEMENT(#50,2.);
#40=NAME_ATTRIBUTE('square millimetre',#20);
#50=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);
5.2.2.4.6 Count measures

A count measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). A context_dependent_unit with a name of "count" is used to describe the measure.

EXAMPLE In the exchange file fragment below, #10 describes a count of 5 encoded as a measure_with_unit. The count unit is encoded by #20. Example 1 in Measurement values and units describes a count meaurement encoded using measure_representation_item.

#10=MEASURE_WITH_UNIT(COUNT_MEASURE(5.),#20);
#20=CONTEXT_DEPENDENT_UNIT(#30,'count');
#30=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
5.2.2.4.7 Force measure

A force measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A si_unit or a conversion_based_unit is used to describe the measure.

EXAMPLE A force measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 20 Newtons (N) and #20 describes a value of 14 pounds force (lbf).

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(20.),#30);
#20=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(14.),#40);

The Newton unit is encoded by #30, which is a simple entity instance of si_unit. The pound force unit is encoded as a simple entity instance of conversion_based_unit that defines one pound force equal to approximately 4.448221615 Newtons. The name attribute has a value of "pound-force", which is not required, but is good form. Note the dimensional exponents in #50 as pressure requires dimensions of (length * mass)/time squared.

#30=SI_UNIT(*,$,.NEWTON.);
#40=CONVERSION_BASED_UNIT(#50,'pound-force',#60);
#50=DIMENSIONAL_EXPONENTS(1.,1.,-2.,0.,0.,0.,0.);
#60=MEASURE_WITH_UNIT(NUMERIC_MEASURE(4.448221615),#30);
5.2.2.4.8 Length measure

A length measure is encoded using an instance of length_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a length_unit, so a complex entity instance with si_unit or a conversion_based_unit is used.

EXAMPLE A length measurement used in a representation would be encoded as a complex instance of length_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a value of 12 inches.

#10=(
  LENGTH_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(LENGTH_MEASURE(12.),#30)
  REPRESENTATION_ITEM('')
);

The inch unit is encoded by #30, which is a complex instance of length_unit and conversion_based_unit that defines one inch as 25.4 millimetres. The name attribute has a value of "inch", which is not required, but is good form. The millimetre unit is encoded by #20, which is a complex instance of length_unit and si_unit.

#20=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

#30=(
  CONVERSION_BASED_UNIT('inch',#50)
  LENGTH_UNIT()
  NAMED_UNIT(#40)
);
#40=DIMENSIONAL_EXPONENTS(1.,0.,0.,0.,0.,0.,0.);
#50=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(25.4),#20);
5.2.2.4.9 Mass measure

A mass measure is encoded using an instance of mass_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a mass_unit, so a complex entity instance with si_unit or a conversion_based_unit is used.

EXAMPLE A mass measurement used in a representation would be encoded as a complex instance of mass_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a mass of 2 kilograms. The kilogram unit is encoded by #20, which is a complex instance of mass_unit and si_unit.

#10=(
  MASS_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(MASS_MEASURE(2.),#20)
  REPRESENTATION_ITEM('')
);

#20=(
  MASS_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.KILO.,.GRAM.)
);
5.2.2.4.10 Power measure

A power measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A si_unit or a conversion_based_unit is used to describe the measure.

EXAMPLE A power measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 15 kilowatts (kW) and #20 describes a value of 14 horsepower (hp)

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(15.),#30);
#20=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(14.),#40);

The kW unit is encoded by #30, which is a simple entity instance of si_unit. The hp unit is encoded as a simple entity instance of conversion_based_unit that defines one horsepower equal to approximately 0.7456999 kilowatts. The name attribute has a value of "horsepower", which is not required, but is good form. Note the dimensional exponents in #50 as pressure requires dimensions of (length squared * mass)/time cubed.

#30=SI_UNIT(*,.KILO.,.WATT.);
#40=CONVERSION_BASED_UNIT(#50,'horsepower',#60);
#50=DIMENSIONAL_EXPONENTS(2.,1.,-3.,0.,0.,0.,0.);
#60=MEASURE_WITH_UNIT(NUMERIC_MEASURE(0.7456999),#30);
5.2.2.4.11 Pressure measure

A pressure measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A si_unit or a conversion_based_unit is used to describe the measure.

EXAMPLE A pressure measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 25 kilopascals (kPa) and #20 describes a value of 14 pounds per square inch (psi)

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(25.),#30);
#20=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(14.),#40);

The kPa unit is encoded by #30, which is a simple entity instance of si_unit. The psi unit is encoded as a simple entity instance of conversion_based_unit that defines one psi as 6.894757 kilopascals. The name attribute has a value of "pound/square inch", which is not required, but is good form. Note the dimensional exponents in #50 as pressure requires dimensions of mass/(length * time squared).

#30=SI_UNIT(*,.KILO.,.PASCAL.);
#40=CONVERSION_BASED_UNIT(#50,'pound/square inch',#60);
#50=DIMENSIONAL_EXPONENTS(-1.,1.,-2.,0.,0.,0.,0.);
#60=MEASURE_WITH_UNIT(NUMERIC_MEASURE(6.894757),#30);
5.2.2.4.12 Ratio and percentage measures

A ratio measure is encoded using an instance of ratio_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a ratio_unit. Percentage measures are represented as an instance of ratio_measure_with_unit with a numeric value of 0 representing 0/100 or 0% and a numeric value of 1 representing 100/100 or 100%.

EXAMPLE A ratio measurement used in a representation would be encoded as a complex instance of ratio_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a value of 25% (0.25). The ratio unit is encoded by #20.

#10=(
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(RATIO_MEASURE(0.25),#20)
  RATIO_MEASURE_WITH_UNIT()
  REPRESENTATION_ITEM('')
);

#20=RATIO_UNIT(#30);
#30=DIMENSIONAL_EXPONENTS (0.,0.,0.,0.,0.,0.,0.);
5.2.2.4.13 Speed (linear) measure

A linear speed measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A derived_unit consisting of a length unit per time unit is used to describe the measure.

EXAMPLE A linear speed measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 10 millimetres per second.

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(10.),#20);

The mm/s unit is encoded by #20, which is a derived_unit based on a derived_unit_element which references a millimetre unit (#60) with an exponent of 1, and a derived_unit_element which references a second unit (#70) with an exponent of -1. The derived_unit has an associated name_attribute instance with a value of "millimetre/second", which is not required, but is good form.

To describe other velocity units, like meter per second or inch per minute, replace the length unit (#60) and the time unit (#70) with the appropriate meter, inch, or minute unit descriptions.

#20=DERIVED_UNIT((#30,#40));
#30=DERIVED_UNIT_ELEMENT(#60,1.);
#40=DERIVED_UNIT_ELEMENT(#70,-1.);
#50=NAME_ATTRIBUTE('millimetre/second',#20);

#60=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

#70=(
  NAMED_UNIT(*)
  SI_UNIT($,.SECOND.)
  TIME_UNIT()
);
5.2.2.4.14 Speed (linear, per tooth or revolution) measure

A linear speed that is described as a length per tool tooth, revolution, or other non-time quantity is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A derived_unit consisting of a length unit per tooth, revolution, or other context-dependent unit is used to describe the measure.

EXAMPLE A length per tooth speed measure used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 1 millimetre per tooth.

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(1.),#20);

The mm/tooth unit is encoded by #20, which is a derived_unit based on a derived_unit_element which references a millimetre unit (#60) with an exponent of 1, and a derived_unit_element which references a tooth context-dependent unit (#70) with an exponent of -1. The derived_unit has an associated name_attribute instance with a value of "millimetre/tooth", which is not required, but is good form.

To describe length per revolution units, like millimetre per revolution, replace the tooth context-dependent unit (#70) with a revolution context-dependent unit description. See Speed (rotational) measure for an example of a revolution unit.

#20=DERIVED_UNIT((#30,#40));
#30=DERIVED_UNIT_ELEMENT(#60,1.);
#40=DERIVED_UNIT_ELEMENT(#70,-1.);
#50=NAME_ATTRIBUTE('millimetre/tooth',#20);

#60=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);

#70=CONTEXT_DEPENDENT_UNIT(#80,'tooth');
#80=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
5.2.2.4.15 Speed (rotational) measure

A rotational speed measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A derived_unit consisting of a revolution context-dependent unit over a time unit is used to describe the measure.

EXAMPLE A rotational speed measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 5 revolutions per second.

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(5.),#20);

The revolutions per second unit is encoded by #20, which is a derived_unit based on a derived_unit_element which references a references a revolution unit (#60) with an exponent of 1 and a second unit (#80) with an exponent of -1. The derived_unit has an associated name_attribute instance with a value of "revolution/second", which is not required, but is good form.

To describe other rotational speed units, like revolutions per minute, replace the time unit (#80) with the appropriate minute unit description.

#20=DERIVED_UNIT((#30,#40));
#30=DERIVED_UNIT_ELEMENT(#60,1.);
#40=DERIVED_UNIT_ELEMENT(#80,-1.);
#50=NAME_ATTRIBUTE('revolution/second',#20);

#60=CONTEXT_DEPENDENT_UNIT(#70,'revolution');
#70=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);

#80=(
  NAMED_UNIT(*)
  SI_UNIT($,.SECOND.)
  TIME_UNIT()
);
5.2.2.4.16 Time measure

A time measure is encoded using an instance of time_measure_with_unit. Local rules on this type require that the unit used to describe the measure be a time_unit, so a complex entity instance with si_unit or a conversion_based_unit is used.

EXAMPLE A time measurement used in a representation would be encoded as a complex instance of time_measure_with_unit and measure_representation_item. In the exchange file fragment below, #10 describes a value of 5 minutes.

#10=(
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(TIME_MEASURE(5.),#30)
  REPRESENTATION_ITEM('')
  TIME_MEASURE_WITH_UNIT()
);

The minute unit is encoded by #30, which is a complex instance of time_unit and conversion_based_unit that defines one minute as 60 seconds. The name attribute has a value of "minute", which is not required, but is good form. The second unit is encoded by #20, which is a complex instance of time_unit and si_unit.

#20=(
  NAMED_UNIT(*)
  SI_UNIT($,.SECOND.)
  TIME_UNIT()
);

#30=(
  CONVERSION_BASED_UNIT('minute',#50)
  NAMED_UNIT(#40)
  TIME_UNIT()
);
#40=DIMENSIONAL_EXPONENTS(0.,0.,1.,0.,0.,0.,0.);
#50=TIME_MEASURE_WITH_UNIT(TIME_MEASURE(60.),#20);
5.2.2.4.17 Torque measure

A torque measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). The value_component of the instance is a numeric_measure. A derived_unit consisting of a length times a force unit is used to describe the measure.

EXAMPLE 1 A torque measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 10 Newton meters.

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(10.),#20);

The N-m unit is encoded by #20, which is a derived_unit based on a derived_unit_element which references a Newton unit (#60) with an exponent of 1, and a derived_unit_element which references a meter unit (#70) with an exponent of 1. The derived_unit has an associated name_attribute instance with a value of "newton meter", which is not required, but is good form.

#20=DERIVED_UNIT((#30,#40));
#30=DERIVED_UNIT_ELEMENT(#60,1.);
#40=DERIVED_UNIT_ELEMENT(#70,1.);
#50=NAME_ATTRIBUTE('newton meter',#20);

#60=SI_UNIT(*,$,.NEWTON.);
#70=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT($,.METRE.)
);

EXAMPLE 2 In the exchange file fragment below, #10 describes a value of 20 pound feet. To describe the pound foot torque unit, a derived_unit is used as in the previous example. The force unit (#70) is given as a pound force unit description as in Force measure. The length unit (#110) is given as a foot unit.

#10=MEASURE_REPRESENTATION_ITEM('',NUMERIC_MEASURE(20.),#20);
#20=DERIVED_UNIT((#30,#40));
#30=DERIVED_UNIT_ELEMENT(#70,1.);
#40=DERIVED_UNIT_ELEMENT(#110,1.);
#50=NAME_ATTRIBUTE('pound foot',#20);

#60=SI_UNIT(*,$,.NEWTON.);
#70=CONVERSION_BASED_UNIT(#80,'pound-force',#90);
#80=DIMENSIONAL_EXPONENTS(1.,1.,-2.,0.,0.,0.,0.);
#90=MEASURE_WITH_UNIT(NUMERIC_MEASURE(4.448221615),#60);

#100=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);
#110=(
  CONVERSION_BASED_UNIT('foot',#130)
  LENGTH_UNIT()
  NAMED_UNIT(#120)
);
#120=DIMENSIONAL_EXPONENTS(1.,0.,0.,0.,0.,0.,0.);
#130=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(304.8),#100);
5.2.2.4.18 Volume measure

A volume measure is encoded using an instance of measure_with_unit (or measure_representation_item when used in a representation). A derived_unit consisting of a length unit cubed is used to describe the measure.

NOTE ISO 10303-41 defines value-specific subtypes volume_measure_with_unit and volume_unit, but the use of these is deprecated because they are not usable as defined. The unit for a volume measure is described as a derived_unit, but a complex instance of volume_unit and derived_unit is not permitted by the EXPRESS definition.

EXAMPLE A volume measurement used in a representation would be encoded as a measure_representation_item. In the exchange file fragment below, #10 describes a value of 20 cubic millimetres.

#10=MEASURE_REPRESENTATION_ITEM('',VOLUME_MEASURE(20.),#20);

The cubic millimetre unit is encoded by #20, which is a derived_unit based on a derived_unit_element which references a millimetre unit (#50) with an exponent of 3. The derived_unit has an associated name_attribute instance with a value of "cubic millimetre", which is not required, but is good form.

#20=DERIVED_UNIT((#30));
#30=DERIVED_UNIT_ELEMENT(#50,3.);
#40=NAME_ATTRIBUTE('cubic millimetre',#20);
#50=(
  LENGTH_UNIT()
  NAMED_UNIT(*)
  SI_UNIT(.MILLI.,.METRE.)
);
5.2.2.4.19 Feed, spindle, and dwell property representations

A number of properties on the technology and machining strategy application objects describe feedrate, spindle speed, or dwell time values. Several alternative types of measure value can be used to describe each of these values.

EXAMPLE 1 A feedrate could be described either as a linear speed (length per unit of time), or as a length per tooth of the tool being used.

The ISO 14649 documents use different modeling styles to describe these alternatives. The ISO 14649-11 milling model frequently uses different attributes for each alternative with a local rule forbidding the use of more than one at a time. The ISO 14649-12 turning model frequently uses a SELECT type to model the alternatives.

EXAMPLE 2 In ISO 14649-11, Milling_technology "spindle" and "cutspeed" are separate attributes that use different techniques (constant angular speed versus constant linear speed at the cutting point) to describe the machine tool spindle rotation. A local rule on Milling_technology prevents the use of both. ISO 14649-12 uses one attribute called "spindle_speed" defined as a Speed_select SELECT type that models the same two different ways to describe spindle rotation.

In the integrated representation, all alternative description techniques for a particular kind of value (feed speed, spindle speed, or dwell time) are encoded using a single representation subtype.

These representation subtypes identify the technique being used by with a particular value of the representation "description" attribute. Within the representation are representation items that give the numeric measure values. The uses and allowable combinations are described by the mapping specifications and local rules on the EXPRESS definition.

5.2.2.4.19.1 Feed speeds

Feed speeds are encoded using machining_feed_speed_representation. This representation subtype handles four different ways of describing a feedrate:

5.2.2.4.19.2 Spindle speeds

Spindle speeds are encoded using machining_spindle_speed_representation. This representation subtype handles three different ways of describing a spindle speed:

ISO 14649 defines the direction of spindle rotation to be counter-clockwise when described as a positive rotational speed value, and clockwise when described as a negative rotational speed value. However, ISO 14649-11 is silent on the direction of rotation when spindle speed is described as a linear speed value.

In this document, the same sign convention shall be used for spindle speeds described as either rotational or linear speeds: positive linear speed describes counter-clockwise spindle rotation and negative linear speed describes clockwise spindle rotation. The rotational direction is as observed looking from spindle to workpiece. A zero rotational or linear speed shall indicate a stopped spindle.

NOTE Many cutting tools require clockwise motion so spindle speeds will typically be negative.

5.2.2.4.19.3 Dwell times

Dwell times are encoded using (See machining_dwell_time_representation). This representation subtype handles two different ways of describing a dwell time:

5.2.2.4.20 Boolean and symbolic property representations

A number of application object properties describe boolean or enumeration symbolic values. Each symbolic value is encoded using an instance of descriptive_representation_item. The description field of the instance holds the value.

Since the range of symbolic values is fixed, it is recommended to instantiate this entity exactly once for each unique symbolic value that appears in the data set. Properties that have the same symbolic value can share either the descriptive_representation_item or the enclosing representation.

EXAMPLE In the exchange file fragment below, #10 and #20 describe two Milling_machine_functions application objects, each with chip removal on and coolant on. Within the ARM, chip removal and coolant are both described as boolean parameters. In the integrated representation, thse are represented as symbolic values 'chip removal on', 'chip removal off', 'coolant on', and 'coolant off'.

Only one descriptive_representation_item instance is needed to describe the 'chip removal on' value (#30), and it can be shared by all properties, along with its enclosing representation (#31). The instance describing 'coolant on' (#40) and its enclosing representation (#41) is shared as well.

#10=MACHINING_FUNCTIONS('functions one','milling','','');
#11=ACTION_PROPERTY('chip removal','',#10);
#12=ACTION_PROPERTY_REPRESENTATION('','',#11,#30);
#13=ACTION_PROPERTY('coolant','',#10);
#14=ACTION_PROPERTY_REPRESENTATION('','',#13,#40);

#20=MACHINING_FUNCTIONS('functions two','milling','','');
#21=ACTION_PROPERTY('chip removal','',#20);
#22=ACTION_PROPERTY_REPRESENTATION('','',#21,#30);
#23=ACTION_PROPERTY('coolant','',#20);
#24=ACTION_PROPERTY_REPRESENTATION('','',#23,#40);

#30=REPRESENTATION('constant',(#31),#50);
#31=DESCRIPTIVE_REPRESENTATION_ITEM('','chip removal on');

#40=REPRESENTATION('constant',(#41),#50);
#41=DESCRIPTIVE_REPRESENTATION_ITEM('','coolant on');
#50=REPRESENTATION_CONTEXT('','units not necessary');

5.2.2.5 Context concepts

5.2.2.5.1 Representation contexts

Context forms an important part of the ISO 10303 integrated representation, particularly with respect to the description of geometric properties. The value of an action_property, resource_property, or property_definition is encoded as a set of representation_items within an instance of a representation. The representation context_of_items attribute refers to a representation_context instance that supplies additional contextual information about the value.

Local rules on the ISO 10303 geometry definitions require that any enclosing representation must refer to a geometric_representation_context to identify the dimensionality (2D, 3D, etc.) of the geometry. The geometry definitions are unitless, so global_unit_assigned_context is also used to specify length, plane angle, and solid angle units. Finally, to enable solid model exchange between systems with dissimilar geometric accuracy, global_uncertainty_assigned_context is often used to document an uncertainty distance below which two points are considered to be the same.

A representation can only refer to a single representation_context instance, so a complex entity instance of the types is normally used.

EXAMPLE 1 In the exchange file fragment below, #10 is a representation containing an axis placement (#20, and #21) describing an origin location at (1.1, 2.2, 3.3). The representation context is given by #30 which indicates that the geometry described is three dimensional, lengths are measured in millimetres, angles in radians, solid angles in steradians, and points within 0.000006mm of each other are to be considered the same.

#10=SHAPE_REPRESENTATION('',(#20),#30);
#20=AXIS2_PLACEMENT_3D('orientation',#21,$,$);
#21=CARTESIAN_POINT('',(1.1,2.2,3.3));

#30=(
  GEOMETRIC_REPRESENTATION_CONTEXT(3)
  GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#40))
  GLOBAL_UNIT_ASSIGNED_CONTEXT((#50,#60,#70))
  REPRESENTATION_CONTEXT('ID1','3D')
);

#40=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-006),#50,
'DISTANCE_ACCURACY_VALUE',
'Maximum model space distance between geometric entities at asserted connectivities');

#50=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#60=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#70=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );

A context is still required for a representation containing non-geometric representation_item instances. In this case, an instance of the representation_context base type is sufficent.

In general, only one instance of each type of context is needed, as it can be shared by many representation instances.

EXAMPLE 2 In the exchange file fragment below, #10 is a representation containing a description (#20) and a length measure (#21). The length measure is already completely described by its unit (#40) and neither it nor the description require additional context information. The representation context (#30) satisfies the EXPRESS definition requirement that the representation context_of_items has a value.

#10=REPRESENTATION('',(#20,#21),#30);
#20=DESCRIPTIVE_REPRESENTATION_ITEM('','coolant on');
#21=(
  LENGTH_MEASURE_WITH_UNIT()
  MEASURE_REPRESENTATION_ITEM()
  MEASURE_WITH_UNIT(LENGTH_MEASURE(2.),#40)
  REPRESENTATION_ITEM('')
);

#30=REPRESENTATION_CONTEXT('','units not necessary');
#40=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
5.2.2.5.2 Product and product_definition contexts

Within this document, Project, Setup, and Workpiece are encoded in the integrated representation as products. Like representations, additional context information is also required for these products.

A product is required to have a product_context which identifies engineering discipline from whose point of view the data is being presented by the application protocol. This in turn refers to an application_context and application_protocol_definition which describes the application protocol used to describe the product, the schema name, and status of the application protocol within the ISO standardization process. It is recommended to instantiate the product_context, application_context, and application_protocol_definition entities exactly once in the data set.

A product_definition is required to have a product_definition_context which identifies the life cycle stage or maturity of the data being presented and refers to an application context description. It is recommended to instantiate the product_definition_context entity exactly once in the data set.

NOTE A value of "manufacturing" is recommended for both product_context discipline_type and product_definition_context life_cycle_stage.

EXAMPLE In the exchange file fragment below, #10, #20, and #30 are the product structure instances encoding a workpiece with its_id = "1234-K789" and a revision_id = "1.0". The product_context (#40) identifies a design discipline, the product_definition_context (#70) identifies a life cycle stage, and instances #50 and #60 identifies this document.

#10=PRODUCT('1234-K789','widget','a fictional product',(#40));
#20=PRODUCT_DEFINITION_FORMATION('1.0','first version of our widget',#10);
#30=PRODUCT_DEFINITION('design','example product_definition',#20,#70);

#40=PRODUCT_CONTEXT('CNC Machining',#50,'manufacturing');
#50=APPLICATION_CONTEXT('Application protocol for the exchange of CNC data');
#60=APPLICATION_PROTOCOL_DEFINITION('international standard',
'model_based_integrated_manufacturing_schema',2018,#50);

#70=PRODUCT_DEFINITION_CONTEXT('CNC Machining',#50,'manufacturing');

5.2.2.6 Toolpath description concepts

5.2.2.6.1 Matching curve parameterization

The definitions of Cutter_contact_trajectory, Cutter_location_trajectory, Axis_trajectory, and Toolpath_speed, require that the curves that describe location (basiccurve), tool axis, surface normal, and feed speed must have the same parameterization.

When the curves are b-splines, the intent of this requirement is that all curves are evaluated at the same U and V values to get the appropriate XYZ or IJK values. When the location curve is described using other types of bounded_curve, such as a polyline, ISO 14649 does not describe how the corresponding tool axis, surface normal, and feed speed values are to be determined for specific location values.

NOTE Since these other types of curve have no explicit UV parameterization to synchronize, the simplest approach is to describe the tool axis, surface normal, or tool speed at the start and end of the curve, and then linearly interpolate between the two values as the tool moves along the basis curve. Polylines and composite curves are segmented, so the direction can be given at each segment.

Except for the cases described below, all supporting curves (tool axis, surface normal, or feed) shall be given as polyline with two points. The first point indicates the supporting value (tool axis, surface normal, or feed) at the start of the location curve, and the second point indicates the supporting value at the end of the location curve.

EXAMPLE The exchange file fragment below shows a sample Cutter_location_trajectory basiccurve (#10) and its_toolaxis curve (#60). Both curves are polylines with the same number of points. At the locations described by #20 #30, and #40, the tool axis is as described by #70. At the location described by #50, the tool axis is as described by #80. The sharing of instance #70 is not required, but leads to a more space-efficient description than replicating the cartesian point values across three instances would.

#10=POLYLINE('basic curve for WS 12 TP 124',(#20,#30,#40,#50));
#20=CARTESIAN_POINT('',(2.9164976,0.4320305,-2.2));
#30=CARTESIAN_POINT('',(2.8524770,0.4960510,-3.2348622));
#40=CARTESIAN_POINT('',(-0.4960510,-2.8524770,-3.2348622));
#50=CARTESIAN_POINT('',(-0.4898882,-2.8586399,-3.1352428));

#60=POLYLINE('tool axis for WS 12 TP 124',(#70,#70,#70,#80));
#70=CARTESIAN_POINT('',(0.0616284,-0.0616284,0.9961947));
#80=CARTESIAN_POINT('',(-0.0616284,-0.0616284,0.9961947));
5.2.2.6.2 Toolpath direction vectors

The definitions of Cutter_contact_trajectory and Cutter_location_trajectory specify curves that describe the components of direction vectors for tool axis and surface normal. ISO 14649 does not indicate whether the direction vectors given by these curves shall be normalized (length equal to one).

It is recommended that these direction vectors be normalized.

5.2.2.6.3 Toolpath arcs

When describing a toolpath consisting of a circular arc, the trimmed_curve subtype of bounded_curve is used. The trimmed_curve.basis_curve attribute is an instance of circle, and the trim_1 and trim_2 attributes contain cartesian_points representing the start and end points respectively. The direction of traversal is indicated by comparing the trimmed_curve sense_agreement attribute with the mathematical sense of the underlying circle.

NOTE Given a circle in the XY plane with an axis placement along the positive Z axis, a sense_agreement of true indicates counterclockwise motion (from +X,0 to 0,+Y to -X,0 to 0,-Y), while a sense_agreement of false indicates clockwise motion.

EXAMPLE The exchange file fragment below shows a trimmed curve (#10), based on a circle located at (0,0,0) with a radius of 3.5. The arc starts (3.5,0,0) (#50) and traverses a 90 degree arc to (0,3.5,0) (#60).

#10=TRIMMED_CURVE('',#20,(#50),(#60),.T.,.CARTESIAN.);
#20=CIRCLE('',#30,3.5);
#30=AXIS2_PLACEMENT_3D('centre placement',#40,$,$);
#40=CARTESIAN_POINT('centre location',(0.,0.,0.));
#50=CARTESIAN_POINT('start point',(3.5,0.,0.));
#60=CARTESIAN_POINT('end point',(0.,3.5,0.));

A toolpath containing a circular arc may be described using a polyline with an instance of the via_arc_point subtype of cartesian_point.

5.2.2.6.4 Complete circles

When describing a toolpath consisting of a complete circle, the trimmed_curve approach described in the previous section is used, but the trim_1 (start) and trim_2 (end) points shall be the same point in space, and specify where the cutter enters & exits the circle. The start and end shall either reference the same cartesian_point instance or two instances with identical XYZ values.

NOTE Use of the same cartesian_point instance is preferred as this avoids numeric comparisons between coordinate values.

EXAMPLE Arcs and complete circles can occur when roughing out a circular pocket. An entry arc, full circle and then exit arc are illustrated in Figure 19.

Toolpath with complete circle
Figure 19 — Toolpath with complete circle

A toolpath containing a complete circle may be described using a polyline with two instances of the via_arc_point subtype of cartesian_point.

5.2.2.6.5 NC functions on a path

The Machine_functions application object shall be used to declare conditions required on the machine tool for the execution of an operation or toolpath. Advanced machining applications may require conditions that are not among those enumerated by this document. These conditions can be declared using the other_functions parameter of Machine_functions.

Historically, conditions on machine tools were often established using locally-defined numeric codes that are modal in nature. When describing the effect of these codes using other_function, the name of the Representation_item shall be the condition name and the value shall be one of the range of possible modes.

NOTE The Extended_NC_function application object should not be used to convey individual modal codes because it does not identify the common condition that the codes control. Also, an Extended_NC_function can not appear between two toolpaths, only between Operations

EXAMPLE An advanced fiber placement tool as illustrated in Figure 20 can contain many spools of fiber, heaters, and tapehead activity state. These may be controlled by numeric codes like the ones listed below.

N332 M12 (Heater high)
N334 M9 P65535 (Tapehead on)
...
N534 M11 (Heater low)
...
N554 M10 (Tapehead off)
N560 M13 (Heater off)

These states can be represented using the following descriptive representation items:

#31=DESCRIPTIVE_REPRESENTATION_ITEM('heater','heater high');
#32=DESCRIPTIVE_REPRESENTATION_ITEM('heater','heater low');
#33=DESCRIPTIVE_REPRESENTATION_ITEM('heater','heater off');

#51=DESCRIPTIVE_REPRESENTATION_ITEM('tapehead','tapehead on');
#52=DESCRIPTIVE_REPRESENTATION_ITEM('tapehead','tapehead off');

The exchange file fragment below shows a machine functions that declares 'tapehead on' and 'heater high' conditions using the 'other functions' property.

#100=MACHINING_FUNCTIONS('','milling','','');
#101=ACTION_PROPERTY('other functions','',#100);
#102=ACTION_PROPERTY_REPRESENTATION('','',#101,#103);
#103=REPRESENTATION('',(#105,#106),#104);
#104=REPRESENTATION_CONTEXT('','units not necessary');
#105=DESCRIPTIVE_REPRESENTATION_ITEM('tapehead','tapehead on');
#106=DESCRIPTIVE_REPRESENTATION_ITEM('heater','heater high');
Advanced fiber placement machine
Figure 20 — Advanced fiber placement machine tool
5.2.2.6.6 Digital twin process

The process model defined by ISO 14649 describes the planned state of processes and makes no attempt to represent the results of execution. Where a planned process would produce results, such as touch_probing, the operations identify an external variable name, but the value must be collected from a machine tool by some unspecified method.

NOTE During testing with the first edition of this document, results of execution such as geometry as-machined, motion reported by the machine tool, and cutting tools selected at machining time were mixed with the planned process data in single, combined, data sets. The model could represent the values, but could not distinguish between as-planned and as-executed data sources. Furthermore, the model could only represent as-executed values for a single execution run.

The twin_start, twin_end, twin_plan and other parameters added to Executable by the second edition of this document enable a clear distinction between as-planned and as-executed values, and scale to represent values from many execution runs. The external reference mechanism introduced by ISO 10303-21:2016 may be used to organize as-planned and as-executed processes into separate exchange structures.

This document extends the process model with additional parameters to describe a process that has been executed by a machine tool or simulated by software. This is called a digital twin process. A digital twin process represents the process values, encountered during machining and can reference the planned process that was being executed. A planned process is typically executed many times, and many digital twin processes can reference a single planned process, as shown in Figure 21.

Twin Model
Key

1 Planned process, with process steps and models of as-planned results

2 Digital twin processes for many machining runs

3 Digital twin models for as-machined results

4 Link from twin process element to planned process element

Figure 21 — Planned and twin processes

A twin process follows the same structure as a planned process. The root is a Manufacturing_Project application object, which refers to a Workplan as its main workplan. A twin process shall set the twin_start to a value in the main workplan and all children Executables. A planned process shall not set the twin_start to any value in the main workplan and all children Executables.

An Executable within a twin process may set the twin_source and twin_exception parameters to describe whether it was machined or simulated, and whether it completed sucessfully. The Executable may may set the twin_plan parameter to identify the Executable within a planned process that was machined or simulated. If an Executable within a twin process was not planned before execution, the twin_plan parameter shall not be set.

EXAMPLE 1 An unplanned operation may not originate in a CAM system. A workpiece may be delivered by a supplier, stored in a warehouse and cut to size before CAM-planned operations begin. Operations like ordering and pre-cutting are not described in CAM because they are not executed by a machine control, but recording them in the results data may be important if the part fails in the field. The Extended_operation can describe operations for which there is no STEP-NC definition, with details determined by the enterprise.

An Executable within a twin process shall describe information gathered from simulating or executing a manufacturing task. Because the amount of information available may vary, a twin process may only give a summary description for an entire workplan or may include a detailed description for some, but not all, workingsteps in a process. Figure 22 shows twin processes at different levels of detail.

EXAMPLE 2 A simple twin process may include a “twin” for the main workplan with as-is and to-be geometry, but nothing else. A more detailed twin process may include "twins" for each workingsteps, with as-machined toolpaths constructed from MTconnect data.

Twin Details
Key

1 Simple twin process with as-machined model for entire workplan

2 Planned process

3 Detailed twin process with as-machined model for individual workingstep

Figure 22 — Detail levels of twin processes

Any application object parameter that is required but not set in a twin process shall be interpreted to have the value set in the as-planned process.

EXAMPLE 3 When interpreting a twin process, if the operation of a workingstep is not set, the operation of the twin_plan executable is used. Similarly, if the tool_diameter of the twin process is not set, then the tool_diameter found through the twin_plan executable is used.

5.2.3 Model based integrated manufacturing types

5.2.3.1 Model based integrated manufacturing type definitions

5.2.3.1.1 mbmfg_approval_item

The mbmfg_approval_item type is an extension of the approval_item type. It adds the data types product, product_definition, and product_definition_formation to which an approval can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_approval_item = SELECT BASED_ON approval_item WITH  (
        product,
        product_definition,
        product_definition_formation
        );
END_TYPE; 
(*
5.2.3.1.2 mbmfg_classification_item

The mbmfg_classification_item type is an extension of the classification_item type. It adds the data type externally_defined_representation_with_parameters to which a group can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_classification_item = SELECT BASED_ON classification_item WITH (
        externally_defined_representation_with_parameters
        );
END_TYPE;
(*
5.2.3.1.3 mbmfg_date_and_time_item

The mbmfg_date_and_time_item type is an extension of the date_and_time_item type. It adds the data types machining_operation, machining_process_executable, machining_toolpath, product, product_definition, and product_definition_formation to which a referenced date_and_time can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_date_and_time_item = SELECT BASED_ON date_and_time_item WITH (
	machining_operation,
	machining_process_executable,
	machining_toolpath,
        product,
	product_definition,
	product_definition_formation
        );
END_TYPE;
(*
5.2.3.1.4 mbmfg_date_item

The mbmfg_date_item type is an extension of the date_item type. It adds the data types product, product_definition, and product_definition_formation to which a referenced date can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_date_item = SELECT BASED_ON date_item WITH (
        product,
        product_definition,
        product_definition_formation
        );
END_TYPE;
(*
5.2.3.1.5 mbmfg_organization_item

The mbmfg_organization_item type is an extension of the organization_item type. It adds the data types product, product_definition, and product_definition_formation to which a referenced organization can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_organization_item = SELECT BASED_ON organization_item WITH (
        product,
        product_definition,
        product_definition_formation
        );
END_TYPE;
(*
5.2.3.1.6 mbmfg_person_and_organization_item

The mbmfg_person_and_organization_item type is an extension of the person_and_organization_item type. It adds the data types product, product_definition, and product_definition_formation to which a referenced person_and_organization can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_person_and_organization_item = SELECT BASED_ON person_and_organization_item WITH (
        product,
        product_definition,
        product_definition_formation
        );
END_TYPE; 
(*
5.2.3.1.7 mbmfg_presented_item_select

The mbmfg_presented_item_select type is an extension of the presented_item_select type. It adds the data types action, action_method, action_relationship, product_concept, product_concept_feature, product_concept_feature_category, product_definition, product_definition_formation, and product_definition_relationship to which a referenced presented_item can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_presented_item_select = SELECT BASED_ON presented_item_select WITH (
	action,
	action_method,
	action_relationship,
	product_concept,
	product_concept_feature,
	product_concept_feature_category,
	product_definition,
	product_definition_formation,
	product_definition_relationship
	);
END_TYPE;
(*
5.2.3.1.8 mbmfg_security_classification_item

The mbmfg_security_classification_item type is an extension of the security_classification_item type. It adds the data types machining_operation, machining_process_executable, machining_toolpath, product_definition, and product_definition_formation to which a referenced security_classification can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_security_classification_item = SELECT BASED_ON security_classification_item WITH (
	machining_operation,
	machining_process_executable,
	machining_toolpath,
	product_definition,
	product_definition_formation
        );
END_TYPE;
(*
5.2.3.1.9 mbmfg_action_method_items

The mbmfg_action_method_items type is an extension of the action_method_items type. It adds the data types characterized_object, dimensional_location, dimensional_size, geometric_tolerance, machining_cutting_component, machining_execution_resource, machining_tool, product_definition, product_definition_formation, and shape_aspect to which a referenced action_method can be assigned.

EXPRESS specification:
*)
TYPE mbmfg_action_method_items = SELECT BASED_ON action_method_items WITH (
	characterized_object,		-- feature, old and new style
	dimensional_location,
	dimensional_size,
	geometric_tolerance,
	machining_cutting_component,
	machining_execution_resource,
	machining_tool,
	product_definition,		-- workpiece, setup
	product_definition_formation,	-- project
	shape_aspect			-- feature, transitions
	);
END_TYPE;
(*

5.2.4 Model based integrated manufacturing entities

5.2.4.1 Model based integrated manufacturing entity definitions

5.2.4.1.1 additive_manufacturing_atom

An additive_manufacturing_atom is a type of shape_aspect that that identifies a material spatial characteristic for an additive manufacturing feature. See the ARM definitions for Am_heterogenuous_atom in ISO 14649-17 for more information.

EXPRESS specification:
*)
ENTITY additive_manufacturing_atom
   SUBTYPE OF (shape_aspect);
END_ENTITY;
(*
5.2.4.1.2 additive_manufacturing_construction

An additive_manufacturing_construction is a type of shape_aspect that that describes material volumetric layout for an additive manufacturing feature. See the ARM definitions for Am_construction and subtypes in ISO 14649-17 for more information.

EXPRESS specification:
*)
ENTITY additive_manufacturing_construction
   SUBTYPE OF (shape_aspect);
END_ENTITY;
(*
5.2.4.1.3 additive_manufacturing_feature

An additive_manufacturing_feature is a type of feature_definition that that identifies a volume of material that shall be added to obtain the final part geometry from the initial stock. See the ARM definitions for Am_feature and subtypes in ISO 14649-17 for more information.

EXPRESS specification:
*)
ENTITY additive_manufacturing_feature
   SUBTYPE OF (feature_definition);
END_ENTITY;
(*
5.2.4.1.4 additive_type_operation

An additive_type_operation is a type of machining_operation that represents the details of an additive manufacturing step of a machining process. See the ARM definitions for Am_operation and subtypes in ISO 14649-17 for more information.

EXPRESS specification:
*)
ENTITY additive_type_operation
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  (SELF.description IN ['oned','twod']);
END_ENTITY;
(*
Formal propositions:

WR1: The description of the additive_type_operation shall be either 'oned' or 'twod'.

5.2.4.1.5 back_boring_operation

A back_boring_operation is a type of drilling_type_operation that represents the details of a machining step in which in a tool passes through an existing hole in the workpiece and enlarges the hole from the back of the workpiece. See the ARM definition for Back_boring_operation in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY back_boring_operation
  SUBTYPE OF (drilling_type_operation);
  WHERE
  WR1:  (0 = SIZEOF (QUERY (amr <* get_relating_amr (SELF) |
           ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
              IN TYPEOF (amr)) AND NOT
           (verify_required_action_property
                (amr.related_method, 'oriented spindle stop')))));
END_ENTITY;
(*
Formal propositions:

WR1: All instances of machining_functions_relationship in which the back_boring_operation is the relating_method shall have a related_method which is the definition of exactly one action_property with a name of 'oriented spindle stop'.

NOTE This corresponds to local constraint WR1 on ARM entity Back_boring in ISO 14649-11.

5.2.4.1.6 block_shape_representation

A block_shape_representation specifies the representation of a shape that is a rectangular volume defined as a rectangular area of a defined length. The enclosed area shall be as defined by four straight sides with opposite sides equal in length.

NOTE This definition has been harmonized with the equivalent definition in ISO 10303-224.

EXPRESS specification:
*)
ENTITY block_shape_representation
  SUBTYPE OF (shape_representation_with_parameters);
  WHERE
    WR1: (SIZEOF(SELF.items) = 4);
    WR2: (SIZEOF(QUERY ( it <* SELF.items |
         (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT'
         IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1);
    WR3: (SIZEOF(QUERY ( it <* SELF.items |
         ((SIZEOF(
         ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
          TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1);
    WR4: (SIZEOF(QUERY ( it <* SELF.items |
         ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
         TYPEOF(it)) = 2) AND (it.name = 'width')) )) = 1);
    WR5: (SIZEOF(QUERY ( it <* SELF.items |
         ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
         TYPEOF(it)) = 2) AND (it.name = 'height')) )) = 1);
END_ENTITY; -- block_shape_representation
(*
Formal propositions:

WR1: The block_shape_representation shall contain exactly four representation_items in its set of items.

WR2: One of the representation_items used for the implicit representation of a block_shape_representation shall be of type placement with a name of 'orientation'.

WR3: One of the representation_items used for the implicit representation of a block_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'length'.

WR4: One of the representation_items used for the implicit representation of a block_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'width'.

WR5: One of the representation_items used for the implicit representation of a block_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'height'.

Informal propositions:

IP1: The block_shape_representation shall be defined at the centre of the rectangular area in the X-Y plane with the width of the rectangle in the X direction, the height of the rectangle in the Y direction, and the length of the rectangle in the Z direction.

5.2.4.1.7 boring_operation

A boring_operation is a type of drilling_type_operation that represents the details of a drilling step in which in an existing hole is enlarged. See the ARM definitions for Boring_operation, Boring, and Reaming in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY boring_operation
  SUBTYPE OF (drilling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['boring','reaming']);

  WR2:  (verify_optional_action_property        (SELF, 'spindle stop')) AND
        (verify_enumeration_action_property     (SELF, 'spindle stop',
         ['spindle stop at bottom', 'spindle nonstop']));

  WR3:  (verify_optional_action_property        (SELF, 'testcut depth')) AND
        (verify_length_measure_action_property  (SELF, 'testcut depth'));

  WR4:  (verify_optional_action_property        (SELF, 'waiting position')) AND
        (verify_rep_item_for_action_property    (SELF, 'waiting position',
         ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT']));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the boring_operation shall be either 'boring' or 'reaming'.

WR2: The boring_operation shall be the definition of at most one action_property with a name of 'spindle stop', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of either 'spindle stop at bottom' or 'spindle nonstop'.

WR3: The boring_operation shall be the definition of at most one action_property with a name of 'testcut depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: The boring_operation shall be the definition of at most one action_property with a name of 'waiting position', and the representation used to describe the action_property shall contain a representation_item of type cartesian_point.

5.2.4.1.8 bottom_and_side_milling_operation

A bottom_and_side_milling_operation is a milling_type_operation that represents a 2.5D milling step in which material is removed both parallel and perpendicular to the cutting tool axis. See the ARM definitions for Bottom_and_side_milling_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY bottom_and_side_milling_operation
  SUBTYPE OF (milling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property   (SELF, 'axial cutting depth')) AND
        (verify_length_measure_action_property (SELF, 'axial cutting depth'));

  WR3:  (verify_optional_action_property   (SELF, 'radial cutting depth')) AND
        (verify_length_measure_action_property (SELF, 'radial cutting depth'));

  WR4:  (verify_optional_action_property        (SELF, 'allowance side')) AND
        (verify_length_measure_action_property  (SELF, 'allowance side'));

  WR5:  (verify_optional_action_property        (SELF, 'allowance bottom')) AND
        (verify_length_measure_action_property  (SELF, 'allowance bottom'));

  WR6:  NOT (SELF.description = 'roughing') OR
        ((verify_required_action_property (SELF, 'allowance side')) AND
         (verify_required_action_property (SELF, 'allowance bottom')));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the bottom_and_side_milling_operation shall be either 'roughing' or 'finishing'.

WR2: The bottom_and_side_milling_operation shall be the definition of at most one action_property with a name of 'axial cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: The bottom_and_side_milling_operation shall be the definition of at most one action_property with a name of 'radial cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: The bottom_and_side_milling_operation shall be the definition of at most one action_property with a name of 'allowance side', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR5: The bottom_and_side_milling_operation shall be the definition of at most one action_property with a name of 'allowance bottom', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR6: If the description of the bottom_and_side_milling_operation is 'roughing', the bottom_and_side_milling_operation shall be the definition of exactly one action_property with a name of 'allowance side' and exactly one action_property with a name of 'allowance bottom'.

NOTE This corresponds to local constraints WR1 and WR2 on the ARM entity Bottom_and_side_rough_milling in ISO 14649-11.

5.2.4.1.9 contouring_turning_operation

A contouring_turning_operation is a turning_type_operation. See the ARM definitions for Contouring and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY contouring_turning_operation
  SUBTYPE OF (turning_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property        (SELF, 'allowance')) AND
        (verify_length_measure_action_property  (SELF, 'allowance'));

  WR3:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance'));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the contouring_turning_operation shall be either 'roughing' or 'finishing'.

WR2: The contouring_turning_operation shall be the definition of at most one action_property with a name of 'allowance', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: If the description of the contouring_turning_operation is 'roughing', the contouring_turning_operation shall be the definition of exactly one action_property with a name of 'allowance'.

NOTE This corresponds to local constraints WR1 on the ARM entity Contouring_rough in ISO 14649-12.

5.2.4.1.10 cylindrical_shape_representation

A cylindrical_shape_representation specifies representation of a shape that is a cylindrical volume defined as a circular area of a defined length. The enclosed area shall be as defined by a circle with a specified radius.

NOTE This definition has been harmonized with the equivalent definition in ISO 10303-224.

EXPRESS specification:
*)
ENTITY cylindrical_shape_representation
  SUBTYPE OF (shape_representation_with_parameters);
  WHERE
    WR1: (SIZEOF(SELF.items) = 3);
    WR2: (SIZEOF(QUERY ( it <* SELF.items | ((
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT'
         IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1);
    WR3: (SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
          TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1);
    WR4: (SIZEOF(QUERY ( it <* SELF.items | ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
          TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) = 1);
END_ENTITY; -- cylindrical_shape_representation
(*
Formal propositions:

WR1: The cylindrical_shape_representation shall contain exactly three representation_items in its set of items.

WR2: One of the representation_items used for the implicit representation of a cylindrical_shape_representation shall be of type placement with a name of 'orientation'.

WR3: One of the representation_items used for the implicit representation of a cylindrical_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'length'.

WR4: One of the representation_items used for the implicit representation of a cylindrical_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'diameter'.

Informal propositions:

IP1: The location of the cylindrical_shape_representation shall be defined to be at the centre of the circle that defines the cylinder.

IP2: The cylindrical_shape_representation shall be definied by forming a circular profile in the X-Y plane, and the length along the z direction.

5.2.4.1.11 drilling_operation

A drilling_operation is a type of drilling_type_operation that represents the details of a machining step in which in which material is removed perpendicular to the cutting tool axis. See the ARM definitions for Drilling_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY drilling_operation
  SUBTYPE OF (drilling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['drilling','counter sinking',
         'center drilling', 'multistep drilling']);

  WR2:  NOT (SELF.description = 'multistep drilling') OR
        ((verify_required_action_property       (SELF, 'retract distance')) AND
         (verify_length_measure_action_property (SELF, 'retract distance')) AND

         (verify_required_action_property       (SELF, 'first depth')) AND
         (verify_length_measure_action_property (SELF, 'first depth')) AND

         (verify_required_action_property       (SELF, 'depth of step')) AND
         (verify_length_measure_action_property (SELF, 'depth of step')) AND

         (verify_optional_action_property       (SELF, 'dwell time step')) AND
         (verify_rep_type_for_action_property   (SELF, 'dwell time step',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property   (SELF, 'dwell time step',
           ['dwell time']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The description of the drilling_operation shall be either 'drilling','counter sinking', 'center drilling', or 'multistep drilling'.

WR2: If the description of the drilling_operation is 'multistep drilling', drilling_operation shall satisfy the following conditions:

5.2.4.1.12 drilling_type_operation

A drilling_type_operation is a type of machining_operation that represents the details of a machining step in which the machine axes are generally only moved parallel to the axis of rotation of the cutting tool. See the ARM definitions for Drilling_type_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY drilling_type_operation
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  (verify_optional_action_property        (SELF, 'overcut length')) AND
        (verify_length_measure_action_property  (SELF, 'overcut length'));

  WR2:  (verify_optional_action_property        (SELF, 'cutting depth')) AND
        (verify_length_measure_action_property  (SELF, 'cutting depth'));

  WR3:  (verify_optional_action_property        (SELF, 'previous diameter')) AND
        (verify_length_measure_action_property  (SELF, 'previous diameter'));

  WR4:  (verify_optional_action_property        (SELF, 'dwell time bottom')) AND
        (verify_rep_type_for_action_property    (SELF, 'dwell time bottom',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property    (SELF, 'dwell time bottom',
           ['dwell time']));

  WR5:  (verify_optional_action_property        (SELF, 'feedrate on retract')) AND
        (verify_rep_type_for_action_property    (SELF, 'feedrate on retract',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property    (SELF, 'feedrate on retract',
           ['relative speed']));

  WR6:  ((verify_optional_relating_amr_with_name  (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DRILLING_TYPE_STRATEGY']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The drilling_type_operation shall be the definition of at most one action_property with a name of 'overcut length', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR2: The drilling_type_operation shall be the definition of at most one action_property with a name of 'cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: The drilling_type_operation shall be the definition of at most one action_property with a name of 'previous diameter', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: The drilling_type_operation shall be the definition of at most one action_property with a name of 'dwell time bottom', and the representation used to describe the action_property shall be of type machining_dwell_time_representation with a description of 'dwell time'.

WR5: The drilling_type_operation shall be the definition of at most one action_property with a name of 'feedrate on retract', and the representation used to describe the action_property shall be of type machining_feed_speed_representation with a description of 'relative speed'.

WR6: The drilling_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'machining', in which the related_method shall be of type drilling_type_strategy.

5.2.4.1.13 drilling_type_strategy

A drilling_type_strategy is a type of machining_strategy that represents the approach used to determine the motion of the cutting tool during a drilling operation. See the ARM definition for Drilling_type_strategy in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY drilling_type_strategy
  SUBTYPE OF (machining_strategy);
  WHERE
  WR1:  (verify_optional_action_property  (SELF, 'reduced cut at start')) AND
        (verify_rep_type_for_action_property(SELF, 'reduced cut at start',
       ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property(SELF, 'reduced cut at start',
           ['relative speed']));

  WR2:  (verify_optional_action_property(SELF, 'reduced feedrate at start')) AND
      (verify_rep_type_for_action_property(SELF, 'reduced feedrate at start',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property(SELF, 'reduced feedrate at start',
           ['relative speed']));

  WR3:  (verify_optional_action_property        (SELF, 'depth of start')) AND
        (verify_length_measure_action_property  (SELF, 'depth of start'));

  WR4:  (verify_optional_action_property (SELF, 'reduced cut at end')) AND
        (verify_rep_type_for_action_property  (SELF, 'reduced cut at end',
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property  (SELF, 'reduced cut at end',
           ['relative speed']));

  WR5:  (verify_optional_action_property  (SELF, 'reduced feedrate at end')) AND
        (verify_rep_type_for_action_property(SELF, 'reduced feedrate at end',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
        (verify_rep_name_for_action_property(SELF, 'reduced feedrate at end',
           ['relative speed']));

  WR6:  (verify_optional_action_property        (SELF, 'depth of end')) AND
        (verify_length_measure_action_property  (SELF, 'depth of end'));

  WR7:  (verify_required_action_property (SELF, 'depth of start')) OR
     ((0 = SIZEOF (get_action_property (SELF, 'reduced cut at start'))) AND
      (0 = SIZEOF (get_action_property (SELF, 'reduced feedrate at start'))));

  WR8:  (verify_required_action_property (SELF, 'depth of end')) OR
     ((0 = SIZEOF (get_action_property (SELF, 'reduced cut at end'))) AND
      (0 = SIZEOF (get_action_property (SELF, 'reduced feedrate at end'))));
END_ENTITY;
(*
Formal propositions:

WR1: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'reduced cut at start', and the representation used to describe the action_property shall be of type machining_spindle_speed_representation with a description of 'relative speed'.

WR2: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'reduced feedrate at start', and the representation used to describe the action_property shall be of type machining_feed_speed_representation with a description of 'relative speed'.

WR3: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'depth of start', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'reduced cut at end', and the representation used to describe the action_property shall be of type machining_spindle_speed_representation with a description of 'relative speed'.

WR5: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'reduced feedrate at end', and the representation used to describe the action_property shall be of type machining_feed_speed_representation with a description of 'relative speed'.

WR6: The drilling_type_strategy shall be the definition of at most one action_property with a name of 'depth of end', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR7: Either the drilling_type_strategy shall be the definition of exactly one action_property with a name of 'depth of start', or the drilling_type_strategy shall be the definition of no action_properties with a name of either 'reduced cut at start' or 'reduced feedrate at start'.

NOTE This corresponds to local constraint WR1 on ARM entity Drilling_type_strategy in ISO 14649-11.

WR8: Either the drilling_type_strategy shall be the definition of exactly one action_property with a name of 'depth of end', or the drilling_type_strategy shall be the definition of no action_properties with a name of either 'reduced cut at end' or 'reduced feedrate at end'.

NOTE This corresponds to local constraint WR2 on ARM entity Drilling_type_strategy in ISO 14649-11.

5.2.4.1.14 expression_representation_item

An expression_representation_item is a representation_item and generic_expression where a particular expression value is represented.

NOTEThis definition is no longer used but has been retained for compatibility with data sets created under previous editions. All mapping specifications have been changed to use the expression_item_representation_item definition in ISO 10303-61.

EXPRESS specification:
*)
ENTITY expression_representation_item
  SUBTYPE OF (representation_item, generic_expression);
END_ENTITY;
(*
5.2.4.1.15 extended_type_operation

An extended_type_operation is a type of machining_operation that represents the details of a manufacturing step of a machining process that is not described by other capabilities of this document.

EXPRESS specification:
*)
ENTITY extended_type_operation
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  EXISTS (self.description);
END_ENTITY;
(*
Formal propositions:

WR1: The description of the extended_type_operation shall have a value.

5.2.4.1.16 externally_defined_representation_with_parameters

An externally_defined_representation_with_parameters is a type of representation that defines placement and orientation for an external reference.

NOTE This definition has been harmonized with the equivalent definitions in ISO 10303-224 and ISO 10303-240.

EXPRESS specification:
*)
ENTITY externally_defined_representation_with_parameters
  SUBTYPE OF (representation);
  WHERE
  WR1: (SIZEOF(USEDIN(SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
        'APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1);

  WR2: (SIZEOF (QUERY(adr <* SELF.items|
        'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT' IN TYPEOF(adr))) <=1);
END_ENTITY;
(*
Formal propositions:

WR1: The externally_defined_representation_with_parameters shall be referenced by the items set of exactly one applied_classification_assignment.

WR2: The externally_defined_representation_with_parameters items set shall contain at most one placement instance.

5.2.4.1.17 facing_turning_operation

A facing_turning_operation is a turning_type_operation. See the ARM definitions for Facing and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY facing_turning_operation
  SUBTYPE OF (turning_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property        (SELF, 'allowance')) AND
        (verify_length_measure_action_property  (SELF, 'allowance'));

  WR3:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance'));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the facing_turning_operation shall be either 'roughing' or 'finishing'.

WR2: The facing_turning_operation shall be the definition of at most one action_property with a name of 'allowance', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: If the description of the facing_turning_operation is 'cutting in', the facing_turning_operation shall be the definition of exactly one action_property with a name of 'allowance'.

NOTE This corresponds to local constraints WR1 on the ARM entity Facing_rough in ISO 14649-12.

5.2.4.1.18 freeform_milling_operation

A freeform_milling_operation is a milling_type_operation that describes a milling step in which material is removed to create freeform surface geometry. See the ARM definition for Freeform_milling_operation in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY freeform_milling_operation
  SUBTYPE OF (milling_type_operation);
  WHERE
  WR1:  ((verify_optional_relating_amr_with_name  (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREEFORM_MILLING_STRATEGY']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The freeform_milling_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'machining', in which the related_method shall be of type freeform_milling_strategy.

5.2.4.1.19 freeform_milling_strategy

A freeform_milling_strategy is a type of milling_type_strategy that represents the approach used to determine the motion of the cutting tool during a freeform milling operation. See the ARM definitions for Freeform_strategy and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY freeform_milling_strategy
  SUBTYPE OF (milling_type_strategy);
  WHERE
  WR1:  NOT (SELF.description IN ['leading line', 'plane cutter contact',
          'plane cutter location', 'uv']) OR
        ((verify_required_action_property       (SELF, 'pathmode')) AND
         (verify_enumeration_action_property    (SELF, 'pathmode',
           ['forward', 'zigzag'])) AND

         (verify_required_action_property       (SELF, 'cutmode')) AND
         (verify_enumeration_action_property    (SELF, 'cutmode',
           ['climb', 'conventional'])) AND

         (verify_required_action_property    (SELF, 'milling tolerances')) AND
         (verify_rep_type_for_action_property(SELF, 'milling tolerances',
      ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FREEFORM_MILLING_TOLERANCE_REPRESENTATION'])) AND

         (verify_optional_action_property       (SELF, 'stepover length')) AND
         (verify_length_measure_action_property (SELF, 'stepover length')) );

  WR2:  NOT (SELF.description = 'leading line') OR
        ((verify_required_action_property       (SELF, 'leading line')) AND
         (verify_rep_item_for_action_property   (SELF, 'leading line',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) );

  WR3:  NOT (SELF.description IN ['plane cutter contact',
         'plane cutter location']) OR
        ((verify_required_action_property       (SELF, 'plane normal')) AND
         (verify_rep_item_for_action_property   (SELF, 'plane normal',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) );

  WR4:  NOT (SELF.description = 'uv') OR
        ((verify_required_action_property       (SELF, 'forward direction')) AND
         (verify_rep_item_for_action_property   (SELF, 'forward direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

       (verify_required_action_property       (SELF, 'sideward direction')) AND
       (verify_rep_item_for_action_property   (SELF, 'sideward direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) );
END_ENTITY;
(*
Formal propositions:

WR1: If the description of the freeform_milling_strategy is either 'leading line', 'plane cutter contact', 'plane cutter location', or 'uv', the freeform_milling_strategy shall satisfy the following conditions:

WR2: If the description of the freeform_milling_strategy is 'leading line', the freeform_milling_strategy shall be the definition of exactly one action_property with a name of 'leading line', and the representation used to describe the action_property shall contain a representation_item of type bounded_curve.

WR3: If the description of the freeform_milling_strategy is either 'plane cutter contact' or 'plane cutter location', the freeform_milling_strategy shall be the definition of exactly one action_property with a name of 'plane normal', and the representation used to describe the action_property shall contain a representation_item of type direction.

WR4: If the description of the freeform_milling_strategy is 'uv', the freeform_milling_strategy shall satisfy the following conditions:

5.2.4.1.20 freeform_milling_tolerance_representation

A freeform_milling_tolerance_representation is a type of representation that represents surface approximation tolerance parameters for freeform machining. See the ARM definition for Tolerances in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY freeform_milling_tolerance_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:   (verify_required_rep_item       (SELF, 'chordal tolerance')) AND
         (verify_length_measure_rep_item (SELF, 'chordal tolerance'));

  WR2:   (verify_required_rep_item       (SELF, 'scallop height')) AND
         (verify_length_measure_rep_item (SELF, 'scallop height'));
END_ENTITY;
(*
Formal propositions:

WR1: The items set shall contain exactly one representation_item with a name of 'chordal tolerance', which shall be of type measure_representation_item and length_measure_with_unit .

WR2: The items set shall contain exactly one representation_item with a name of 'scallop height', which shall be of type measure_representation_item and length_measure_with_unit .

5.2.4.1.21 grooving_turning_operation

A grooving_turning_operation is a turning_type_operation. See the ARM definitions for Grooving and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY grooving_turning_operation
  SUBTYPE OF (turning_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing', 'finishing', 'cutting in']);

  WR2:  (verify_optional_action_property     (SELF, 'dwell')) AND
        (verify_rep_type_for_action_property (SELF, 'dwell',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION']));

  WR3:  (verify_optional_action_property        (SELF, 'allowance')) AND
        (verify_length_measure_action_property  (SELF, 'allowance'));

  -- allowance propery required for roughing
  WR4:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance'));

  -- allowance propery forbidden for cutting in
  WR5:  NOT (SELF.description = 'cutting in') OR
        (0 = SIZEOF (get_action_property (SELF, 'allowance')));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the grooving_turning_operation shall be either 'roughing', 'finishing' or 'cutting in'.

WR2: The grooving_turning_operation shall be the definition of at most one action_property with a name of 'dwell', and the representation used to describe the action_property shall be of type turning_dwell_time_representation.

WR3: The grooving_turning_operation shall be the definition of at most one action_property with a name of 'allowance', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: If the description of the grooving_turning_operation is 'roughing', the grooving_turning_operation shall be the definition of exactly one action_property with a name of 'allowance'.

NOTE This corresponds to local constraints WR1 on the ARM entity Grooving_rough in ISO 14649-12.

WR5: If the description of the grooving_turning_operation is 'cutting in', the grooving_turning_operation shall be the definition of no action_property with a name of 'allowance'.

NOTE This corresponds to local constraints WR1 on the ARM entity Cutting_in in ISO 14649-12.

5.2.4.1.22 knurling_turning_operation

A knurling_turning_operation is a turning_type_operation. See the ARM definitions for Knurling in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY knurling_turning_operation
  SUBTYPE OF (turning_type_operation);
END_ENTITY;
(*
5.2.4.1.23 machining_adaptive_control_relationship

A machining_adaptive_control_relationship is a type of action_method_relationship that represents the use of an Adaptive_control description in some context. See the ARM definitions for the Technology subtypes in ISO 14649-11 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_adaptive_control_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.24 machining_approach_retract_strategy

A machining_approach_retract_strategy is a type of machining_strategy that represents the manner in which a cutting tool approaches the workpiece at the beginning of a machining process step or retracts from the workpiece at the end of a machining process step. See the ARM definitions for Approach_retract_strategy and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY machining_approach_retract_strategy
  SUBTYPE OF (machining_strategy);
  WHERE
  WR1:  (SELF.description IN ['along path',
         'approach retract angle', 'approach retract tangent',
         'plunge helix', 'plunge ramp', 'plunge toolaxis',
         'plunge zigzag']);

  WR2:  (verify_optional_action_property       (SELF, 'tool orientation')) AND
        (verify_rep_item_for_action_property   (SELF, 'tool orientation',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION']));

  WR3:  NOT (SELF.description = 'along path') OR
        ((1 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH']))
        );

  WR4:  NOT (SELF.description = 'approach retract angle') OR
        ((verify_required_action_property       (SELF, 'travel angle')) AND
         (verify_angle_measure_action_property  (SELF, 'travel angle')) AND

         (verify_required_action_property       (SELF, 'travel length')) AND
         (verify_length_measure_action_property (SELF, 'travel length')));

  WR5:  NOT (SELF.description = 'approach retract tangent') OR
        ((verify_required_action_property       (SELF, 'travel radius')) AND
         (verify_length_measure_action_property (SELF, 'travel radius')));

  WR6:  NOT (SELF.description IN ['plunge helix', 'plunge ramp', 'plunge zigzag']) OR
        ((verify_required_action_property       (SELF, 'plunge angle')) AND
         (verify_angle_measure_action_property  (SELF, 'plunge angle')));

  WR7:  NOT (SELF.description = 'plunge helix') OR
        ((verify_required_action_property       (SELF, 'plunge radius')) AND
         (verify_length_measure_action_property (SELF, 'plunge radius')));

  WR8:  NOT (SELF.description = 'plunge zigzag') OR
        ((verify_required_action_property       (SELF, 'plunge width')) AND
         (verify_length_measure_action_property (SELF, 'plunge width')));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the machining_approach_retract_strategy shall be either 'along path', 'approach retract angle', 'approach retract tangent', 'plunge helix', 'plunge ramp', 'plunge toolaxis', or 'plunge zigzag'.

WR2: The machining_approach_retract_strategy shall be the definition of at most one action_property with a name of 'tool orientation', and the representation used to describe the action_property shall contain a representation_item of type direction.

WR3: If the description of the machining_approach_retract_strategy is 'along path', the machining_approach_retract_strategy shall be the relating_method of at least one machining_toolpath_sequence_relationship, in which related_method is of type machining_toolpath.

WR4: If the description of the machining_approach_retract_strategy is 'approach retract angle', the machining_approach_retract_strategy shall satisfy the following conditions:

WR5: If the description of the machining_approach_retract_strategy is 'approach retract tangent', the machining_approach_retract_strategy shall be the definition of exactly one action_property with a name of 'travel radius', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR6: If the description of the machining_approach_retract_strategy is either 'plunge helix', 'plunge ramp', or 'plunge zigzag', the machining_approach_retract_strategy shall be the definition of exactly one action_property with a name of 'plunge angle', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and plane_angle_measure_with_unit.

WR7: If the description of the machining_approach_retract_strategy is 'plunge helix', the machining_approach_retract_strategy shall be the definition of exactly one action_property with a name of 'plunge radius', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR8: If the description of the machining_approach_retract_strategy is 'plunge zigzag', the machining_approach_retract_strategy shall be the definition of exactly one action_property with a name of 'plunge width', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

5.2.4.1.25 machining_cutting_component

A machining_cutting_component is a type of action_resource and characterized_object that represents the cutting edge characteristics of a tool for machining. See the ARM definitions for Cutting_component in ISO 14649-111 and Cutting_edge_properties in ISO 14649-121 for more information.

EXPRESS specification:
*)
ENTITY machining_cutting_component
  SUBTYPE OF (action_resource,characterized_object);
  WHERE
  WR1:  (1 >= SIZEOF (USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
           'MATERIAL_DESIGNATION.DEFINITIONS')));

  WR2:  (1 >= SIZEOF (QUERY (arr <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES') |
          (arr.kind.name = 'cutting component') AND
          (0 < SIZEOF (QUERY (mt <* arr.operations |
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY' IN TYPEOF (mt))))
        )));

  WR3:  (verify_optional_resource_property     (SELF, 'expected life')) AND
        (verify_time_measure_resource_property (SELF, 'expected life'));


  WR4:  NOT (SELF.kind.name = 'milling cutting edge') OR
        ((verify_required_resource_property
           (SELF, 'functional length')) AND
         (verify_length_measure_resource_property
           (SELF, 'functional length'))
        );

  WR5:  NOT (SELF.kind.name = 'turning cutting edge') OR
        ((verify_optional_resource_property
           (SELF, 'cutting edge length')) AND
         (verify_length_measure_resource_property
           (SELF, 'cutting edge length')) AND

         (verify_optional_resource_property
           (SELF, 'cutting edge angle')) AND
         (verify_angle_measure_resource_property
           (SELF, 'cutting edge angle')) AND

         (verify_optional_resource_property
           (SELF, 'cutting edge angle type')) AND
         (verify_rep_item_for_resource_property
           (SELF, 'cutting edge angle type',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'])) AND

         (verify_optional_resource_property
           (SELF, 'tool included angle')) AND
         (verify_angle_measure_resource_property
           (SELF, 'tool included angle')) AND

         (verify_rep_type_for_resource_property
           (SELF, 'corner transitions',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
            'MACHINING_CUTTING_CORNER_REPRESENTATION'])) AND

         (verify_optional_resource_property
           (SELF, 'maximum side cutting depth')) AND
         (verify_length_measure_resource_property
           (SELF, 'maximum side cutting depth')) AND

         (verify_optional_resource_property
           (SELF, 'maximum end cutting depth')) AND
         (verify_length_measure_resource_property
           (SELF, 'maximum end cutting depth'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The machining_cutting_component appears in the set of definitions of at most one material_designation.

WR2: The machining_cutting_component appears in the set of resources in at least one action_resource_requirement in which the resource_requirement_type has a name of 'cutting component' and the set of operations contains exactly one machining_technology

WR3: The machining_cutting_component is the resource of at most one resource_property with a name of 'expected life', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item and time_measure_with_unit.

WR4: If the kind of the machining_cutting_component is an action_resource_type with a name of 'milling cutting edge', the machining_cutting_component shall satisfy the following conditions:

WR5: If the kind of the machining_cutting_component is an action_resource_type with a name of 'turning cutting edge', the machining_cutting_component shall satisfy the following conditions:

5.2.4.1.26 machining_cutting_corner_representation

A machining_cutting_corner_representation is a type of representation that represents the corner transitions of a cutting edge of a tool for machining. See the ARM definition for Corner_transition in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_cutting_corner_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  ((verify_required_rep_item       (SELF, 'corner identity')) AND
         (verify_count_measure_rep_item  (SELF, 'corner identity'))
        );

  WR2:  NOT (SELF.name = 'chamfered corner') OR
        ((verify_required_rep_item       (SELF, 'chamfer angle')) AND
         (verify_angle_measure_rep_item  (SELF, 'chamfer angle')) AND

         (verify_optional_rep_item       (SELF, 'chamfer length')) AND
         (verify_length_measure_rep_item (SELF, 'chamfer length')) AND

         (verify_optional_rep_item       (SELF, 'chamfer width')) AND
         (verify_length_measure_rep_item (SELF, 'chamfer width'))
        );

  WR3:  NOT (SELF.name = 'rounded corner') OR
        ((verify_required_rep_item       (SELF, 'radius')) AND
         (verify_length_measure_rep_item (SELF, 'radius'))
        );

  WR4:  NOT (SELF.name = 'profiled corner') OR
        (1 = SIZEOF (QUERY (prep <* USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
           'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
           (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LINEAR_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.OPEN_PATH_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PARTIAL_CIRCULAR_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ROUNDED_U_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.SQUARE_U_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TEE_PROFILE'
                IN TYPEOF(prep.definition)) OR
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VEE_PROFILE'
                IN TYPEOF(prep.definition)))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The items set shall contain exactly one representation_item with a name of 'corner identity', which shall be of type type measure_representation_item with a value_component of type count_measure.

WR2: If the name of the machining_cutting_corner_representation is 'chamfered corner', the items set shall contain the following items:

WR3: If the name of the machining_cutting_corner_representation is 'rounded corner', the items set shall contain exactly one representation_item with a name of 'radius', which shall be of type measure_representation_item and length_measure_with_unit;

WR4: If the name of the machining_cutting_corner_representation is 'profiled corner', the machining_cutting_corner_representation shall be the used_representation of exactly one property_definition_representation in which the definition refers to a shape_aspect which shall be of type linear_profile, open_path_profile, partial_circular_profile, rounded_u_profile, square_u_profile, tee_profile, or vee_profile.

5.2.4.1.27 machining_dwell_time_representation

A machining_dwell_time_representation is a type of representation that represents the duration of time that a machine tool perfoms some action. The dwell time is described as one of the following:

EXPRESS specification:
*)
ENTITY machining_dwell_time_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  (SELF.name IN ['dwell time', 'dwell revolution']);

  WR2:  NOT (SELF.name = 'dwell time') OR
        ((verify_required_rep_item       (SELF, 'dwell time')) AND
         (verify_time_measure_rep_item   (SELF, 'dwell time'))
        );

  WR3:  NOT (SELF.name = 'dwell revolution') OR
        ((verify_required_rep_item       (SELF, 'dwell revolution')) AND
         (verify_count_measure_rep_item  (SELF, 'dwell revolution'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The name of the machining_dwell_time_representation shall be either 'dwell time' or 'dwell revolution'.

WR2: If the name of the machining_dwell_time_representation is 'dwell time', the items set shall contain exactly one representation_item with a name of 'dwell time', which shall be of type measure_representation_item and time_measure_with_unit.

WR3: If the name of the machining_dwell_time_representation is 'dwell revolution', the items set shall contain exactly one representation_item with a name of 'dwell revolution', which shall be of type measure_representation_item with a value_component of type count_measure.

5.2.4.1.28 machining_execution_resource

A machining_execution_resource is a type of action_resource that represents machine tool capability requirements for machining. See the ARM definition for Machine_parameters for more information.

EXPRESS specification:
*)
ENTITY machining_execution_resource
  SUBTYPE OF (action_resource);
  WHERE
  WR1:  ((verify_optional_resource_property      (SELF, 'feedrate')) AND
         (verify_rep_type_for_resource_property  (SELF, 'feedrate',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])));

  WR2:  ((verify_optional_resource_property     (SELF, 'spindle')) AND
         (verify_rep_type_for_resource_property (SELF, 'spindle',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])));

  WR3:  ((verify_optional_resource_property     (SELF, 'spindle power')) AND
         (verify_rep_item_for_resource_property (SELF, 'spindle power',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'])));

  WR4:  ((verify_optional_resource_property     (SELF, 'spindle torque')) AND
         (verify_rep_item_for_resource_property (SELF, 'spindle torque',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'])));

  WR5:  ((verify_optional_resource_property
           (SELF, 'number of control axis')) AND
         (verify_count_measure_resource_property
           (SELF, 'number of control axis')));

  WR6:  ((verify_optional_resource_property
           (SELF, 'number of simultaneous axis')) AND
         (verify_count_measure_resource_property
           (SELF, 'number of simultaneous axis')));

  WR7:  ((verify_optional_resource_property
           (SELF, 'positioning accuracy')) AND
         (verify_length_measure_resource_property
           (SELF, 'positioning accuracy')));

  WR8:  ((verify_optional_resource_property    (SELF, 'table indexing')) AND
         (verify_enumeration_resource_property (SELF, 'table indexing',
          ['required', 'not required'])));

  WR9:  ((verify_optional_resource_property
           (SELF, 'table length')) AND
         (verify_length_measure_resource_property
           (SELF, 'table length')) AND

         (verify_optional_resource_property
           (SELF, 'table width')) AND
         (verify_length_measure_resource_property
           (SELF, 'table width')));

  WR10:  ((verify_optional_resource_property (SELF, 'axis travel')) AND
         (0 = SIZEOF (QUERY (prop <* get_resource_property
                (SELF, 'axis travel') | NOT
          ((0 < SIZEOF (QUERY (prep <* USEDIN (prop,
            'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |
            (1 <= SIZEOF (QUERY ( it <* prep.representation.items |
                  (SIZEOF([
                   'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
                   'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
                    TYPEOF(it)) = 2))))

                ))))
         ))));

  WR11: ((verify_optional_resource_property
           (SELF, 'work volume length')) AND
         (verify_length_measure_resource_property
           (SELF, 'work volume length')) AND

         (verify_optional_resource_property
           (SELF, 'work volume width')) AND
         (verify_length_measure_resource_property
           (SELF, 'work volume width')) AND

         (verify_optional_resource_property
           (SELF, 'work volume height')) AND
         (verify_length_measure_resource_property
           (SELF, 'work volume height'))
        );

  WR12:  (0 = SIZEOF (get_action_property (SELF, 'axis travel'))) OR
         ((0 = SIZEOF (get_action_property (SELF, 'work volume length'))) AND
          (0 = SIZEOF (get_action_property (SELF, 'work volume width'))) AND
          (0 = SIZEOF (get_action_property (SELF, 'work volume height'))));

END_ENTITY;
(*
Formal propositions:

WR1: The machining_execution_resource is the resource of at most one resource_property with a name of 'feedrate', and the representation used to describe the resource_property shall be of type machining_feed_speed_representation.

WR2: The machining_execution_resource is the resource of at most one resource_property with a name of 'spindle', and the representation used to describe the resource_property shall be of type machining_spindle_speed_representation.

WR3: The machining_execution_resource is the resource of at most one resource_property with a name of 'spindle power', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item.

WR4: The machining_execution_resource is the resource of at most one resource_property with a name of 'spindle torque', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item.

WR5: The machining_execution_resource is the resource of at most one resource_property with a name of 'number of control axis', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item in which the value_component is of type count_measure.

WR6: The machining_execution_resource is the resource of at most one resource_property with a name of 'number of simultaneous axis', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item in which the value_component is of type count_measure.

WR7: The machining_execution_resource is the resource of at most one resource_property with a name of 'positioning accuracy', and the representation used to describe the resource_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR8: The machining_execution_resource is the resource of at most one resource_property with a name of 'table indexing', and the representation used to describe the resource_property shall contain a representation_item of type descriptive_representation_item with a description of 'required' or 'not required'.

WR9: The machining_execution_resource shall satisfy the following conditions:

WR10: The machining_execution_resource is the resource of at most one resource_property with a name of 'axis travel', and the representation used to describe the resource_property shall contain at least one representation_item of type measure_representation_item and length_measure_with_unit.

WR11: The machining_execution_resource shall satisfy the following conditions:

WR12: The machining_execution_resource is the resource of no resource_property with a name of 'axis travel', or else the machining_execution_resource is the resource of no resource_property with a name of 'work volume length', 'work volume width', or 'work volume height'.

5.2.4.1.29 machining_feature_process

A machining_feature_process is a type of machining_process_executable that represents a set of steps in a machining process that result in a manufacturing feature. See the ARM definition for Manufacturing_feature in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_feature_process
  SUBTYPE OF (machining_process_executable);
  WHERE
  WR1:  (1 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'machining')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'machining') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_PROCESS' IN TYPEOF (act))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_feature_process shall be the chosen_method of exactly one property_process with a name of 'machining'.

5.2.4.1.30 machining_feature_relationship

A machining_feature_relationship is a type of action_method_relationship that represents use of a feature as the manufacturing target of a workingstep. See the ARM definitions for Workingstep and Turning_workingstep in ISO 14649-10 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_feature_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.31 machining_feature_sequence_relationship

A machining_feature_sequence_relationship is a type of machining_feature_relationship and sequential_method that represents use of a feature as an element of a sequence of manufacturing targets of a workingstep. See the ARM definition for Turning_workingstep in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_feature_sequence_relationship
  SUBTYPE OF (machining_feature_relationship, sequential_method);
END_ENTITY;
(*
5.2.4.1.32 machining_feed_speed_representation

A machining_feed_speed_representation is a type of representation that represents the speed at which a tool is moved through material. The feed speed is described as one of the following:

EXPRESS specification:
*)
ENTITY machining_feed_speed_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  (SELF.name IN ['feed speed', 'feed per revolution',
         'feed per tooth', 'relative speed']);

  WR2:  NOT (SELF.name = 'feed speed') OR
        ((verify_required_rep_item             (SELF, 'feed speed')) AND
         (verify_linear_speed_measure_rep_item (SELF, 'feed speed'))
        );

  WR3:  NOT (SELF.name = 'feed per revolution') OR
        ((verify_required_rep_item       (SELF, 'feed per revolution')) AND
         (0 = SIZEOF (QUERY ( it <* SELF.items |
          (it.name = 'feed per revolution') AND NOT (
            'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN
            TYPEOF(it)))))
        );

  WR4:  NOT (SELF.name = 'feed per tooth') OR
        ((verify_required_rep_item       (SELF, 'feed per tooth')) AND
         (0 = SIZEOF (QUERY ( it <* SELF.items |
          (it.name = 'feed per tooth') AND NOT (
            'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN
            TYPEOF(it)))))
        );

  WR5:  NOT (SELF.name = 'relative speed') OR
        ((verify_required_rep_item       (SELF, 'relative speed')) AND
         (verify_ratio_measure_rep_item  (SELF, 'relative speed'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The name of the machining_feed_speed_representation shall be either 'feed speed', 'feed per revolution', 'feed per tooth', or 'relative speed'.

WR2: If the name of the machining_feed_speed_representation is 'feed speed', the items set shall contain exactly one representation_item with a name of 'feed speed', which shall be of type measure_representation_item with a value_component of type numeric_measure.

WR3: If the name of the machining_feed_speed_representation is 'feed per revolution', the items set shall contain exactly one representation_item with a name of 'feed per revolution', which shall be of type measure_representation_item .

WR4: If the name of the machining_feed_speed_representation is 'feed per tooth', the items set shall contain exactly one representation_item with a name of 'feed per tooth', which shall be of type measure_representation_item.

WR5: If the name of the machining_feed_speed_representation is 'relative speed', the items set shall contain exactly one representation_item with a name of 'relative speed', which shall be of type measure_representation_item and ratio_measure_with_unit.

5.2.4.1.33 machining_final_feature_relationship

A machining_final_feature_relationship is a type of action_method_relationship that represents a feature visible on the final form of the workpiece that a workingstep may not manufacture directly, but in some way contributes to the creation of. See Machining_workingstep final_features for more information.

EXPRESS specification:
*)
ENTITY machining_final_feature_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.34 machining_fixture_usage

A machining_fixture_usage is a type of action_method that represents fixture usage to satisfy requirements for machining. See the ARM definition for Tool_usage for more information.

EXPRESS specification:
*)
ENTITY machining_fixture_usage
  SUBTYPE OF (action_method);
  WR1:  (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'fixture workpiece')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'fixture workpiece') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS' IN TYPEOF (act))
        )));

  WR2:  ((verify_optional_action_property (SELF, 'mount reference')) AND
         (verify_rep_item_for_action_property (SELF, 'mount reference',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));

  WR3:  ((verify_optional_action_property (SELF, 'workpiece reference')) AND
         (verify_rep_item_for_action_property (SELF, 'workpiece reference',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_fixture_usage shall be the chosen_method of at most one product_definition_process with a name of 'fixture workpiece'.

WR2: The machining_fixture_usage shall shall be the definition of at most one action_property with a name of 'mount reference', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

WR3: The machining_fixture_usage shall shall be the definition of at most one action_property with a name of 'workpiece reference', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

5.2.4.1.35 machining_functions

A machining_functions instance is a type of action_method that represents settings on the machine tool which is to execute a machining process. See the ARM definitions for Machine_functions in ISO 14649-10, Milling_machine_functions in ISO 14649-11, and Turning_machine_functions in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_functions
  SUBTYPE OF (action_method);
  WHERE
  WR1:  NOT (SELF.description = 'milling') OR
        ((verify_required_action_property       (SELF, 'coolant')) AND
         (verify_enumeration_action_property    (SELF, 'coolant',
           ['coolant on', 'coolant off'])) AND

         (verify_optional_action_property
           (SELF, 'coolant pressure')) AND
         (verify_pressure_measure_action_property
           (SELF, 'coolant pressure')) AND

         (verify_optional_action_property       (SELF, 'mist')) AND
         (verify_enumeration_action_property    (SELF, 'mist',
           ['mist on', 'mist off'])) AND

         (verify_optional_action_property
           (SELF, 'through spindle coolant')) AND
         (verify_enumeration_action_property
           (SELF, 'through spindle coolant',
           ['through spindle coolant on', 'through spindle coolant off'])) AND

         (verify_optional_action_property
           (SELF, 'through spindle pressure')) AND
         (verify_pressure_measure_action_property
           (SELF, 'through spindle pressure')) AND

         -- axis constraints property must contain zero or more ranges
         (0 = SIZEOF (QUERY (prop <* get_action_property
                (SELF, 'axis constraints') | NOT
                 ((0 < SIZEOF (QUERY (prep <* USEDIN (prop,
            'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
              (0 <= SIZEOF (QUERY (it <* prep.representation.items |
                 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.VALUE_RANGE' in TYPEOF(it)))))
                )))))))
        );

  WR2:  NOT (SELF.description = 'turning') OR
        ((verify_required_action_property       (SELF, 'coolant')) AND
         (verify_enumeration_action_property    (SELF, 'coolant',
           ['coolant on', 'coolant off'])) AND

         (verify_optional_action_property       (SELF, 'coolant type')) AND
         (verify_enumeration_action_property    (SELF, 'coolant type',
           ['flood', 'mist', 'through tool'])) AND

         (verify_optional_action_property
           (SELF, 'coolant pressure')) AND
         (verify_pressure_measure_action_property
           (SELF, 'coolant pressure')) AND

         (verify_optional_action_property       (SELF, 'tail stock')) AND
         (verify_enumeration_action_property    (SELF, 'tail stock',
           ['tail stock used', 'tail stock not used'])) AND

         (verify_optional_action_property       (SELF, 'steady rest')) AND
         (verify_enumeration_action_property    (SELF, 'steady rest',
           ['steady rest used', 'steady rest not used'])) AND

         (verify_optional_action_property       (SELF, 'follow rest')) AND
         (verify_enumeration_action_property    (SELF, 'follow rest',
           ['follow rest used', 'follow rest not used']))
        );

  WR3:  NOT (SELF.description IN ['milling', 'turning']) OR
        ((verify_optional_action_property       (SELF, 'axis clamping')) AND
         (0 = SIZEOF (QUERY (prop <*
           get_action_property (SELF, 'axis clamping') | NOT
           (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
              'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
             (1 = SIZEOF (QUERY (it <* prep.representation.items |
                (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
                   IN TYPEOF(it)) AND
                 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
                   IN TYPEOF(it.item_element)) AND
                 (0 = SIZEOF (QUERY (ie <* it.item_element | NOT
                   ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
                    IN TYPEOF(ie)) )))
             ))))
           )))
         ))) AND

         (verify_optional_action_property     (SELF, 'chip removal')) AND
         (verify_enumeration_action_property  (SELF, 'chip removal',
           ['chip removal on', 'chip removal off'])) AND

         (verify_optional_action_property     (SELF, 'oriented spindle stop')) AND
         (verify_rep_item_for_action_property (SELF, 'oriented spindle stop',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_MODEL_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_MODEL']))
        );

  WR4:  (verify_optional_action_property (SELF, 'other functions'));

END_ENTITY;
(*
Formal propositions:

WR1: If the description of the machining_functions is 'milling', the machining_functions shall satisfy the following conditions:

WR2: If the description of the machining_functions is 'turning', the machining_functions shall satisfy the following conditions:

WR3: If the description of the machining_functions is either 'milling' or 'turning', the machining_functions shall satisfy the following conditions:

WR4: The machining_functions shall be the definition of at most one action_property with a name of 'other functions'.

5.2.4.1.36 machining_functions_relationship

A machining_functions_relationship is a type of action_method_relationship that represents use of a Machine_functions description in some context. See the ARM definitions for Operation, Toolpath and their subtypes in ISO 14649-10, ISO 14649-11 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_functions_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.37 machining_machine_usage

A machining_machine_usage is a type of action_method that represents machine usage to satisfy requirements for machining. See the ARM definition for Machine_usage for more information.

EXPRESS specification:
*)
ENTITY machining_machine_usage
  SUBTYPE OF (action_method);
  WHERE
  WR1:  (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'machine usage')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'machine usage') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS' IN TYPEOF (act))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_machine_usage shall be the chosen_method of at most one product_definition_process with a name of 'machine usage'.

5.2.4.1.38 machining_nc_function

A machining_nc_function is a type of machining_process_executable that represents a step in a machining process. See the ARM definitions for NC_function and subtypes in ISO 14649-10 and ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY machining_nc_function
  SUBTYPE OF (machining_process_executable);
  WHERE
  WR1:  (SELF.description IN ['display message',
        'optional stop', 'program stop', 'set mark', 'wait for mark',
        'exchange pallet', 'index pallet', 'load tool', 'unload tool',
        'legacy function']);

  WR2:  NOT (SELF.description = 'display message') OR
        ((verify_required_action_property       (SELF, 'message text')) AND
         (verify_descriptive_action_property    (SELF, 'message text')));

  WR3:  NOT (SELF.description = 'wait for mark') OR
        ((verify_required_action_property       (SELF, 'channel')));

  WR4:  NOT (SELF.description = 'index pallet') OR
        ((verify_required_action_property       (SELF, 'pallet index')) AND
         (verify_count_measure_action_property  (SELF, 'pallet index')));

  WR5:  NOT (SELF.description = 'index table') OR
        ((verify_required_action_property       (SELF, 'table index')) AND
         (verify_count_measure_action_property  (SELF, 'table index')));

  WR6:  NOT (SELF.description = 'load tool') OR
        (1 = SIZEOF (QUERY (mt <*
         USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
         ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))));

  WR7:  NOT (SELF.description = 'unload tool') OR
        (1 >= SIZEOF (QUERY (mt <*
         USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
         ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))));

  WR8:  NOT (SELF.description = 'legacy function') OR
        ((verify_required_action_property       (SELF, 'function text')) AND
         (verify_descriptive_action_property    (SELF, 'function text')));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the machining_nc_function shall be either 'display message', 'optional stop', 'program stop', 'set mark', 'wait for mark', 'exchange pallet', 'index pallet', 'index table', 'load tool', 'unload tool', or 'legacy function'.

WR2: If the description of the machining_nc_function is 'display message', the machining_nc_function shall be the definition of exactly one action_property with a name of 'message text', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item.

WR3: If the description of the machining_nc_function is 'wait for mark', the machining_nc_function shall be the definition of exactly one action_property with a name of 'channel'.

WR4: If the description of the machining_nc_function is 'index pallet', the machining_nc_function shall be the definition of exactly one action_property with a name of 'pallet index', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item in which the value_component is of type count_measure.

WR5: If the description of the machining_nc_function is 'index table', the machining_nc_function shall be the definition of exactly one action_property with a name of 'table index', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item in which the value_component is of type count_measure.

WR6: If the description of the machining_nc_function is 'load tool', the machining_nc_function shall appear in the usage set of exactly one machining_tool.

WR7: If the description of the machining_nc_function is 'unload tool', the machining_nc_function shall appear in the usage set of at most one machining_tool.

WR8: If the description of the machining_nc_function is 'legacy function', the machining_nc_function shall be the definition of exactly one action_property with a name of 'function text', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item.

5.2.4.1.39 machining_offset_vector_representation

A machining_offset_vector_representation is a type of representation that identifies NC variables that will hold the translation and rotation of a machining workpiece. See the ARM definitions for Offset_vector and NC_variable in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_offset_vector_representation
  SUBTYPE OF (representation);
  WHERE
  WR1: (1 = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'translate')))) AND
       (0 = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'translate') AND NOT
         (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
            IN TYPEOF(it)) AND
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
            IN TYPEOF(it.item_element)) AND
          (SIZEOF(it.item_element) = 3) AND
          (0 = SIZEOF (QUERY (ie <* it.item_element | NOT
           (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
              IN TYPEOF(ie)) AND
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE' IN TYPEOF(ie))))))
         )
        )));

  WR2: (1 >= SIZEOF (QUERY ( it <* SELF.items | (it.name = 'rotate')))) AND
       (0  = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'rotate') AND NOT
         (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(it)) AND
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
            IN TYPEOF(it.item_element)) AND
          (SIZEOF(it.item_element) = 3) AND
          (0 = SIZEOF (QUERY (ie <* it.item_element | NOT
           (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM' IN TYPEOF(ie)) AND
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE' IN TYPEOF(ie))))))
         )
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The items set shall contain exactly one representation_item with a name of 'translate', which shall be of type compound_representation_item with a item_element of type list_representation_item. This list shall contain exactly three members, and all members shall be of type expression_representation_item and numeric_variable.

WR2: The items set shall contain at most one representation_item with a name of 'rotate', which shall be of type compound_representation_item with a item_element of type list_representation_item. This list shall contain exactly three members, and all members shall be of type expression_representation_item and numeric_variable.

5.2.4.1.40 machining_operation

A machining_operation is a type of action_method that represents the manufacturing details of a step of a machining process. See the ARM definitions for Operation and subtypes in ISO 14649-10 and ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY machining_operation
  SUBTYPE OF (action_method);
  WHERE
  WR1: ((verify_related_type_for_amr    (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOLPATH']))
       );

  WR2:  (verify_optional_action_property     (SELF, 'tool direction')) AND
        (verify_rep_type_for_action_property (SELF, 'tool direction',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_DIRECTION_REPRESENTATION']));

  WR3:  ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_RAPID_MOVEMENT' IN TYPEOF(SELF)) OR
        ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOUCH_PROBING'  IN TYPEOF(SELF)) OR
        ((verify_optional_action_property       (SELF, 'retract plane')) AND
         (verify_length_measure_action_property (SELF, 'retract plane')) AND

         (verify_optional_action_property       (SELF, 'cut start point')) AND
         (verify_rep_item_for_action_property   (SELF, 'cut start point',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'])) AND

         (1 = SIZEOF (QUERY (mt <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt))))) AND

         (verify_required_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY'])) AND

         (verify_required_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The machining_operation shall be the relating_method of zero or more instances of machining_toolpath_sequence_relationship, in which the related_method shall be of type machining_toolpath.

WR2: The machining_operation shall be the definition of at most one action_property with a name of 'tool direction', and the representation used to describe the action_property shall be of type machining_tool_direction_representation.

WR3: If the machining_operation is not also a instance of either machining_rapid_movement or machining_touch_probing, the machining_operation shall satisfy the following conditions:

Informal propositions:

IP1: All machining_toolpath_sequence_relationship instances which refer to the same machining_operation through relating_method shall have unique sequence_position values.

5.2.4.1.41 machining_operation_relationship

A machining_operation_relationship is a type of action_method_relationship that represents use of an Operation to describe the action performed by a workingstep. See the ARM definitions for Workingstep and Turning_workingstep in ISO 14649-10 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_operation_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.42 machining_operator_instruction

A machining_operator_instruction is a type of action_method_with_associated_documents that represents instructions to the human operator of a machining process. See the ARM definition for Setup_instruction in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_operator_instruction
  SUBTYPE OF (action_method_with_associated_documents);
  WHERE
  WR1:  EXISTS (self.description) OR (0 < SIZEOF(self.documents));
END_ENTITY;
(*
Formal propositions:

WR1: Either the description of the machining_operator_instruction shall have a value, or the documents attribute shall contain at least one element.

NOTE This corresponds to local constraint WR1 on the ARM entity Setup_instruction in ISO 14649-10.

5.2.4.1.43 machining_operator_instruction_relationship

A machining_operator_instruction_relationship is a type of sequential_method that represents use of a Setup_instruction as an element of a sequence of instructions in a Workpiece_setup. See the ARM definitions for Workpiece_setup in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_operator_instruction_relationship
  SUBTYPE OF (sequential_method);
END_ENTITY;
(*
5.2.4.1.44 machining_process_body_relationship

A machining_process_body_relationship is a type of action_method_relationship that represents use of an Executable as an element in the control flow described by another Executable. See the ARM definitions for the Executable subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_process_body_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.45 machining_process_branch_relationship

A machining_process_branch_relationship is a type of machining_process_body_relationship that represents use of an Executable as an element in the branching control flow described by another Executable. See the ARM definitions for If_statement, Selective, and other Executable subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_process_branch_relationship
  SUBTYPE OF (machining_process_body_relationship);
END_ENTITY;
(*
5.2.4.1.46 machining_process_concurrent_relationship

A machining_process_branch_relationship is a type of machining_process_body_relationship and concurrent_action_method that represents use of an Executable as one of possibly several simultaneous elements in the control flow described by another Executable. See the ARM definitions for Parallel and other Executable subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_process_concurrent_relationship
  SUBTYPE OF (machining_process_body_relationship, concurrent_action_method);
END_ENTITY;
(*
5.2.4.1.47 machining_process_executable

A machining_process_executable is a type of action_method that represents an executable step in a machining process. See the ARM definitions for Executable and subtypes in ISO 14649-10 for more information

NOTE In the second edition, the supertype of this entity has been changed to process_operation, which is also an action_method subtype, to further interoperation with AP242.

EXPRESS specification:
*)
ENTITY machining_process_executable
  SUBTYPE OF (process_operation);
  WHERE
  WR1:  NOT (0 = SIZEOF (TYPEOF (SELF) *
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS',
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_NC_FUNCTION',
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKINGSTEP',
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKPLAN']
        )) OR
        (SELF.description IN ['assignment', 'if statement',
                'non-sequential', 'parallel', 'selective',
                'while statement', 'setup instructions']);

  WR2:  NOT (SELF.description = 'assignment') OR
        ((verify_required_action_property       (SELF, 'lvalue')) AND
         (verify_rep_item_for_action_property   (SELF, 'lvalue',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'])) AND

         (verify_required_action_property       (SELF, 'rvalue')) AND
         (verify_rep_item_for_action_property   (SELF, 'rvalue',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'])));

  WR3:  NOT (SELF.description = 'if statement') OR
        ((verify_required_action_property       (SELF, 'condition')) AND
         (verify_rep_item_for_action_property   (SELF, 'condition',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'])) AND

         (verify_required_relating_amr_with_name  (SELF, 'true branch',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'true branch',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE'])) AND

         (verify_optional_relating_amr_with_name  (SELF, 'false branch',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'false branch',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
        );

  WR4:  NOT (SELF.description = 'while statement') OR
        ((verify_required_action_property       (SELF, 'condition')) AND
         (verify_rep_item_for_action_property   (SELF, 'condition',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOOLEAN_EXPRESSION'])) AND

         (verify_required_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
        );

  WR5:  NOT (SELF.description = 'parallel') OR
        ((2 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP']))
        AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
        );

  WR6:  NOT (SELF.description = 'non-sequential') OR
        ((2 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
        );

  WR7:  NOT (SELF.description = 'selective') OR
        ((2 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
        );

  WR8:  NOT (SELF.description = 'setup instructions') OR
        ((verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATOR_INSTRUCTION_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATOR_INSTRUCTION']))
        );

  WR9:  (verify_optional_action_property        (SELF, 'enabled')) AND
        (verify_enumeration_action_property     (SELF, 'enabled',
         ['enabled', 'disabled'])) AND

	(1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'as-is shape')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'as-is shape') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act))))) AND

        (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'fixture shape')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'fixture shape') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act))))) AND

        (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'removal shape')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'removal shape') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act))))) AND

        (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'to-be shape')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'to-be shape') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act)))));
END_ENTITY;
(*
Formal propositions:

WR1: If the machining_process_executable is exactly of type machining_process_executable and not an instance of any of the subtypes machining_workingstep, machining_workplan, machining_feature_process, or machining_nc_function, the description of the machining_process_executable shall be either 'assignment', 'if statement', 'non-sequential', 'parallel', 'selective', 'while statement', or 'setup instructions'.

WR2: If the description of the machining_process_executable is 'assignment', the machining_process_executable shall satisfy the following conditions:

WR3: If the description of the machining_process_executable is 'if statement', the machining_process_executable shall satisfy the following conditions:

WR4: If the description of the machining_process_executable is 'while statement', the machining_process_executable shall satisfy the following conditions:

WR5: If the description of the machining_process_executable is 'parallel', the machining_process_executable shall be the relating_method of at least two instances of machining_process_concurrent_relationship, in which the related_method is of type machining_process_executable.

WR6: If the description of the machining_process_executable is 'non-sequential', the machining_process_executable shall be the relating_method of at least two instances of machining_process_body_relationship, in which the related is of type machining_process_executable.

WR7: If the description of the machining_process_executable is 'selective', the machining_process_executable shall be the relating_method of at least two instances of machining_process_branch_relationship, in which the related_method is of type machining_process_executable.

WR8: If the description of the machining_process_executable is 'setup instructions', the machining_process_executable shall be the relating_method of zero or more instances of machining_operator_instruction_relationship, in which the related_method is of type machining_operator_instruction.

WR9: The machining_process_executable shall satisfy the following conditions:

Informal propositions:

IP1: The name of a machining_process_executable shall be unique within the machining process.

5.2.4.1.48 machining_process_model

A machining_process_model is a type of action_method that represents process control settings on the machine tool which is to execute a machining process. See the ARM definition for Process_model in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY machining_process_model
  SUBTYPE OF (action_method);
  WHERE
  WR1: (verify_required_action_property    (SELF, 'initialization data')) AND
       (verify_descriptive_action_property (SELF, 'initialization data'));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_process_model shall be the definition of exactly one action_property with a name of 'initialization data', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item.

5.2.4.1.49 machining_process_model_relationship

A machining_process_model_relationship is a type of sequential_method that represents use of a Process_model as an element of a sequence of models in a Machine_functions description. See the ARM definitions for the Machine_functions subtypes in ISO 14649-11 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_process_model_relationship
  SUBTYPE OF (sequential_method);
END_ENTITY;
(*
5.2.4.1.50 machining_process_property

A machining_process_property is a type of action_property that describes supplemental information about an Executable or Operation application object.

EXPRESS specification:
*)
ENTITY machining_process_property
  SUBTYPE OF (action_property);
END_ENTITY;
(*
5.2.4.1.51 machining_process_sequence_relationship

A machining_process_sequence_relationship is a type of machining_process_body_relationship and sequential_method that represents use of an Executable as an element of a sequence in the control flow described by another Executable. See the ARM definitions for Workplan and other Executable subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_process_sequence_relationship
  SUBTYPE OF (machining_process_body_relationship, sequential_method);
END_ENTITY;
(*
5.2.4.1.52 machining_project

A machining_project is a type of product that represents a Project. See the ARM definitions for Project in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_project
          SUBTYPE OF (product);
  WHERE
  WR1: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
          'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT

          -- it has at most one associated owner.
          (1 >= SIZEOF (QUERY (poa <* USEDIN (pdf,
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
             'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
               (poa.role.name = 'owner'))))
        )));


  WR2: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
          'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT

          -- it has at most one associated release date.
          (1 >= SIZEOF (QUERY (dta <* USEDIN (pdf,
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
             'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
               (dta.role.name = 'release date'))))
        )));


  WR3: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
          'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT

          (0 = SIZEOF (QUERY (pd <* USEDIN (pdf,
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION') | NOT

          -- it has one associated workplan.
          (1 = SIZEOF (QUERY (ppa <* USEDIN (pd,
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
             'PROCESS_PRODUCT_ASSOCIATION.DEFINED_PRODUCT') |
             (ppa.process.name = 'machining') AND
             ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_WORKPLAN'
               IN TYPEOF (ppa.process.chosen_method)))))
          )))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: Each product_definition_formation that refers to the machining_project as of_product, shall itself appear in the items set of at most one applied_person_and_organization_assignment instance in which role refers to a person_and_organization_role with a name of 'owner'.

WR2: Each product_definition_formation that refers to the machining_project as of_product, shall itself appear in the items set of at most one applied_date_and_time_assignment instance in which role refers to a date_and_time_role with a name of 'release date'.

WR3: Each product_definition that refers to a product_definition_formation that refers to the machining_project as of_product, shall itself appear as the defined_product of exactly one process_product_association instance in which process shall have a name of 'machining' and a chosen_method of type machining_workplan.

5.2.4.1.53 machining_project_workpiece_relationship

A machining_project_workpiece_relationship is a type of product_definition_relationship that represents use of an Workpiece as an element of a Project. See the ARM definitions for Project in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_project_workpiece_relationship
  SUBTYPE OF (product_definition_relationship);
END_ENTITY;
(*
5.2.4.1.54 machining_rapid_movement

A machining_rapid_movement is a type of machining_operation that represents a rapid motion of the machine axes in a machining process. See the ARM definitions for Rapid_movement and subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_rapid_movement
  SUBTYPE OF (machining_operation);
END_ENTITY;
(*
5.2.4.1.55 machining_setup

A machining_setup is a type of product that represents a Setup. See the ARM definitions for Setup in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_setup
  SUBTYPE OF (product);
  WHERE
  WR1: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
          'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT

          (0 = SIZEOF (QUERY (pd <* USEDIN (pdf,
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION.FORMATION') | NOT

          -- it has one associated security plane.
          (1 = SIZEOF (QUERY (prop <* USEDIN (pd,
             'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PROPERTY_DEFINITION.DEFINITION') |
             (prop.name = 'security plane'))))
          )))
        )));

END_ENTITY;
(*
Formal propositions:

WR1: Each product_definition that refers to a product_definition_formation that refers to the machining_setup shall be the definition of exactly one property_definition with a name of 'security plane'.

5.2.4.1.56 machining_setup_workpiece_relationship

A machining_setup_workpiece_relationship is a type of product_definition_relationship that represents use of an Workpiece as an element of a Setup in a Workpiece_setup. See the ARM definitions for Setup and Workpiece_setup in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_setup_workpiece_relationship
  SUBTYPE OF (product_definition_relationship);
END_ENTITY;
(*
5.2.4.1.57 machining_spindle_speed_representation

A machining_spindle_speed_representation is a type of representation that represents the speed at which a machine tool spindle rotates. The spindle speed is described as one of the following:

EXPRESS specification:
*)
ENTITY machining_spindle_speed_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  (SELF.name IN ['spindle speed', 'cutting speed', 'relative speed']);

  WR2:  NOT (SELF.name = 'spindle speed') OR
        ((verify_required_rep_item             (SELF, 'rotational speed')) AND
         (verify_rotary_speed_measure_rep_item (SELF, 'rotational speed'))
        );

  WR3:  NOT (SELF.name = 'cutting speed') OR
        ((verify_required_rep_item             (SELF, 'surface speed')) AND
         (verify_linear_speed_measure_rep_item (SELF, 'surface speed')) AND

         (verify_optional_rep_item
           (SELF, 'maximum rotational speed')) AND
         (verify_rotary_speed_measure_rep_item
           (SELF, 'maximum rotational speed'))
        );

  WR4:  NOT (SELF.name = 'relative speed') OR
        ((verify_required_rep_item             (SELF, 'relative speed')) AND
         (verify_ratio_measure_rep_item        (SELF, 'relative speed'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The name of the machining_spindle_speed_representation shall be either 'spindle speed', 'cutting speed', or 'relative speed'.

WR2: If the name of the machining_spindle_speed_representation is 'spindle speed', the items set shall contain exactly one representation_item with a name of 'rotational speed', which shall be of type measure_representation_item with a value_component of type numeric_measure.

WR3: If the name of the machining_spindle_speed_representation is 'cutting speed', the items set shall contain the following items:

WR4: If the name of the machining_spindle_speed_representation is 'relative speed', the items set shall contain exactly one representation_item with a name of 'relative speed', which shall be of type measure_representation_item and ratio_measure_with_unit.

5.2.4.1.58 machining_strategy

A machining_strategy is a type of action_method that represents a particular approach used to perform some aspect of a step in a machining process.

EXPRESS specification:
*)
ENTITY machining_strategy
  SUBTYPE OF (action_method);
END_ENTITY;
(*
5.2.4.1.59 machining_strategy_relationship

A machining_strategy_relationship is a type of action_method_relationship that represents use of a Two5d_milling_strategy, Drilling_type_strategy, Freeform_strategy, Turning_machining_strategy, or Approach_retract_strategy description in some context. See the ARM definitions for the Operation subtypes in ISO 14649-11 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_strategy_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.60 machining_technology

A machining_technology is a type of action_method that represents technological parameters that govern a portion of a machining process. See the ARM definitions for Technology in ISO 14649-10 Milling_technology in ISO 14649-11, and Turning_technology in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_technology
  SUBTYPE OF (action_method);
  WHERE
  WR1:  (verify_optional_action_property      (SELF, 'feedrate')) AND
        (verify_rep_type_for_action_property  (SELF, 'feedrate',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION']));

  WR2:  (verify_optional_action_property      (SELF, 'feedrate reference')) AND
        (verify_enumeration_action_property   (SELF, 'feedrate reference',
          ['tool center point', 'cutter contact point']));

  WR3:  NOT (SELF.description = 'milling') OR
        ((verify_optional_action_property     (SELF, 'spindle')) AND
         (verify_rep_type_for_action_property (SELF, 'spindle',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND

         (verify_optional_action_property
           (SELF, 'synchronize spindle with feed')) AND
         (verify_enumeration_action_property
           (SELF, 'synchronize spindle with feed',
           ['synchronized', 'not synchronized'])) AND

         (verify_optional_action_property
           (SELF, 'inhibit feedrate override')) AND
         (verify_enumeration_action_property
           (SELF, 'inhibit feedrate override',
           ['override allowed', 'override not allowed'])) AND

         (verify_optional_action_property
           (SELF, 'inhibit spindle override')) AND
         (verify_enumeration_action_property
           (SELF, 'inhibit spindle override',
           ['override allowed', 'override not allowed'])) AND

         (verify_optional_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY']))
        );

  WR4:  NOT (SELF.description = 'milling') OR
        ((verify_required_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) OR

         (verify_required_action_property     (SELF, 'spindle') AND
          verify_rep_name_for_action_property (SELF, 'spindle',
           ['spindle speed', 'cutting speed']))
        );

  WR5:  NOT (SELF.description = 'milling') OR
        ((verify_required_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) OR

         (verify_required_action_property     (SELF, 'feedrate') AND
          verify_rep_name_for_action_property (SELF, 'feedrate',
           ['feed speed', 'feed per tooth']))
        );

  WR6:  NOT (SELF.description = 'turning') OR
        ((verify_optional_action_property     (SELF, 'spindle')) AND
         (verify_rep_type_for_action_property (SELF, 'spindle',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'spindle',
           ['spindle speed', 'cutting speed'])) AND

         (verify_rep_name_for_action_property (SELF, 'feedrate',
           ['feed speed', 'feed per revolution'])) AND

         (verify_optional_action_property
           (SELF, 'synchronize spindle with z feed')) AND
         (verify_enumeration_action_property
           (SELF, 'synchronize spindle with z feed',
           ['synchronized', 'not synchronized'])) AND

         (verify_optional_action_property
           (SELF, 'inhibit feedrate override')) AND
         (verify_enumeration_action_property
           (SELF, 'inhibit feedrate override',
           ['override allowed', 'override not allowed'])) AND

         (verify_optional_action_property
           (SELF, 'inhibit spindle override')) AND
         (verify_enumeration_action_property
           (SELF, 'inhibit spindle override',
           ['override allowed', 'override not allowed'])) AND

         (verify_optional_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The machining_technology shall be the definition of at most one action_property with a name of 'feedrate', and the representation used to describe the action_property shall be of type machining_feed_speed_representation.

WR2: The machining_technology shall be the definition of at most one action_property with a name of 'feedrate reference', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of 'tool center point' or 'cutter contact point'.

WR3: If the description of the machining_technology is 'milling', the machining_technology shall satisfy the following conditions:

WR4: If the description of the machining_technology is 'milling', either the machining_technology shall be the relating_method of exactly one machining_adaptive_control_relationship, or else the machining_technology shall be the definition of exactly one action_property with a name of 'spindle', and the representation used to describe the action_property shall have a description of either 'spindle speed' or 'cutting speed'.

NOTE This corresponds to local constraint WR1 on the ARM entity Milling_technology in ISO 14649-11

WR5: If the description of the machining_technology is 'milling', either the machining_technology shall be the relating_method of exactly one machining_adaptive_control_relationship, or else the machining_technology shall be the definition of exactly one action_property with a name of 'feedrate', and the representation used to describe the action_property shall have a description of either 'feed speed' or 'feed per tooth'.

NOTE This corresponds to local constraint WR2 on the ARM entity Milling_technology in ISO 14649-11

WR6: If the description of the machining_technology is 'turning', the machining_technology shall satisfy the following conditions:

5.2.4.1.61 machining_technology_relationship

A machining_technology_relationship is a type of action_method_relationship that represents use of a Technology description in some context. See the ARM definitions for Operation, Toolpath and their subtypes in ISO 14649-10, ISO 14649-11 and ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_technology_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.62 machining_tool

A machining_tool is a type of action_resource that represents tool requirements for machining. See the ARM definitions for Machining_tool in ISO 14649-10, Milling_machine_cutting_tool in ISO 14649-111, and Turning_machine_cutting_tool in ISO 14649-121 for more information.

NOTE The action resource concept is used here because this describes required resources (tools) to perform an action method (machining workingstep). Design information about individual tools (not just usage requirements) can be represented using the product and product_definition_formation concepts rather than action_resource. The machining_tool_usage type represents the bridge between these two descriptions.

EXPRESS specification:
*)
ENTITY machining_tool
  SUBTYPE OF (action_resource);
  WHERE
  WR1:  NOT (SELF.kind.name = 'milling cutting tool') OR
        ((0 <= SIZEOF (QUERY (arr <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE') |
          (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_CUTTING_COMPONENT'
             IN TYPEOF (arr.related_resource)) AND
           (arr.related_resource.kind.name = 'milling cutting edge') )))) AND

         (verify_optional_tool_body_item
           (SELF, 'overall assembly length')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'overall assembly length')) AND

         (verify_optional_tool_body_item
           (SELF, 'effective cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'effective cutting diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'maximum depth of cut')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum depth of cut')) AND

         (verify_optional_tool_body_item (SELF, 'hand of cut')) AND
         (verify_enumeration_tool_body_item (SELF, 'hand of cut',
           ['left', 'right', 'neutral'])) AND

         (verify_optional_tool_body_item (SELF, 'coolant through tool')) AND
         (verify_enumeration_tool_body_item (SELF, 'coolant through tool',
           ['supported', 'not supported']))
        );

  WR2:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'counterbore', 'countersink',
         'spade drill', 'spot drill', 'step drill', 'tapered drill',
         'twist drill', 'drill']))
        OR
        ((verify_optional_tool_body_item      (SELF, 'point angle')) AND
         (verify_angle_measure_tool_body_item (SELF, 'point angle'))
        );

  WR3:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'countersink'))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'minimum cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum cutting diameter')) AND

         (verify_required_tool_body_item
           (SELF, 'maximum usable length')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum usable length'))
        );

  WR4:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tapered drill'))
        OR
        ((verify_required_tool_body_item      (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item (SELF, 'taper angle'))
        );

  WR5:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'step drill'))
        OR
        ((verify_required_tool_body_item      (SELF, 'step diameters')) AND
         (verify_rep_item_for_tool_body
           (SELF, 'step diameters',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'])) AND

         (verify_required_tool_body_item      (SELF, 'step lengths')) AND
         (verify_rep_item_for_tool_body
           (SELF, 'step lengths',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM']))
        );

  WR6:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'ballnose endmill', 'bullnose endmill',
         'dovetail mill', 'endmill', 'facemill', 'profiled endmill',
         'shoulder mill', 'tee slot mill', 'thread mill', 'side mill']))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'number of effective teeth')) AND
         (verify_count_measure_tool_body_item
           (SELF, 'number of effective teeth')) AND

         (verify_optional_tool_body_item       (SELF, 'edge radius')) AND
         (verify_length_measure_tool_body_item (SELF, 'edge radius'))
        );

  WR7:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'ballnose endmill', 'bullnose endmill',
         'endmill', 'facemill', 'profiled endmill']))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'tool cutting edge angle')) AND
         (verify_angle_measure_tool_body_item
           (SELF, 'tool cutting edge angle'))
        );

  WR8:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'ballnose endmill'))
        OR verify_ballnose_endmill_dimensions (SELF);

  WR9:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'bullnose endmill'))
        OR verify_bullnose_endmill_dimensions (SELF);

  WR10: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tee slot mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'cutting width')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting width'))
        );

  WR11: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'dovetail mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'included angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'included angle'))
        );

  WR12: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'side mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'cutter width')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutter width'))
        );


  WR13: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'thread mill', 'tapping tool',
         'combined drill and tap']))
        OR
        ((verify_required_tool_body_item  (SELF, 'thread form type')) AND
         (verify_rep_item_for_tool_body   (SELF, 'thread form type',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'])) AND

         (verify_required_tool_body_item       (SELF, 'thread size')) AND
         (verify_length_measure_tool_body_item (SELF, 'thread size')) AND

         (verify_required_tool_body_item       (SELF, 'thread pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'thread pitch'))
        );


  WR14: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'tapping tool', 'combined drill and tap']))
        OR
        ((verify_required_tool_body_item
           (SELF, 'taper thread count')) AND
         (verify_count_measure_tool_body_item
           (SELF, 'taper thread count'))
        );

  WR15: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'reamer', 'combined drill and reamer',
         'tapered reamer']))
        OR
        ((verify_required_tool_body_item       (SELF, 'taper length')) AND
         (verify_length_measure_tool_body_item (SELF, 'taper length'))
        );

  WR16: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tapered reamer'))
        OR
        ((verify_required_tool_body_item       (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'taper angle'))
        );

  WR17: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'combined drill and reamer',
         'combined drill and tap']))
        OR
        ((verify_required_tool_body_item       (SELF, 'drill length')) AND
         (verify_length_measure_tool_body_item (SELF, 'drill length'))
        );

  WR18: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'boring tool'))
        OR
        ((verify_required_tool_body_item    (SELF, 'retract movement')) AND
         (verify_enumeration_tool_body_item (SELF, 'retract movement',
           ['permitted', 'forbidden']))
        );

  WR19: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'user defined milling tool'))
        OR
        ((verify_optional_tool_body_item  (SELF, 'tool description')) AND
         (verify_rep_item_for_tool_body   (SELF, 'tool description',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'])) AND

         (verify_optional_tool_body_item
           (SELF, 'corner radius')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'corner radius')) AND

         (verify_optional_tool_body_item
           (SELF, 'corner radius center horizontal')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'corner radius center horizontal')) AND

         (verify_optional_tool_body_item
           (SELF, 'corner radius center vertical')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'corner radius center vertical')) AND

         (verify_optional_tool_body_item       (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'taper angle')) AND

         (verify_optional_tool_body_item       (SELF, 'tip outer angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'tip outer angle'))
        );

  WR20: NOT (SELF.kind.name = 'turning cutting tool') OR
        ((verify_required_tool_body_item       (SELF, 'functional length')) AND
         (verify_length_measure_tool_body_item (SELF, 'functional length')) AND

         (verify_required_tool_body_item       (SELF, 'f dimension')) AND
         (verify_length_measure_tool_body_item (SELF, 'f dimension')) AND

         (verify_optional_tool_body_item
           (SELF, 'minimum cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum cutting diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'a dimension on f')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'a dimension on f')) AND

         (verify_optional_tool_body_item
           (SELF, 'a dimension on lf')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'a dimension on lf')) AND

         (verify_optional_tool_body_item    (SELF, 'hand of cut')) AND
         (verify_enumeration_tool_body_item (SELF, 'hand of cut',
           ['left', 'right', 'neutral'])) AND

         (0 <= SIZEOF (QUERY (arr <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE') |
          (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_CUTTING_COMPONENT'
             IN TYPEOF (arr.related_resource)) AND
           (arr.related_resource.kind.name = 'turning cutting edge') ))))
        );

  WR21: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'turning threading tool'))
        OR
        ((verify_required_tool_body_item       (SELF, 'threading pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'threading pitch')) AND

         (verify_required_tool_body_item       (SELF, 'thread hand')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread hand',
           ['left', 'right'])) AND

         (verify_required_tool_body_item       (SELF, 'thread type')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread type',
           ['internal', 'external'])) AND

         (verify_required_tool_body_item       (SELF, 'thread profile')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread profile',
           ['full', 'partial'])) AND

         (verify_required_tool_body_item  (SELF, 'thread form type')) AND
         (verify_rep_item_for_tool_body   (SELF, 'thread form type',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']))
        );

  WR22: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'grooving tool'))
        OR
        ((verify_required_tool_body_item
           (SELF, 'cutting width')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'cutting width')) AND

         (verify_required_tool_body_item
           (SELF, 'maximum grooving depth')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum grooving depth')) AND

         (verify_optional_tool_body_item
           (SELF, 'corner radius')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'corner radius')) AND

         (verify_optional_tool_body_item
           (SELF, 'maximum axial grooving diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum axial grooving diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'minimum axial grooving diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum axial grooving diameter'))
        );

  WR23: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'knurling tool'))
        OR
        ((verify_required_tool_body_item    (SELF, 'knurl pattern')) AND
         (verify_enumeration_tool_body_item (SELF, 'knurl pattern',
           ['straight', 'diagonal', 'diamond'])) AND

         (verify_optional_tool_body_item       (SELF, 'cutting length')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting length')) AND

         (verify_optional_tool_body_item       (SELF, 'cutting angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'cutting angle')) AND

         (verify_optional_tool_body_item       (SELF, 'cutting pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting pitch'))
        );

  WR24: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'user defined turning tool'))
        OR
        ((verify_required_tool_body_item  (SELF, 'tool identifier')) AND
         (verify_rep_item_for_tool_body   (SELF, 'tool identifier',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']))
        );

  WR25: (1 >= SIZEOF (QUERY (rar <* USEDIN (SELF,
          'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES') |
         ((1 = SIZEOF(rar.operations)) AND
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_USAGE'
           IN TYPEOF (rar\action_resource_requirement.operations[1])))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool', the machining_tool shall satisfy the following conditions:

WR2: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'counterbore', 'countersink', 'spade drill', 'spot drill', 'step drill', 'tapered drill', 'twist drill', or 'drill', the machining_tool shall satisfy the following conditions:

WR3: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'countersink', the machining_tool shall satisfy the following conditions:

WR4: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'tapered drill', machining_tool shall satisfy the following conditions:

WR5: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'step drill', machining_tool shall satisfy the following conditions:

WR6: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'ballnose endmill', 'bullnose endmill', 'dovetail mill', 'endmill', 'facemill', 'profiled endmill', 'shoulder mill', 'tee slot mill', 'thread mill', or 'side mill', machining_tool shall satisfy the following conditions:

WR7: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'ballnose endmill', 'bullnose endmill', 'endmill', 'facemill', or 'profiled endmill', the machining_tool shall satisfy the following conditions:

WR8: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'ballnose endmill', the conditions tested by the verify_ballnose_endmill_dimensions shall be satisfied.

NOTE This corresponds to the local constraint WR1on Ballnose_endmill in ISO 14649-111

WR9: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'bullnose endmill', the conditions tested by the verify_bullnose_endmill_dimensions shall be satisfied.

NOTE This corresponds to the local constraint WR1on Bullnose_endmill in ISO 14649-111

WR10: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'tee slot mill', the machining_tool shall satisfy the following conditions:

WR11: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'dovetail mill', the machining_tool shall satisfy the following conditions:

WR12: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'side mill', the machining_tool shall satisfy the following conditions:

WR13: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'thread mill', 'tapping tool', or 'combined drill and tap', the machining_tool shall satisfy the following conditions:

WR14: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'tapping tool' or 'combined drill and tap', the machining_tool shall satisfy the following conditions:

WR15: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'reamer', 'combined drill and reamer', or 'tapered reamer', the machining_tool shall satisfy the following conditions:

WR16: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'tapered reamer', the machining_tool shall satisfy the following conditions:

WR17: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'combined drill and reamer' or 'combined drill and tap', the machining_tool shall satisfy the following conditions:

WR18: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'boring tool', the machining_tool shall satisfy the following conditions:

WR19: If the kind of the machining_tool is an action_resource_type with a name of 'milling cutting tool' and the description of the machining_tool is 'user defined milling tool', the machining_tool shall satisfy the following conditions:

WR20: If the kind of the machining_tool is an action_resource_type with a name of 'turning cutting tool', the machining_tool shall satisfy the following conditions:

WR21: If the kind of the machining_tool is an action_resource_type with a name of 'turning cutting tool' and the description of the machining_tool is 'turning threading tool', the machining_tool shall satisfy the following conditions:

WR22: If the kind of the machining_tool is an action_resource_type with a name of 'turning cutting tool' and the description of the machining_tool is 'grooving tool', the machining_tool shall satisfy the following conditions:

WR23: If the kind of the machining_tool is an action_resource_type with a name of 'turning cutting tool' and the description of the machining_tool is 'knurling tool', the machining_tool shall satisfy the following conditions:

WR24: If the kind of the machining_tool is an action_resource_type with a name of 'turning cutting tool' and the description of the machining_tool is 'user defined turning tool', the machining_tool shall satisfy the following conditions:

WR25: The machining_tool shall be a member of the resources attribute of at most one requirement_for_action_resource which has an operations attribute containing a single instance which is of type machining_tool_usage.

Informal propositions:

IP1: The machining_tool name shall be unique.

5.2.4.1.63 machining_tool_body_representation

A machining_tool_body_representation is a type of representation that describes the body configuration parameters of a tool for machining.

EXPRESS specification:
*)
ENTITY machining_tool_body_representation
  SUBTYPE OF (representation);
END_ENTITY;
(*
5.2.4.1.64 machining_tool_direction_representation

A machining_tool_direction_representation is a type of representation that represents direction of the cutting tool for freeform machining. See the ARM definition for Tool_direction in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_tool_direction_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  (SELF.name IN ['two axes', 'three axes', 'three axes tilted tool',
        'five axes const tilt yaw', 'five axes var tilt yaw']);

  WR2:  NOT (SELF.name = 'three axes tilted tool') OR
        ((verify_required_rep_item       (SELF, 'tool direction orientation')) AND
         (0 = SIZEOF (QUERY ( it <* SELF.items |
          (it.name = 'tool direction orientation') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION' IN TYPEOF(it)))))
        );

  WR3:  NOT (SELF.name = 'five axes const tilt yaw') OR
       ((verify_required_rep_item       (SELF, 'tool direction tilt angle')) AND
        (verify_angle_measure_rep_item  (SELF, 'tool direction tilt angle')) AND

        (verify_required_rep_item       (SELF, 'tool direction yaw angle')) AND
        (verify_angle_measure_rep_item  (SELF, 'tool direction yaw angle'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The name of the machining_tool_direction_representation shall be either 'two axes', 'three axes', 'three axes tilted tool', 'five axes const tilt yaw', or 'five axes var tilt yaw'.

WR2: If the name of the machining_tool_direction_representation is 'three axes tilted tool', the items set shall contain exactly one representation_item with a name of 'tool direction orientation', which shall be of type direction.

WR3: If the name of the machining_tool_direction_representation is 'five axes const tilt yaw', the items set shall contain exactly one representation_item with a name of 'tool direction tilt angle', which shall be of type measure_representation_item and plane_angle_measure_with_unit, and the items set shall also contain exactly one representation_item with a name of 'tool direction yaw angle', which shall be of type measure_representation_item and plane_angle_measure_with_unit.

5.2.4.1.65 machining_tool_usage

A machining_tool_usage is a type of action_method that represents tool usage to satisfy requirements for machining. See the ARM definition for Tool_usage for more information.

EXPRESS specification:
*)
ENTITY machining_tool_usage
  SUBTYPE OF (action_method);
  WHERE
  WR1:  ((verify_optional_action_property    (SELF, 'tool position')) AND
         (verify_descriptive_action_property (SELF, 'tool position')));

  WR2:  ((verify_optional_action_property    (SELF, 'tool carousel')) AND
         (verify_descriptive_action_property (SELF, 'tool carousel')));

  WR3:  (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'tool usage')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'tool usage') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS' IN TYPEOF (act))
        )));

  WR4:  ((verify_optional_action_property (SELF, 'gage placement')) AND
         (verify_rep_item_for_action_property (SELF, 'gage placement',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));

  WR5:  ((verify_optional_action_property (SELF, 'tool end placement')) AND
         (verify_rep_item_for_action_property (SELF, 'tool end placement',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_tool_usage shall be the definition of at most one action_property with a name of 'tool position', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item.

WR2: The machining_tool_usage shall be the definition of at most one action_property with a name of 'tool carousel', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item.

WR3: The machining_tool_usage shall be the chosen_method of at most one product_definition_process with a name of 'tool usage'.

WR4: The machining_tool_usage shall shall be the definition of at most one action_property with a name of 'gage placement', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

WR5: The machining_tool_usage shall shall be the definition of at most one action_property with a name of 'tool end placement', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

5.2.4.1.66 machining_toolpath

A machining_toolpath is a type of action_method that restricts a step in a machining process to use a specific movement of the machine axes. See the ARM definitions for Toolpath and subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_toolpath
  SUBTYPE OF (action_method);
  WHERE
  WR1:  (SELF.description IN ['feedstop', 'axis trajectory',
        'cutter location trajectory', 'cutter contact trajectory',
        'approach lift path angle', 'approach lift path tangent',
        'connect security plane', 'connect direct']);

  WR2:  (verify_optional_action_property        (SELF, 'priority')) AND
        (verify_enumeration_action_property     (SELF, 'priority',
         ['required', 'suggested']));

  WR3:  (verify_optional_action_property        (SELF, 'trajectory type')) AND
        (verify_enumeration_action_property     (SELF, 'trajectory type',
         ['approach', 'lift', 'connect', 'non-contact',
          'contact', 'trajectory path']));

  WR4:  ((verify_optional_action_property        (SELF, 'speed profile')) AND
         (0 = SIZEOF (QUERY (prop <*
           get_action_property (SELF, 'speed profile') | NOT
           (0 < SIZEOF (QUERY (prep <* USEDIN (prop,
                'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
                ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                 'MACHINING_TOOLPATH_SPEED_PROFILE_REPRESENTATION'
                 IN TYPEOF(prep.representation)) )))
         )))
        );

  WR5:  (verify_optional_relating_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'])) AND
        (verify_related_type_for_amr    (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TECHNOLOGY']));

  WR6:  (verify_optional_relating_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'])) AND
        (verify_related_type_for_amr    (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FUNCTIONS']));


  WR7:  NOT (SELF.description IN ['axis trajectory',
                'cutter location trajectory',
                'cutter contact trajectory']) OR
        ((verify_optional_action_property    (SELF, 'direction')) AND
         (verify_enumeration_action_property (SELF, 'direction',
          ['beginning to end', 'end to beginning']))
        );


  WR8:  NOT (SELF.description = 'connect security plane') OR
        ((verify_optional_action_property     (SELF, 'up direction')) AND
         (verify_rep_item_for_action_property (SELF, 'up direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'down direction')) AND
         (verify_rep_item_for_action_property (SELF, 'down direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION']))
        );

  WR9:  NOT (SELF.description = 'feedstop') OR
        ((verify_required_action_property     (SELF, 'dwell')) AND
         (verify_time_measure_action_property (SELF, 'dwell'))
        );

  WR10: NOT (SELF.description = 'axis trajectory') OR
        ((verify_required_action_property     (SELF, 'axis commands')) AND

         -- axis commands property must contain one or more bounded curves
         (0 = SIZEOF (QUERY (prop <* get_action_property (SELF, 'axis commands') |
          NOT ((0 < SIZEOF (QUERY (prep <* USEDIN (prop,
               'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
              (1 <= SIZEOF (QUERY (it <* prep.representation.items |
                 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE' in TYPEOF(it)))))
                )))))))
        );

  WR11: NOT (SELF.description IN ['approach lift path angle',
           'approach lift path tangent']) OR
        ((verify_required_action_property     (SELF, 'fix point')) AND
         (verify_rep_item_for_action_property (SELF, 'fix point',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'])) AND

         (verify_optional_action_property     (SELF, 'fix point direction')) AND
         (verify_rep_item_for_action_property (SELF, 'fix point direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION']))
        );

  WR12: NOT (SELF.description = 'approach lift path angle') OR
        ((verify_required_action_property      (SELF, 'angle')) AND
         (verify_angle_measure_action_property (SELF, 'angle')) AND

         (verify_required_action_property       (SELF, 'bend distance')) AND
         (verify_length_measure_action_property (SELF, 'bend distance'))
        );

  WR13: NOT (SELF.description = 'approach lift path tangent') OR
        ((verify_required_action_property       (SELF, 'radius')) AND
         (verify_length_measure_action_property (SELF, 'radius'))
        );

  WR14: NOT (SELF.description = 'cutter location trajectory') OR
        ((verify_required_action_property     (SELF, 'basic curve')) AND
         (verify_rep_item_for_action_property (SELF, 'basic curve',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property     (SELF, 'surface normal')) AND
         (verify_rep_item_for_action_property (SELF, 'surface normal',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property     (SELF, 'tool axis')) AND
         (verify_rep_item_for_action_property (SELF, 'tool axis',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property
           (SELF, 'tool reference direction')) AND
         (verify_rep_item_for_action_property
           (SELF, 'tool reference direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property
          (SELF, 'path maximum deviation')) AND
         (verify_length_measure_action_property
          (SELF, 'path maximum deviation')) AND

         (verify_optional_action_property
          (SELF, 'tool axis maximum deviation')) AND
         (verify_angle_measure_action_property
          (SELF, 'tool axis maximum deviation'))
        );

  WR15: NOT (SELF.description = 'cutter contact trajectory') OR
        ((((verify_required_action_property     (SELF, 'basic curve')) AND
           (verify_rep_item_for_action_property (SELF, 'basic curve',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_PCURVE'])) )

           OR

          ((verify_required_action_property     (SELF, 'basic curve')) AND
           (verify_rep_item_for_action_property (SELF, 'basic curve',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

           (verify_required_action_property     (SELF, 'surface normal')) AND
           (verify_rep_item_for_action_property (SELF, 'surface normal',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) )
          ) AND

         (verify_optional_action_property     (SELF, 'tool axis')) AND
         (verify_rep_item_for_action_property (SELF, 'tool axis',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property
           (SELF, 'tool reference direction')) AND
         (verify_rep_item_for_action_property
           (SELF, 'tool reference direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE'])) AND

         (verify_optional_action_property     (SELF, 'contact type')) AND
         (verify_enumeration_action_property  (SELF, 'contact type',
           ['side', 'front'])) AND

         (verify_optional_action_property
          (SELF, 'path maximum deviation')) AND
         (verify_length_measure_action_property
          (SELF, 'path maximum deviation')) AND

         (verify_optional_action_property
          (SELF, 'tool axis maximum deviation')) AND
         (verify_angle_measure_action_property
          (SELF, 'tool axis maximum deviation'))
        );

  WR16: NOT (SELF.description IN ['axis trajectory',
                'cutter location trajectory',
                'cutter contact trajectory']) OR
        ((verify_optional_action_property
            (SELF, 'material removal depth')) AND
         ((verify_length_measure_action_property
            (SELF, 'material removal depth')) OR
          (verify_rep_item_for_action_property
            (SELF, 'material removal depth',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE']))) AND

         (verify_optional_action_property
            (SELF, 'material removal overcut')) AND
         ((verify_length_measure_action_property
            (SELF, 'material removal overcut')) OR
          (verify_rep_item_for_action_property
            (SELF, 'material removal overcut',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE']))) AND

         (verify_optional_action_property
            (SELF, 'material removal total volume')) AND
         (verify_rep_item_for_action_property
            (SELF, 'material removal total volume',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'])) AND

         (verify_optional_action_property
            (SELF, 'cross section area parameters')) AND
         (verify_rep_item_for_action_property
            (SELF, 'cross section area parameters',
            ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.BOUNDED_CURVE']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The description of the machining_toolpath shall be either ''feedstop', 'axis trajectory', 'cutter location trajectory', 'cutter contact trajectory', 'approach lift path angle', 'approach lift path tangent', 'connect security plane', or 'connect direct'.

WR2: The machining_toolpath shall be the definition of at most one action_property with a name of 'priority', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of 'required' or 'suggested'.

WR3: The machining_toolpath shall be the definition of at most one action_property with a name of 'trajectory type', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of 'approach', 'lift', 'connect', 'non-contact', 'contact', or 'trajectory path'.

WR4: The machining_toolpath shall be the definition of at most one action_property with a name of 'speed profile', and the representation used to describe the action_property shall be of type machining_toolpath_speed_profile_representation.

WR5: The machining_toolpath shall be the relating_method of at most one machining_technology_relationship, in which the related_method shall be of type machining_technology.

WR6: The machining_toolpath shall be the relating_method of at most one machining_functions_relationship, in which the related_method shall be of type machining_functions.

WR7: If the description of the machining_toolpath is 'axis trajectory', 'cutter location trajectory', or 'cutter contact trajectory', the machining_toolpath shall be the definition of at most one action_property with a name of 'direction', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of 'beginning to end' or 'end to beginning'.

WR8: If the description of the machining_toolpath is 'connect security plane', the machining_toolpath shall satisfy the following conditions:

WR9: If the description of the machining_toolpath is 'feedstop', the machining_toolpath shall be the definition of exactly one action_property with a name of 'dwell', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and time_measure_with_unit.

WR10: If the description of the machining_toolpath is 'axis trajectory', the machining_toolpath shall be the definition of exactly one action_property with a name of 'axis commands', and the representation used to describe the action_property shall contain at least one representation_item of type bounded_curve.

WR11: If the description of the machining_toolpath is either 'approach lift path angle' or 'approach lift path tangent', the machining_toolpath shall satisfy the following conditions:

WR12: If the description of the machining_toolpath is 'approach lift path angle', the machining_toolpath shall satisfy the following conditions:

WR13: If the description of the machining_toolpath is 'approach lift path tangent', the machining_toolpath shall be the definition of exactly one action_property with a name of 'radius', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR14: If the description of the machining_toolpath is 'cutter location trajectory', the machining_toolpath shall satisfy the following conditions:

WR15: If the description of the machining_toolpath is 'cutter contact trajectory', the machining_toolpath shall satisfy the following conditions:

WR16: If the description of the machining_toolpath is 'axis trajectory', 'cutter location trajectory', or 'cutter contact trajectory', the machining_toolpath shall satisfy the following conditions:

5.2.4.1.67 machining_toolpath_sequence_relationship

A machining_toolpath_sequence_relationship is a type of sequential_method that represents use of a Toolpath as an element of a sequence in an Operation or strategy. See the ARM definitions for Workpiece_setup in ISO 14649-10 and Along_path in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY machining_toolpath_sequence_relationship
  SUBTYPE OF (sequential_method);
END_ENTITY;
(*
5.2.4.1.68 machining_toolpath_speed_profile_representation

A machining_toolpath_speed_profile_representation is a type of representation that represents the variation of feedrate as the machine axes move through a tool path. See the ARM definition for Toolpath_speedprofile in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_toolpath_speed_profile_representation
  SUBTYPE OF (representation);
  WHERE
  WR1:  (1 = SIZEOF (QUERY ( it <* SELF.items |
          ( (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.B_SPLINE_CURVE'
              IN TYPEOF(it))) OR

            (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
              IN TYPEOF(it)) AND
             (it.description IN ['rapid']))  OR

            ((SIZEOF([
              'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
              'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'] *
              TYPEOF(it)) = 2))
           )
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The items set shall contain exactly one representation_item that is either of type b_spline_curve, of type descriptive_representation_item with a description of 'side', or of type measure_representation_item and ratio_measure_with_unit.

5.2.4.1.69 machining_touch_probing

A machining_touch_probing is a type of machining_operation that represents a measurement step in a machining process. See the ARM definitions for Touch_probing and subtypes in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_touch_probing
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  (SELF.description IN ['feature complete probing',
          'tool length probing', 'tool radius probing',
          'workpiece probing', 'workpiece complete probing']);

  WR2:  ((verify_required_action_property       (SELF, 'security plane')) AND
         (verify_rep_item_for_action_property   (SELF, 'security plane',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'])));

  WR3:  ((verify_required_action_property       (SELF, 'measured offset')) AND
         (verify_rep_item_for_action_property   (SELF, 'measured offset',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'])));

  WR4:  NOT (SELF.description = 'workpiece probing') OR
        ((verify_required_action_property       (SELF, 'start position')) AND
         (verify_rep_item_for_action_property   (SELF, 'start position',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])) AND

        (1 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'workpiece probing')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'workpiece probing') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act))))) AND

         (verify_required_action_property       (SELF, 'direction')) AND
         (verify_rep_item_for_action_property   (SELF, 'direction',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_required_action_property       (SELF, 'expected value')) AND
         (verify_rep_item_for_action_property   (SELF, 'expected value',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'])) AND

         (1 = SIZEOF (QUERY (mt <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))))
        );

  WR5:  NOT (SELF.description = 'workpiece complete probing') OR
        ((1 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'workpiece complete probing')))) AND
         (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'workpiece complete probing') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS'
            IN TYPEOF (act))))) AND

         (verify_required_action_property       (SELF, 'probing distance')) AND
         (verify_rep_item_for_action_property   (SELF, 'probing distance',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'])) AND

         (1 = SIZEOF (QUERY (mt <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt))))) AND

         (verify_required_action_property       (SELF, 'computed offset')) AND
         (verify_rep_type_for_action_property   (SELF, 'computed offset',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OFFSET_VECTOR_REPRESENTATION']))
        );

  WR6:  NOT (SELF.description IN ['tool length probing',
          'tool radius probing']) OR
        ((verify_required_action_property       (SELF, 'offset')) AND
         (verify_rep_item_for_action_property   (SELF, 'offset',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.CARTESIAN_POINT'])) AND

         (verify_required_action_property       (SELF, 'maximum wear')) AND
         (verify_length_measure_action_property (SELF, 'maximum wear')) AND

         (1 = SIZEOF (QUERY (mt <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_RESOURCE.USAGE') |
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The description of the machining_touch_probing shall be either 'feature complete probing', 'workpiece probing', 'workpiece complete probing', 'tool length probing', or 'tool radius probing'.

WR2: The machining_touch_probing shall be the definition of exactly one action_property with a name of 'security plane', and the representation used to describe the action_property shall contain a representation_item of type elementary_surface.

WR3: The machining_touch_probing shall be the definition of exactly one action_property with a name of 'measured offset', and the representation used to describe the action_property shall contain a representation_item of type expression_representation_item and numeric_variable.

WR4: If the description of the machining_touch_probing is 'workpiece probing', the machining_touch_probing shall satisfy the following conditions:

WR5: If the description of the machining_touch_probing is 'workpiece complete probing', the machining_touch_probing shall satisfy the following conditions:

WR6: If the description of the machining_touch_probing is either 'tool length probing' or 'tool radius probing', the machining_touch_probing shall satisfy the following conditions:

5.2.4.1.70 machining_twin_relationship

A machining_twin_relationship is a type of action_method_relationship that represents the association of an Executable with another Executable as its twin_plan. See the Workplan.twin_plan for more information.

EXPRESS specification:
*)
ENTITY machining_twin_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.71 machining_usage_relationship

A machining_usage_relationship is a type of action_method_relationship that represents the association of a Machine_usage with a Workplan. See the Workplan.its_machine-usage for more information.

EXPRESS specification:
*)
ENTITY machining_usage_relationship
  SUBTYPE OF (action_method_relationship);
END_ENTITY;
(*
5.2.4.1.72 machining_workingstep

A machining_workingstep is a type of machining_process_executable that represents a step in a machining process. See the ARM definition for Machining_workingstep in ISO 14649-10 and Turning_workingstep in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY machining_workingstep
  SUBTYPE OF (machining_process_executable);
  WHERE
  WR1:  ((verify_optional_action_property     (SELF, 'security plane')) AND
         (verify_rep_item_for_action_property (SELF, 'security plane',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ELEMENTARY_SURFACE'])));

  WR2:  NOT (SELF.description = 'machining') OR
        ((verify_required_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'])) AND
         (verify_related_type_for_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND

         (verify_related_type_for_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FINAL_FEATURE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND

         (verify_required_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION']))
        );

  WR3:  NOT (SELF.description = 'turning') OR
        ((2 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'])) AND
         (verify_related_type_for_amr    (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND

         (verify_required_relating_amr  (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'])) AND
         (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TURNING_TYPE_OPERATION']))
        );

  WR4:  ((verify_optional_action_property (SELF, 'toolpath orientation')) AND
         (verify_rep_item_for_action_property (SELF, 'toolpath orientation',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));

END_ENTITY;
(*
Formal propositions:

WR1: The machining_workingstep shall be the definition of at most one action_property with a name of 'security plane', and the representation used to describe the action_property shall contain a representation_item of type elementary_surface.

WR2: If the description of the machining_workingstep is 'machining', the machining_workingstep shall satisfy the following conditions:

WR3: If the description of the machining_workingstep is 'turning', the machining_workingstep shall satisfy the following conditions:

WR4: The machining_workingstep shall be the definition of at most one action_property with a name of 'toolpath orientation', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

Informal propositions:

IP1: If the description of the machining_workingstep is 'turning', all sequential_method instances with a name of 'process feature' which refer to the machining_workingstep through the related attribute shall have unique sequence_position values.

5.2.4.1.73 machining_workplan

A machining_workplan is a type of machining_process_executable that represents a sequence of steps in a machining process. See the ARM definition for Manufacturing_feature in ISO 14649-10 for more information.

EXPRESS specification:
*)
ENTITY machining_workplan
  SUBTYPE OF (machining_process_executable);
  WHERE
  WR1:  (1 <= get_count_of_relating_amr (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'])) AND
        (verify_related_type_for_amr   (SELF,
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_PROCESS_EXECUTABLE']));

  WR2:  (verify_optional_action_property (SELF, 'channel'));

  WR3:  (1 >= SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'setup')))) AND
        (0 = SIZEOF (QUERY (act <*
          USEDIN (SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION.CHOSEN_METHOD') |
          (act.name = 'setup') AND NOT
          ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PRODUCT_DEFINITION_PROCESS' IN TYPEOF (act))
        )));

  WR4:  ((verify_optional_action_property (SELF, 'toolpath orientation')) AND
         (verify_rep_item_for_action_property (SELF, 'toolpath orientation',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.AXIS2_PLACEMENT_3D'])));
END_ENTITY;
(*
Formal propositions:

WR1: The machining_workplan shall be the relating_method of at least one machining_process_sequence_relationship, in which the related_method is of type machining_process_executable.

WR2: The machining_workplan shall be the definition of at most one action_property with a name of 'channel'.

WR3: The machining_workplan shall be the chosen_method of at most one product_definition_process with a name of 'setup'.

WR4: The machining_workplan shall be the definition of at most one action_property with a name of 'toolpath orientation', and the representation used to describe the action_property shall contain a representation_item of type axis2_placement_3d.

Informal propositions:

IP1: All machining_process_sequence_relationship instances which refer to the same machining_workplan through the relating_method attribute shall have unique sequence_position values.

5.2.4.1.74 milling_type_operation

A milling_type_operation is a type of machining_operation that represents the details of a milling step of a machining process. See the ARM definitions for Milling_type_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY milling_type_operation
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  (verify_optional_action_property        (SELF, 'overcut length')) AND
        (verify_length_measure_action_property  (SELF, 'overcut length'));

  WR2:  ((verify_optional_relating_amr_with_name  (SELF, 'approach',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'approach',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
        );

  WR3:  ((verify_optional_relating_amr_with_name  (SELF, 'retract',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'retract',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
        );

  WR4:  ((verify_optional_relating_amr_with_name  (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MILLING_TYPE_STRATEGY']))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The milling_type_operation shall be the definition of at most one action_property with a name of 'overcut length', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit

WR2: The milling_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'approach', in which the related_method shall be of type machining_approach_retract_strategy.

WR3: The milling_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'retract', in which the related_method shall be of type machining_approach_retract_strategy.

WR4: The milling_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'machining', in which the related_method shall be of type milling_type_strategy.

5.2.4.1.75 milling_type_strategy

A milling_type_strategy is a type of machining_strategy that represents the approach used to determine the motion of the cutting tool during a milling operation. See the ARM definitions for Two5D_milling_strategy, Freeform_strategy, and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY milling_type_strategy
  SUBTYPE OF (machining_strategy);
  WHERE
  WR1:  NOT (SELF.description IN ['bidirectional', 'bidirectional contour',
          'center milling', 'contour bidirectional', 'contour parallel',
          'contour spiral', 'explicit', 'unidirectional']) OR
     ((verify_optional_action_property       (SELF, 'overlap ratio')) AND
      (verify_ratio_measure_action_property  (SELF, 'overlap ratio')) AND

      (verify_optional_action_property       (SELF, 'multiple passes')) AND
      (verify_enumeration_action_property    (SELF, 'multiple passes',
          ['multiple passes allowed', 'multiple passes not allowed'])) );

  WR2:  NOT (SELF.description = 'bidirectional') OR
     ((verify_optional_action_property       (SELF, 'feed direction')) AND
      (verify_rep_item_for_action_property   (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

      (verify_optional_action_property       (SELF, 'stepover direction')) AND
      (verify_enumeration_action_property    (SELF, 'stepover direction',
           ['left', 'right'])) AND

      (verify_optional_action_property       (SELF, 'connection strategy')) AND
      (verify_enumeration_action_property    (SELF, 'connection strategy',
           ['straight line', 'lift shift plunge', 'degouge', 'loop back'])) );

  WR3:  NOT (SELF.description IN ['bidirectional contour',
                'contour bidirectional']) OR
      ((verify_optional_action_property       (SELF, 'feed direction')) AND
       (verify_rep_item_for_action_property   (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

       (verify_optional_action_property       (SELF, 'stepover direction')) AND
       (verify_enumeration_action_property    (SELF, 'stepover direction',
           ['left', 'right'])) AND

       (verify_optional_action_property       (SELF, 'rotation direction')) AND
       (verify_enumeration_action_property    (SELF, 'rotation direction',
           ['clockwise', 'counterclockwise'])) AND

       (verify_optional_action_property       (SELF, 'spiral cutmode')) AND
       (verify_enumeration_action_property    (SELF, 'spiral cutmode',
           ['climb', 'conventional'])) );

  WR4:  NOT (SELF.description IN ['contour parallel', 'contour spiral']) OR
      ((verify_optional_action_property       (SELF, 'rotation direction')) AND
       (verify_enumeration_action_property    (SELF, 'rotation direction',
           ['clockwise', 'counterclockwise'])) AND

       (verify_optional_action_property       (SELF, 'cutmode')) AND
       (verify_enumeration_action_property    (SELF, 'cutmode',
           ['climb', 'conventional'])) );

  WR5:  NOT (SELF.description = 'unidirectional') OR
        ((verify_optional_action_property       (SELF, 'feed direction')) AND
         (verify_rep_item_for_action_property   (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property       (SELF, 'cutmode')) AND
         (verify_enumeration_action_property    (SELF, 'cutmode',
           ['climb', 'conventional'])) );
END_ENTITY;
(*
Formal propositions:

WR1: If the description of the milling_type_strategy is either 'bidirectional', 'bidirectional contour', 'center milling', 'contour bidirectional', 'contour parallel', 'contour spiral', 'explicit', or 'unidirectional', the milling_type_strategy shall satisfy the following conditions:

WR2: If the description of the milling_type_strategy is 'bidirectional', the milling_type_strategy shall satisfy the following conditions:

WR3: If the description of the milling_type_strategy is either 'bidirectional contour' or 'contour bidirectional', the milling_type_strategy shall satisfy the following conditions:

WR4: If the description of the milling_type_strategy is either 'contour parallel' or 'contour spiral', the milling_type_strategy shall satisfy the following conditions:

WR5: If the description of the milling_type_strategy is 'unidirectional', the milling_type_strategy shall satisfy the following conditions:

5.2.4.1.76 ngon_shape_representation

An ngon_shape_representation specifies representation of a shape that is a volume defined as a ngon area of a defined length. The enclosed area shall be as defined by three or more straight sides.

NOTE This definition has been harmonized with the equivalent definition in ISO 10303-224.

EXPRESS specification:
*)
ENTITY ngon_shape_representation
  SUBTYPE OF (shape_representation_with_parameters);
  WHERE
    WR1: (SIZEOF(SELF.items) = 5);
    WR2: (SIZEOF(QUERY ( it <* SELF.items |
         (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLACEMENT'
         IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1);
    WR3: (SIZEOF(QUERY ( it <* SELF.items |
         ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
         TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1);
    WR4: (SIZEOF(QUERY ( it <* SELF.items |
         ((SIZEOF([
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
         TYPEOF(it)) = 2) AND (it.name = 'corner radius')) )) = 1);
    WR5: SIZEOF (QUERY (it <* SELF.items |
         (SIZEOF
         (['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
         TYPEOF (it)) = 2) AND
       (it.name IN ['circumscribed diameter','diameter across flats']) ))= 1;
    WR6: (SIZEOF(QUERY ( it <* SELF.items |
         (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
         IN TYPEOF(it)) AND
         ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
         IN TYPEOF(it\measure_with_unit.value_component)) AND
         (it.name = 'number of sides')) )) = 1);
END_ENTITY; -- ngon_shape_representation
(*
Formal propositions:

WR1: The ngon_shape_representation shall contain exactly five representation_items in its set of items.

WR2: One of the representation_items used for the implicit representation of a ngon_shape_representation shall be of type placement with a name of 'orientation'.

WR3: One of the representation_items used for the implicit representation of a ngon_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'length'.

WR4: One of the representation_items used for the implicit representation of a ngon_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'corner radius'.

WR5: One of the representation_items used for the implicit representation of a ngon_shape_representation shall be of type measure_representation_item and length_measure_with_unit with a name of 'circumscribed diameter' or 'diameter across flats'.

WR6: One of the representation_items used for the implicit representation of a ngon_shape_representation shall be of type measure_representation_item with a value_component of type count_measure and a name of 'number of sides'.

Informal propositions:

IP1: The location of the ngon_shape_representation shall be defined at the centre of the enclosed area.

IP2: The ngon_shape_representation shall be defined with the enclosed area in the X-Y plane with one of the sides of the ngon parallel to the X direction intersecting the negative Y axis. The length is along the Z direction.

5.2.4.1.77 plane_milling_operation

A plane_milling_operation is a type of milling_type_operation that represents a 2.5D milling step in which material is removed perpendicular to the cutting tool axis. See the ARM definitions for Plane_milling_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY plane_milling_operation
  SUBTYPE OF (milling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property  (SELF, 'axial cutting depth')) AND
        (verify_length_measure_action_property (SELF, 'axial cutting depth'));

  WR3:  (verify_optional_action_property        (SELF, 'allowance bottom')) AND
        (verify_length_measure_action_property  (SELF, 'allowance bottom'));

  WR4:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance bottom'));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the plane_milling_operation shall be either 'roughing' or 'finishing'.

WR2: The plane_milling_operation shall be the definition of at most one action_property with a name of 'axial cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: The plane_milling_operation shall be the definition of at most one action_property with a name of 'allowance bottom', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: If the description of the plane_milling_operation is 'roughing', the plane_milling_operation shall be the definition of exactly one action_property with a name of 'allowance bottom'.

NOTE This corresponds to local constraint WR1 on the ARM entity Plane_rough_milling in ISO 14649-11.

5.2.4.1.78 side_milling_operation

A side_milling_operation is a milling_type_operation that represents a 2.5D milling step in which material is removed parallel to the cutting tool axis. See the ARM definitions for Side_milling_operation and subtypes in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY side_milling_operation
  SUBTYPE OF (milling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property   (SELF, 'axial cutting depth')) AND
        (verify_length_measure_action_property (SELF, 'axial cutting depth'));

  WR3:  (verify_optional_action_property   (SELF, 'radial cutting depth')) AND
        (verify_length_measure_action_property (SELF, 'radial cutting depth'));

  WR4:  (verify_optional_action_property        (SELF, 'allowance side')) AND
        (verify_length_measure_action_property  (SELF, 'allowance side'));

  WR5:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance side'));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the side_milling_operation shall be either 'roughing' or 'finishing'.

WR2: The side_milling_operation shall be the definition of at most one action_property with a name of 'axial cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: The side_milling_operation shall be the definition of at most one action_property with a name of 'radial cutting depth', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR4: The side_milling_operation shall be the definition of at most one action_property with a name of 'allowance side', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR5: If the description of the side_milling_operation is 'roughing', the side_milling_operation shall be the definition of exactly one action_property with a name of 'allowance side'.

NOTE This corresponds to local constraint WR1 on the ARM entity Side_rough_milling in ISO 14649-11.

5.2.4.1.79 tapping_operation

A tapping_operation is a type of drilling_type_operation that represents the details of a drilling step in which in internal threads are cut. See the ARM definitions for Tapping and Thread_drilling in ISO 14649-11 for more information.

EXPRESS specification:
*)
ENTITY tapping_operation
  SUBTYPE OF (drilling_type_operation);
  WHERE
  WR1:  (SELF.description IN ['tapping','thread drilling']);

  WR2:  NOT (SELF.description = 'tapping') OR
        ((verify_optional_action_property    (SELF, 'compensation chuck')) AND
         (verify_enumeration_action_property (SELF, 'compensation chuck',
          ['compensation chuck used', 'compensation chuck not used'])));

  WR3:  NOT (SELF.description = 'thread drilling') OR
        ((verify_optional_action_property
           (SELF, 'helical movement on forward')) AND
         (verify_enumeration_action_property
           (SELF, 'helical movement on forward',
             ['helical movement on forward',
              'no helical movement on forward'])));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the tapping_operation shall be either 'tapping' or 'thread drilling'.

WR2: If the description of the tapping_operation is 'tapping', the tapping_operation shall be the definition of at most one action_property with a name of 'compensation chuck', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of either 'compensation chuck used' or 'compensation chuck not used'.

WR2: If the description of the tapping_operation is 'thread drilling', the tapping_operation shall be the definition of at most one action_property with a name of 'helical movement on forward', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of either 'helical movement on forward' or 'no helical movement on forward'.

5.2.4.1.80 threading_turning_operation

A threading_turning_operation is a turning_type_operation. See the ARM definitions for Threading and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY threading_turning_operation
  SUBTYPE OF (turning_type_operation);
  WHERE
  WR1:  (SELF.description IN ['roughing','finishing']);

  WR2:  (verify_optional_action_property        (SELF, 'allowance')) AND
        (verify_length_measure_action_property  (SELF, 'allowance'));

  WR3:  NOT (SELF.description = 'roughing') OR
        (verify_required_action_property (SELF, 'allowance'));
END_ENTITY;
(*
Formal propositions:

WR1: The description of the threading_turning_operation shall be either 'roughing' or 'finishing'.

WR2: The threading_turning_operation shall be the definition of at most one action_property with a name of 'allowance', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: If the description of the threading_turning_operation is 'roughing', the threading_turning_operation shall be the definition of exactly one action_property with a name of 'allowance'.

NOTE This corresponds to local constraints WR1 on the ARM entity Threading_rough in ISO 14649-12.

5.2.4.1.81 turning_type_operation

A turning_type_operation is a type of machining_operation that represents the details of a turning step of a machining process. See the ARM definitions for Turning_machining_operation and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY turning_type_operation
  SUBTYPE OF (machining_operation);
  WHERE
  WR1:  ((verify_optional_relating_amr_with_name  (SELF, 'approach',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'approach',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
        );

  WR2:  ((verify_optional_relating_amr_with_name  (SELF, 'retract',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'retract',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
        );

  WR3:  ((verify_optional_relating_amr_with_name  (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
         (verify_related_type_for_amr_with_name   (SELF, 'machining',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TURNING_TYPE_STRATEGY']))
        );

END_ENTITY;
(*
Formal propositions:

WR1: The turning_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'approach', and a related_method of type machining_approach_retract_strategy.

WR2: The turning_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'retract', and a related_method of type machining_approach_retract_strategy.

WR3: The turning_type_operation shall be the relating_method of at most one machining_strategy_relationship with a name of 'machining', and a related_method of type turning_type_strategy.

5.2.4.1.82 turning_type_strategy

A turning_type_strategy is a type of machining_strategy that represents the approach used to determine the motion of the cutting tool during a turning operation. See the ARM definitions for Turning_machining_strategy and subtypes in ISO 14649-12 for more information.

EXPRESS specification:
*)
ENTITY turning_type_strategy
  SUBTYPE OF (machining_strategy);
  WHERE
  WR1:  (SELF.description IN ['unidirectional', 'bidirectional',
          'contour', 'thread', 'grooving', 'multistep grooving',
          'explicit']);

  WR2:  ((verify_optional_action_property       (SELF, 'overcut length')) AND
         (verify_length_measure_action_property (SELF, 'overcut length'))
        );

  WR3:  ((verify_optional_action_property       (SELF, 'multiple passes')) AND
         (verify_enumeration_action_property    (SELF, 'multiple passes',
          ['multiple passes allowed', 'multiple passes not allowed']))
        );

  WR4:  ((verify_optional_action_property (SELF, 'cutting depth')) AND
         (0 = SIZEOF (QUERY (prop <*
           get_action_property (SELF, 'cutting depth') | NOT
           (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
              'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
             (1 = SIZEOF (QUERY (it <* prep.representation.items |
                (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
                   IN TYPEOF(it)) AND
                 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LIST_REPRESENTATION_ITEM'
                   IN TYPEOF(it.item_element)) AND
                 (0 = SIZEOF (QUERY (ie <* it.item_element | NOT (SIZEOF([
                    'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
                    'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
                    TYPEOF(ie)) = 2))))
             ))))
           )))
         )))
        );

  WR5:  ((verify_optional_action_property     (SELF, 'variable feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'variable feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'variable feedrate',
           ['relative speed']))
        );

  WR6:  NOT (SELF.description = 'unidirectional') OR
        ((verify_optional_action_property     (SELF, 'feed direction')) AND
         (verify_rep_item_for_action_property (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'back path direction')) AND
         (verify_rep_item_for_action_property (SELF, 'back path direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'lift direction')) AND
         (verify_rep_item_for_action_property (SELF, 'lift direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'stepover direction')) AND
         (verify_rep_item_for_action_property (SELF, 'stepover direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property       (SELF, 'lift height')) AND
         (verify_length_measure_action_property (SELF, 'lift height')) AND

         (verify_optional_action_property     (SELF, 'lift feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'lift feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'lift feedrate',
           ['feed speed', 'feed per revolution'])) AND

         (verify_optional_action_property     (SELF, 'stepover feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'stepover feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'stepover feedrate',
           ['feed speed', 'feed per revolution']))
        );

  WR7:  NOT (SELF.description = 'bidirectional') OR
        ((verify_optional_action_property     (SELF, 'feed direction')) AND
         (verify_rep_item_for_action_property (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'stepover direction')) AND
         (verify_rep_item_for_action_property (SELF, 'stepover direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'stepover feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'stepover feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'stepover feedrate',
           ['feed speed', 'feed per revolution']))
        );

  WR8:  NOT (SELF.description = 'contour') OR
        ((verify_optional_action_property     (SELF, 'feed direction')) AND
         (verify_rep_item_for_action_property (SELF, 'feed direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'back path direction')) AND
         (verify_rep_item_for_action_property (SELF, 'back path direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'lift direction')) AND
         (verify_rep_item_for_action_property (SELF, 'lift direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property     (SELF, 'stepover direction')) AND
         (verify_rep_item_for_action_property (SELF, 'stepover direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property       (SELF, 'lift height')) AND
         (verify_length_measure_action_property (SELF, 'lift height')) AND

         (verify_optional_action_property     (SELF, 'lift feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'lift feedrate',
          ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'lift feedrate',
           ['feed speed', 'feed per revolution'])) AND

         (verify_optional_action_property     (SELF, 'stepover feedrate')) AND
         (verify_rep_type_for_action_property (SELF, 'stepover feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property (SELF, 'stepover feedrate',
           ['feed speed', 'feed per revolution'])) AND

         (verify_optional_action_property
           (SELF, 'variable stepover feedrate')) AND
         (verify_rep_type_for_action_property
           (SELF, 'variable stepover feedrate',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
         (verify_rep_name_for_action_property
           (SELF, 'variable stepover feedrate', ['relative speed']))
        );

  WR9:  NOT (SELF.description = 'thread') OR
        ((verify_required_action_property     (SELF, 'cut in amount')) AND
         (verify_enumeration_action_property  (SELF, 'cut in amount',
           ['constant depth', 'variable depth', 'constant removal amount'])) AND

         (verify_required_action_property     (SELF, 'threading direction')) AND
         (verify_enumeration_action_property  (SELF, 'threading direction',
           ['left', 'right', 'center', 'left zigzag', 'right zigzag'])) AND

         (verify_optional_action_property       (SELF, 'path return angle')) AND
         (verify_angle_measure_action_property  (SELF, 'path return angle')) AND

         (verify_optional_action_property       (SELF, 'lift height')) AND
         (verify_length_measure_action_property (SELF, 'lift height'))
        );

  WR10: NOT (SELF.description IN ['grooving', 'multistep grooving']) OR
        ((verify_optional_action_property     (SELF, 'grooving direction')) AND
         (verify_rep_item_for_action_property (SELF, 'grooving direction',
           ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DIRECTION'])) AND

         (verify_optional_action_property       (SELF, 'travel distance')) AND
         (verify_length_measure_action_property (SELF, 'travel distance'))
        );

  WR11: NOT (SELF.description = 'multistep grooving') OR
        ((verify_optional_action_property       (SELF, 'retract distance')) AND
         (verify_length_measure_action_property (SELF, 'retract distance'))
        );
END_ENTITY;
(*
Formal propositions:

WR1: The description of the turning_type_strategy shall be either 'unidirectional', 'bidirectional', 'contour', 'thread', 'grooving', 'multistep grooving', or 'explicit'.

WR2: The turning_type_strategy shall be the definition of at most one action_property with a name of 'overcut length', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

WR3: The turning_type_strategy shall be the definition of at most one action_property with a name of 'multiple passes', and the representation used to describe the action_property shall contain a representation_item of type descriptive_representation_item with a description of 'multiple passes allowed' or 'multiple passes not allowed'.

WR4: The turning_type_strategy shall be the definition of at most one action_property with a name of 'cutting depth', and the representation used to describe the action_property shall contain exactly one compound_representation_item, in which the item_element is of type list_representation_item and contains only instances of type type measure_representation_item and length_measure_with_unit.

WR5: The turning_type_strategy shall be the definition of at most one action_property with a name of 'variable feedrate', and the representation used to describe the action_property shall be of type machining_feed_speed_representation with a description of 'relative speed'.

WR6: If the description of the turning_type_strategy is 'unidirectional', the turning_type_strategy shall satisfy the following conditions:

WR7: If the description of the turning_type_strategy is 'bidirectional', the turning_type_strategy shall satisfy the following conditions:

WR8: If the description of the turning_type_strategy is 'contour', the turning_type_strategy shall satisfy the following conditions:

WR9: If the description of the turning_type_strategy is 'thread', the turning_type_strategy shall satisfy the following conditions:

WR10: If the description of the turning_type_strategy is either 'grooving' or 'multistep grooving', the turning_type_strategy shall satisfy the following conditions:

WR11: If the description of the turning_type_strategy is 'multistep grooving', the turning_type_strategy shall be the definition of at most one action_property with a name of 'retract distance', and the representation used to describe the action_property shall contain a representation_item of type measure_representation_item and length_measure_with_unit.

5.2.4.1.83 via_arc_point

A via_arc_point is a cartesian_point. When appearing in the points list of a polyline, the via_arc_point defines an arc starting at the previous point in the polyline, passing through the via_arc_point, and ending at the next point in the polyline. The arc defined by the via_arc_point shall be less than 2π.

If two via points are considered coincident if any two consecutive points in the via re considered coincident, they shall be considered to decrine a straight line segment rather than an arc. context of enclosing representation. Extra via points between two non via points must define arcs of the same radius.

NOTE 1 Since the arc defined by a via is less than 2π, a full circle is described using more than one via point. The use of a via point to describe an arc is also found in the circular_path entity in ISO 10303-105.

If a via point and the preceeding or following point in a polyline are considered coincident, the via point shall be considered to define straight line segments rather than an arc.

NOTE 2 Two points are considered coincident if they lie within the uncertainty distance given by the global_uncertainty_assigned_context of the enclosing representation.

EXAMPLE In the exchange file fragment below, #10 describes a 270 degree arc on the XY plane, starting at point #20, passing through point #30 and ending at point #40. Instance #50 describes a complete circle on the XY plane, starting and ending at point #60, passing through point #70 and point #80.

/* 270 degree arc, centered at (0,0,0) */
#10=POLYLINE('',(#20,#30,#40));
#20=CARTESIAN_POINT('start',(0,1.,0));
#30=VIA_ARC_POINT('via',(1.,0,0));
#40=CARTESIAN_POINT('end',(-1.,0,0));

/* complete circle, centered at (0,0,0) */
#50=POLYLINE('',(#60,#30,#40,#60));
#60=CARTESIAN_POINT('start and end',(0,1.,0));
#40=VIA_ARC_POINT('via #1',(-1.,0,0));
#30=VIA_ARC_POINT('via #2',(1.,0,0));

Figure 23 illustrates the arc and a complete circle described by the exchange file fragment.

Arcs with via points
Figure 23 — Arcs with via points
EXPRESS specification:
*)
ENTITY via_arc_point
  SUBTYPE OF (cartesian_point);
  WHERE
  WR1: SIZEOF(USEDIN(SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS')) > 0;
  WR2: (0 = SIZEOF (QUERY (pl <*
	USEDIN(SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS') |
	((pl.points[1] = SELF) OR (pl.points[HiIndex(pl.points)] = SELF))
	)));
END_ENTITY;
(*
Formal propositions:

WR1: The via_arc_point shall appear in the points list of at least one polyline.

WR2: The via_arc_point shall not appear as either the first or last element in the points list of any polyline.

5.2.4.1.84 via_helix_point

A via_helix_point is a cartesian_point. When appearing in the points list of a polyline, the via_helix_point defines an helix starting at the previous point in the polyline, passing through the via_helix_point, and ending at the next point in the polyline. As with via_arc_point, when projected to the plane, the arc defined by the via_helix_point shall be less than 2π.

If a via point and the preceeding or following point in a polyline are considered coincident, the via point shall be considered to define straight line segments rather than a helix.

NOTE Two points are considered coincident if they lie within the uncertainty distance given by the global_uncertainty_assigned_context of the enclosing representation.

EXPRESS specification:
*)
ENTITY via_helix_point
  SUBTYPE OF (cartesian_point);
  WHERE
  WR1: SIZEOF(USEDIN(SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS')) > 0;
  WR2: (0 = SIZEOF (QUERY (pl <*
        USEDIN(SELF, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.POLYLINE.POINTS') |
        ((pl.points[1] = SELF) OR (pl.points[HiIndex(pl.points)] = SELF))
        )));
END_ENTITY;
(*
Formal propositions:

WR1: The via_helix_point shall appear in the points list of at least one polyline.

WR2: The via_helix_point shall not appear as either the first or last element in the points list of any polyline.

5.2.4.2 Model based integrated manufacturing imported entity modifications

5.2.4.2.1 application_context

The base definition of the application_context entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the application_context entity:

5.2.4.2.2 application_protocol_definition

The base definition of the application_protocol_definition entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the application_protocol_definition entity:

5.2.4.2.3 derived_unit

The base definition of the derived_unit entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the derived_unit entity:

5.2.4.2.4 named_unit

The base definition of the named_unit entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the named_unit entity:

5.2.4.2.5 numeric_variable

The base definition of the numeric_variable entity shall be as given in ISO 13584-20. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the numeric_variable entity:

5.2.4.2.6 process_property_association

The base definition of the process_property_association entity shall be as given in ISO 10303-49. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the process_property_association entity:

5.2.4.2.7 product

The base definition of the product entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the product entity:

5.2.4.2.8 product_definition_formation

The base definition of the product_definition_formation entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the product_definition_formation entity:

5.2.4.2.9 representation_item_relationship

The base definition of the representation_item_relationship entity shall be as given in ISO 10303-43. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the representation_item_relationship entity:

5.2.4.2.10 shape_aspect

The base definition of the shape_aspect entity shall be as given in ISO 10303-41. The following modifications apply to this document.

Associated global rules:

The following global rule defined in this document applies to the shape_aspect entity:

5.2.5 Model based integrated manufacturing rule definitions

5.2.5.1 application_context_requires_ap_definition

The application_context_requires_ap_definition rule specifies that each instance of application_context shall be referenced by exactly one application_protocol_definition that specifies this document.

EXPRESS specification:
*)
RULE application_context_requires_ap_definition FOR
  (application_context, application_protocol_definition);
WHERE
  WR1:  (0 = SIZEOF (QUERY (ac <* application_context | NOT
           (1 = SIZEOF (QUERY (apd <* application_protocol_definition |
                (apd.application :=: ac) AND
                (apd.application_interpreted_model_schema_name =
                 'model_based_integrated_manufacturing_schema'))))
        )));
END_RULE;
(*
Argument definitions:

application_context: the set of all instances of application_context.

application_protocol_definition: the set of all instances of application_protocol_definition.

Formal propositions:

WR1: For each instance of application_context, there shall be exactly one instance of application_protocol_definition that references the instance of application_context as its application with a value of 'model_based_integrated_manufacturing_schema' as its application_interpreted_model_schema_name.

5.2.5.2 dependent_instantiable_derived_unit

The dependent_instantiable_derived_unit rule specifies that each instance of derived_unit is dependent on its usage to define another entity.

EXPRESS specification:
*)
RULE dependent_instantiable_derived_unit FOR (derived_unit);
WHERE
  WR1:  (0 = SIZEOF (QUERY (du <* derived_unit | NOT
           (1 <= SIZEOF (USEDIN (du, '')))
        )));
END_RULE;
(*
Argument definitions:

derived_unit: the set of all instances of derived_unit.

Formal propositions:

WR1: For each instance of derived_unit, there shall be at least one reference to the derived_unit instance from an attribute of another entity.

5.2.5.3 dependent_instantiable_named_unit

The dependent_instantiable_named_unit rule specifies that each instance of named_unit is dependent on its usage to define another entity.

EXPRESS specification:
*)
RULE dependent_instantiable_named_unit FOR (named_unit);
WHERE
  WR1:  (0 = SIZEOF (QUERY (nu <* named_unit | NOT
           (1 <= SIZEOF (USEDIN (nu, '')))
        )));
END_RULE;
(*
Argument definitions:

named_unit: the set of all instances of named_unit.

Formal propositions:

WR1: For each instance of named_unit, there shall be at least one reference to the named_unit instance from an attribute of another entity.

5.2.5.4 feature_optional_machining_property_process

The feature_optional_machining_process_property rule specifies that each feature_definition or transition_feature instance shall be associated with at most one property_process having a name of 'machining'.

EXPRESS specification:
*)
RULE feature_optional_machining_property_process FOR (
        shape_aspect,
        process_property_association
        );
WHERE
WR1:  (0 = SIZEOF (QUERY (sa <* shape_aspect |
        (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.FEATURE_DEFINITION' IN TYPEOF (sa)) OR
         ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TRANSITION_FEATURE' IN TYPEOF (sa)))
         AND NOT
         (1 >= SIZEOF (QUERY (ppa <* process_property_association |
            ((ppa.property_or_shape :=: sa) AND
             (ppa.process.name = 'machining')))))
        )));
END_RULE;
(*
Argument definitions:

shape_aspect: the set of all instances of shape_aspect.

process_property_association: the set of all instances of process_property_association.

Formal propositions:

WR1: Each shape_aspect that is an instance of either feature_definition or transition_feature shall appear as the property_or_shape of at most one process_property_association in which the process attribute refers to a property_process having a name of 'machining'.

5.2.5.5 nc_variable_compatible_initial_value

The nc_variable_compatible_initial_value rule specifies that each instance of expression_item_representation_item that references a numeric_variable shall be associated with at most one initial value, given by a literal_value. Furthermore, the initial value shall be of type int_literal if the numeric_variable is of type int_numeric_variable, and of type real_literal if the numeric_variable is of type real_numeric_variable.

EXPRESS specification:
*)
RULE nc_variable_compatible_initial_value FOR
  (expression_item_representation_item,
   representation_item_relationship);
WHERE
  -- each nc_variable has at most one one initial value
  WR1: (0 = SIZEOF (QUERY (nv <* expression_item_representation_item | 
            ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
	      IN TYPEOF (nv.item)) AND NOT
            (1 >= SIZEOF (QUERY (rir <* representation_item_relationship |
                   (rir.description = 'initial value')  AND
                   (rir.relating_representation_item :=: nv)
	))))));

  -- the types on either side of the initial value relationship must match
  -- each nc_variable has at most one one initial value
  WR2: (0 = SIZEOF (QUERY (rir <* representation_item_relationship |
  	 (rir.description = 'initial value')  AND 
 	 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_ITEM_REPRESENTATION_ITEM'
 	   IN TYPEOF (rir.relating_representation_item)) AND 
 	 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.EXPRESSION_ITEM_REPRESENTATION_ITEM'
 	   IN TYPEOF (rir.related_representation_item)) AND
 	 ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_VARIABLE'
 	   IN TYPEOF (rir.relating_representation_item\expression_item_representation_item.item)) 
 	 AND NOT
            ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_NUMERIC_VARIABLE' 
                IN TYPEOF (rir.relating_representation_item\expression_item_representation_item.item)) AND
              ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.INT_LITERAL' 
                IN TYPEOF (rir.related_representation_item\expression_item_representation_item.item)))
             OR
            ((('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_NUMERIC_VARIABLE' 
                IN TYPEOF (rir.relating_representation_item\expression_item_representation_item.item)) AND
              ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.REAL_LITERAL' 
                IN TYPEOF (rir.related_representation_item\expression_item_representation_item.item)
	)))))));
END_RULE;
(*
Argument definitions:

expression_item_representation_item: the set of all instances of expression_item_representation_item.

representation_item_relationship: the set of all instances of representation_item_relationship.

Formal propositions:

WR1: Each instance of expression_representation_item that is also of type numeric_variable shall appear as relating in at most one representation_item_relationship in which the name is 'initial value'.

WR2: Each instance representation_item_relationship in which name is 'initial value' and relating is of type numeric_variable shall have either relating of type int_numeric_variable and related of type int_literal or relating of type real_numeric_variable and related of type real_literal.

5.2.5.6 product_requires_version

The product_requires_version rule specifies that each instance of product shall be referenced by at least one instance of product_definition_formation.

EXPRESS specification:
*)
RULE product_requires_version FOR (product, product_definition_formation);
WHERE
  WR1:  (0 = SIZEOF (QUERY (prod <* product  | NOT
           (1 <= SIZEOF (QUERY (pdf <* product_definition_formation |
               (prod :=: pdf.of_product))))
        )));
END_RULE;
(*
Argument definitions:

product: the set of all instances of product.

product_definition_formation: the set of all instances of product_definition_formation.

Formal propositions:

WR1: For each instance of product, there shall be at least one instance of product_definition_formation that contains an of_product attribute value equal to the product.

5.2.6 Model based integrated manufacturing function definitions

5.2.6.1 get_action_property

The get_action_property function returns the set of action_property instances that refer to the input characterized_action_definition and have a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION get_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): SET OF action_property;

    RETURN (bag_to_set (QUERY (ap <*
        USEDIN (cad, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_PROPERTY.DEFINITION') |
        (ap.name = prop_name))));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to return.

prop_name: the string that appears as the name of the action_property instances to return.

5.2.6.2 get_count_of_relating_amr

The get_count_of_relating_amr function returns the number of action_method_relationship instances in which the input action_method appears as the relating_method and the relationship is of all types which appear in the amr_types input parameter.

EXPRESS specification:
*)
FUNCTION get_count_of_relating_amr (
        am:             action_method;
        amr_types:      SET OF STRING
        ): INTEGER;

    RETURN (SIZEOF (QUERY (amr <* get_relating_amr (am) |
               (SIZEOF(amr_types * TYPEOF(amr)) =
                SIZEOF(amr_types)) )));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.3 get_count_of_relating_amr_with_name

The get_count_of_relating_amr_with_name function returns the number of action_method_relationship instances in which the input action_method appears as the relating_method, the relationship is of all types which appear in the amr_types input parameter, and the input parameter amr_name appears as the name of the action_method_relationship.

EXPRESS specification:
*)
FUNCTION get_count_of_relating_amr_with_name (
        am:             action_method;
        amr_name:       STRING
        amr_types:      SET OF STRING
        ): INTEGER;

    RETURN (SIZEOF (QUERY (amr <* get_relating_amr (am) |
              ((amr.name = amr_name) AND
               (SIZEOF(amr_types * TYPEOF(amr)) =
                SIZEOF(amr_types))) )));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_name: the string that appears as the name of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.4 get_relating_amr

The get_relating_amr function returns the set of action_method_relationship instances in which the input action_method appears as the relating_method.

EXPRESS specification:
*)
FUNCTION get_relating_amr (am: action_method)
        : SET OF action_method_relationship;

    RETURN (bag_to_set (USEDIN (am,
       'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD')));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to return.

5.2.6.5 get_resource_property

The get_resource_property function returns the set of resource_property instances that refer to the input characterized_resource_definition and have a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION get_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING
        ): SET OF resource_property;

    RETURN (bag_to_set (QUERY (rp <*
        USEDIN (crd, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RESOURCE_PROPERTY.RESOURCE') |
        (rp.name = prop_name))));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the resource of the resource_property instances to return.

prop_name: the string that appears as the name of the resource_property instances to return.

5.2.6.6 get_tool_body_item

The get_tool_body_item function returns the set of representation_item instances that have a name equal to the input parameter prop_name and appear in the items set of a representation of type machining_tool_body_representation which describes a resource_property with a name of 'tool body' and a resource which refers to the input machining_tool.

EXPRESS specification:
*)
FUNCTION get_tool_body_item (
    mt :             machining_tool;
    prop_name :      STRING
    ): SET OF representation_item;

    LOCAL
      props : SET OF resource_property;
      preps : SET OF resource_property_representation;
      items : SET OF representation_item;
    END_LOCAL;

    props := get_resource_property (mt, 'tool body');
    REPEAT i := 1 TO HIINDEX(props);
        preps := preps + USEDIN (props[i], 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
                'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY');
    END_REPEAT;

    REPEAT i := 1 TO HIINDEX(preps);
        IF ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MACHINING_TOOL_BODY_REPRESENTATION'
                IN TYPEOF (preps[i].representation))
        THEN
            items := items + preps[i].representation.items;
        END_IF;
    END_REPEAT;

    RETURN (bag_to_set (QUERY (it <* items | (it.name = prop_name))));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to return.

prop_name: the string that appears as the name of the representation_item instances to return.

5.2.6.7 verify_angle_measure_action_property

The verify_angle_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and plane_angle_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_angle_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_action_property(cad, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.8 verify_angle_measure_rep_item

The verify_angle_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and plane_angle_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_angle_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT (SIZEOF([
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
            TYPEOF(it)) = 2))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.9 verify_angle_measure_resource_property

The verify_angle_measure_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and plane_angle_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_angle_measure_resource_property (
    crd :       characterized_resource_definition;
    prop_name : STRING
    ): LOGICAL;

    RETURN (verify_rep_item_for_resource_property (crd, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

5.2.6.10 verify_angle_measure_tool_body_item

The verify_angle_measure_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if all such representation_item instances are of type measure_representation_item and plane_angle_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_angle_measure_tool_body_item (
    mt :        machining_tool;
    prop_name : STRING
    ): LOGICAL;

    RETURN (verify_rep_item_for_tool_body(mt, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.11 verify_ballnose_endmill_dimensions

The verify_ballnose_endmill_dimensions function examines the representation_item instances that are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. It returns true if and only if the items meet certain value requirements.

EXPRESS specification:
*)
FUNCTION verify_ballnose_endmill_dimensions (
    mt :          machining_tool
    ): LOGICAL;

    LOCAL
      rads : SET OF REPRESENTATION_ITEM :=
        get_tool_body_item (mt, 'edge radius');
      dias : SET OF REPRESENTATION_ITEM :=
        get_tool_body_item (mt, 'effective cutting diameter');
    END_LOCAL;

    RETURN ((0 = SIZEOF(rads)) OR
            ((1 = SIZEOF(rads)) AND
             (1 = SIZEOF(dias)) AND
             (rads[1].value_component = dias[1].value_component/2))
        );
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

5.2.6.12 verify_bullnose_endmill_dimensions

The verify_bullnose_endmill_dimensions function examines the representation_item instances that are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. It returns true if and only if the items meet certain value requirements.

EXPRESS specification:
*)
FUNCTION verify_bullnose_endmill_dimensions (
    mt :          machining_tool
    ): LOGICAL;

    LOCAL
      rads : SET OF REPRESENTATION_ITEM :=
        get_tool_body_item (mt, 'edge radius');
      dias : SET OF REPRESENTATION_ITEM :=
        get_tool_body_item (mt, 'effective cutting diameter');
    END_LOCAL;

    RETURN  ((1 = SIZEOF(rads)) AND
             (1 = SIZEOF(dias)) AND
             (rads[1].value_component < dias[1].value_component/2)
        );
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

5.2.6.13 verify_count_measure_action_property

The verify_count_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a measure_representation_item with a value_component of type count_measure.

EXPRESS specification:
*)
FUNCTION verify_count_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
        NOT (
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |

           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
                ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
                  IN TYPEOF(it.value_component)))
           )))
        )))
    ))));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.14 verify_count_measure_rep_item

The verify_count_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and has a value_component of type count_measure.

EXPRESS specification:
*)
FUNCTION verify_count_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT
          (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
            IN TYPEOF(it)) AND
           ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
            IN TYPEOF(it.value_component))))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.15 verify_count_measure_resource_property

The verify_count_measure_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a measure_representation_item with a value_component of type count_measure.

EXPRESS specification:
*)
FUNCTION verify_count_measure_resource_property (
    crd : 	characterized_resource_definition;
    prop_name : STRING
    ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <* get_resource_property (crd, prop_name) |
        NOT (
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |

           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
                ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
                  IN TYPEOF(it.value_component)))
           )))
        )))
    ))));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

5.2.6.16 verify_count_measure_tool_body_item

The verify_count_measure_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if all such representation_item instances are of type measure_representation_item with a value_component of type count_measure.

EXPRESS specification:
*)
FUNCTION verify_count_measure_tool_body_item (
    mt :          machining_tool;
    prop_name :   STRING
    ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (it <* get_tool_body_item (mt, prop_name) | NOT
              (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
               ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.COUNT_MEASURE'
                  IN TYPEOF(it.value_component)))
        )));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.17 verify_descriptive_action_property

The verify_descriptive_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type descriptive_representation_item.

EXPRESS specification:
*)
FUNCTION verify_descriptive_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_action_property(cad, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.18 verify_enumeration_action_property

The verify_enumeration_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a descriptive_representation_item with a description value that appears in the prop_values set of strings.

EXPRESS specification:
*)
FUNCTION verify_enumeration_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING;
        prop_values:    SET OF STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
        NOT (
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |

           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
                (it.description IN prop_values))
           )))
        )))
    ))));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

prop_values: the set of string values that the description attribute of a descriptive_representation_item is to be compared against.

5.2.6.19 verify_enumeration_resource_property

The verify_enumeration_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a descriptive_representation_item with a description value that appears in the prop_values set of strings.

EXPRESS specification:
*)
FUNCTION verify_enumeration_resource_property (
    crd : 	  characterized_resource_definition;
    prop_name :   STRING;
    prop_values : SET OF STRING
    ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <* get_resource_property (crd, prop_name) |

        NOT (
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |

           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
                (it.description IN prop_values))
           )))
        )))
    ))));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

prop_values: the set of string values that the description attribute of a descriptive_representation_item is to be compared against.

5.2.6.20 verify_enumeration_measure_tool_body_item

The verify_enumeration_measure_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if all such representation_item instances are of type descriptive_representation_item with a description value that appears in the prop_values set of strings.

EXPRESS specification:
*)
FUNCTION verify_enumeration_tool_body_item (
    mt :          machining_tool;
    prop_name :   STRING;
    prop_values : SET OF STRING
    ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (it <* get_tool_body_item (mt, prop_name) | NOT
              (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
               (it.description IN prop_values))
        )));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

prop_values: the set of string values that the description attribute of a descriptive_representation_item is to be compared against.

5.2.6.21 verify_length_measure_action_property

The verify_length_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and length_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_length_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_action_property (cad, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.22 verify_length_measure_rep_item

The verify_length_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and length_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_length_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT (SIZEOF([
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
            TYPEOF(it)) = 2))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.23 verify_length_measure_resource_property

The verify_length_measure_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and length_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_length_measure_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_resource_property (crd, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

5.2.6.24 verify_length_measure_tool_body_item

The verify_length_measure_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if all such representation_item instances are of type measure_representation_item and length_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_length_measure_tool_body_item (
    mt :        machining_tool;
    prop_name : STRING
    ): LOGICAL;

    RETURN (verify_rep_item_for_tool_body(mt, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.LENGTH_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.25 verify_linear_speed_measure_rep_item

The verify_linear_speed_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and has a value_component of type numeric_measure.

EXPRESS specification:
*)
FUNCTION verify_linear_speed_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT
          (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
            IN TYPEOF(it)) AND
           ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE'
            IN TYPEOF(it.value_component))))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.26 verify_numeric_measure_action_property

The verify_numeric_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and has a value_component of type numeric_measure.

EXPRESS specification:
*)
FUNCTION verify_numeric_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    -- All properties have matching representations.  The reason we test
    -- for "nothing matching the negation" rather than "something matching
    -- the positive" is so that we return true if there are no properties.
    --
    RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |

        -- property has no matching representations
        NOT (

        -- there is at least one rep with matching rep items
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |

           -- property representation has at least one matching rep item
           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
                  IN TYPEOF(it)) AND
                ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE'
                  IN TYPEOF(it.value_component)))
           )))
        )))
    ))));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.27 verify_optional_action_property

The verify_optional_action_property function returns true if and only if there is at most one action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_optional_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 >= SIZEOF (get_action_property (cad, prop_name)));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.28 verify_optional_relating_amr

The verify_optional_relating_amr function returns true if and only if there is at most one action_method_relationship in which the input action_method appears as the relating_method and the action_method_relationship is of all types which appear in the amr_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_optional_relating_amr (
        am:             action_method;
        amr_types:      SET OF STRING
        ): LOGICAL;

    RETURN (1 >= get_count_of_relating_amr (am, amr_types));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.29 verify_optional_relating_amr_with_name

The verify_optional_relating_amr_with_name function returns true if and only if there is at most one action_method_relationship in which the input action_method appears as the relating_method, the action_method_relationship is of all types which appear in the amr_types input parameter, and the input parameter amr_name appears as the name of the action_method_relationship.

EXPRESS specification:
*)
FUNCTION verify_optional_relating_amr_with_name (
        am:             action_method;
        amr_name:       STRING
        amr_types:      SET OF STRING
        ): LOGICAL;

    RETURN (1 >= get_count_of_relating_amr_with_name (
                am, amr_name, amr_types));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_name: the string that appears as the name of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.30 verify_optional_rep_item

The verify_optional_rep_item function returns true if and only if the items set of the input representation contains at most one representation_item with a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_optional_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 >= SIZEOF (QUERY ( it <* rep.items |
            (it.name = prop_name))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.31 verify_optional_resource_property

The verify_optional_resource_property function returns true if and only if there is at most one resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_optional_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 >= SIZEOF (get_resource_property (crd, prop_name)));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

5.2.6.32 verify_optional_tool_body_item

The verify_optional_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if there is at most one such representation_item instance.

EXPRESS specification:
*)
FUNCTION verify_optional_tool_body_item (
    mt :        machining_tool;
    prop_name : STRING
    ): LOGICAL;

    RETURN (1 >= SIZEOF (get_tool_body_item (mt, prop_name)));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.33 verify_pressure_measure_action_property

The verify_pressure_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and has a value_component of type numeric_measure.

EXPRESS specification:
*)
FUNCTION verify_pressure_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_numeric_measure_action_property (cad, prop_name));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.34 verify_ratio_measure_action_property

The verify_ratio_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and ratio_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_ratio_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_action_property (cad, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.35 verify_ratio_measure_rep_item

The verify_ratio_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and ratio_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_ratio_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT (SIZEOF([
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.RATIO_MEASURE_WITH_UNIT'] *
            TYPEOF(it)) = 2))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

The verify_related_type_for_amr function evaluates the action_method_relationship instances in which the input action_method appears as relating_method, and the relationship is of all types which appear in the amr_types input parameter. The function returns true if and only if all such action_method_relationship have a related_method that is of all types which appear in the types input parameter.

EXPRESS specification:
*)
FUNCTION verify_related_type_for_amr (
        am:             action_method;
        amr_types:      SET OF STRING
        types:          SET OF STRING
        ): LOGICAL;

    RETURN  (0 = SIZEOF (QUERY (amr <* get_relating_amr (am) |
               (SIZEOF(amr_types * TYPEOF(amr)) =
                SIZEOF(amr_types)) AND
                NOT
               (SIZEOF(types * TYPEOF(amr.related_method)) =
                SIZEOF(types)) )));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

types: the set of desired type names for the action_method that appears as the related_method of the action_method_relationship instances.

The verify_related_type_for_amr_with_name function evaluates the action_method_relationship instances in which the input action_method appears as the relating_method, the relationship is of all types which appear in the amr_types input parameter, and the name is equal to the amr_name input parameter . The function returns true if and only if all such action_method_relationship have a related_method that is of all types which appear in the types input parameter.

EXPRESS specification:
*)
FUNCTION verify_related_type_for_amr_with_name (
        am:             action_method;
        amr_name:       STRING;
        amr_types:      SET OF STRING
        types:          SET OF STRING
        ): LOGICAL;

    RETURN  (0 = SIZEOF (QUERY (amr <* get_relating_amr (am) |
               (amr.name = amr_name) AND
               (SIZEOF(amr_types * TYPEOF(amr)) =
                SIZEOF(amr_types)) AND
                NOT
               (SIZEOF(types * TYPEOF(amr.related_method)) =
                SIZEOF(types)) )));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_name: the string that appears as the name of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

types: the set of desired type names for the action_method that appears as the related_method of the action_method_relationship instances.

5.2.6.38 verify_rep_item_for_action_property

The verify_rep_item_for_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of all types which appear in the rep_item_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_item_for_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING;
        rep_item_types: SET OF STRING
        ): LOGICAL;

    -- All properties have matching representations.  The reason we test
    -- for "nothing matching the negation" rather than "something matching
    -- the positive" is so that we return true if there are no properties.
    --
    RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
        NOT (
        (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (SIZEOF (rep_item_types * TYPEOF(it)) =
                SIZEOF (rep_item_types))))
           )))
        ))
    )));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

rep_item_types: the set of desired representation_item type names.

5.2.6.39 verify_rep_item_for_resource_property

The verify_rep_item_for_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a representation_item that is of all types which appear in the rep_item_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_item_for_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING;
        rep_item_types: SET OF STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <* get_resource_property (crd, prop_name) |
        NOT (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.' +
                'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |

           (0 < SIZEOF (QUERY (it <* prep.representation.items |
               (SIZEOF (rep_item_types * TYPEOF(it)) =
                SIZEOF (rep_item_types)))))
           )))
        )));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

rep_item_types: the set of desired representation_item type names.

5.2.6.40 verify_rep_item_for_tool_body

The verify_rep_item_for_tool_body function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if all such representation_item instances are of all types which appear in the rep_item_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_item_for_tool_body (
    mt :             machining_tool;
    prop_name :      STRING;
    rep_item_types : SET OF STRING
    ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (it <* get_tool_body_item (mt, prop_name) | NOT
              ((SIZEOF (rep_item_types * TYPEOF(it)) =
                SIZEOF (rep_item_types)))
        )));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

rep_item_types: the set of desired representation_item type names.

5.2.6.41 verify_rep_name_for_action_property

The verify_rep_name_for_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation with a name that appear in the desc_names input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_name_for_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING;
        desc_names:     SET OF STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <*
            get_action_property (cad, prop_name) | NOT
            (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
               'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
               (prep.representation.name IN desc_names)
                )))
        )));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

desc_names: the set of string values to compare against the name of each representation.

5.2.6.42 verify_rep_type_for_action_property

The verify_rep_type_for_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation that is of all types which appear in the rep_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_type_for_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING;
        rep_types:      SET OF STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <*
            get_action_property (cad, prop_name) | NOT
            (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
               'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |

               (SIZEOF(rep_types * TYPEOF(prep.representation)) =
                SIZEOF(rep_types))
                )))
        )));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

rep_types: the set of desired representation type names.

5.2.6.43 verify_rep_type_for_resource_property

The verify_rep_type_for_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation that is of all types which appear in the rep_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_rep_type_for_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING;
        rep_types:      SET OF STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY (prop <*
            get_resource_property (crd, prop_name) | NOT
            (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.'+
               'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |

               (SIZEOF(rep_types * TYPEOF(prep.representation)) =
                SIZEOF(rep_types))
                )))
        )));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

rep_types: the set of desired representation type names.

5.2.6.44 verify_required_action_property

The verify_required_action_property function returns true if and only if there is exactly one action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_required_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 = SIZEOF (get_action_property (cad, prop_name)));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.45 verify_required_relating_amr

The verify_required_relating_amr function returns true if and only if there is exactly one action_method_relationship in which the input action_method appears as the relating_method and the action_method_relationship is of all types which appear in the amr_types input parameter.

EXPRESS specification:
*)
FUNCTION verify_required_relating_amr (
        am:             action_method;
        amr_types:      SET OF STRING
        ): LOGICAL;

    RETURN (1 = get_count_of_relating_amr (am, amr_types));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.46 verify_required_relating_amr_with_name

The verify_required_relating_amr_with_name function returns true if and only if there is exactly one action_method_relationship in which the input action_method appears as the relating_method, the action_method_relationship is of all types which appear in the amr_types input parameter, and the input parameter amr_name appears as the name of the action_method_relationship.

EXPRESS specification:
*)
FUNCTION verify_required_relating_amr_with_name (
        am:             action_method;
        amr_name:       STRING
        amr_types:      SET OF STRING
        ): LOGICAL;

    RETURN (1 = get_count_of_relating_amr_with_name (
                am, amr_name, amr_types));
END_FUNCTION;
(*
Argument definitions:

am: the action_method that appears as the relating_method of the action_method_relationship instances to examine.

amr_name: the string that appears as the name of the action_method_relationship instances to examine.

amr_types: the set of desired type names for the action_method_relationship instances.

5.2.6.47 verify_required_rep_item

The verify_required_rep_item function returns true if and only if the items set of the input representation contains exactly one representation_item with a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_required_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 = SIZEOF (QUERY ( it <* rep.items |
            (it.name = prop_name))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.48 verify_required_resource_property

The verify_required_resource_property function returns true if and only if there is exactly one resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name.

EXPRESS specification:
*)
FUNCTION verify_required_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (1 = SIZEOF (get_resource_property (crd, prop_name)));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

5.2.6.49 verify_required_tool_body_item

The verify_required_tool_body_item function examines the representation_item instances that have a name equal to the input parameter prop_name and are associated with the input machining_tool through a resource_property with a name of 'tool body' and a representation of type machining_tool_body_representation. The function returns true if and only if there is at most one such representation_item instance.

EXPRESS specification:
*)
FUNCTION verify_required_tool_body_item (
    mt :        machining_tool;
    prop_name : STRING
    ): LOGICAL;

    RETURN (1 = SIZEOF (get_tool_body_item (mt, prop_name)));
END_FUNCTION;
(*
Argument definitions:

mt: the machining_tool that is related through a resource_property to the representation_item instances to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.50 verify_rotary_speed_measure_rep_item

The verify_rotary_speed_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and has a value_component of type numeric_measure.

EXPRESS specification:
*)
FUNCTION verify_rotary_speed_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT
          (('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM'
            IN TYPEOF(it)) AND
           ('MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.NUMERIC_MEASURE'
            IN TYPEOF(it.value_component))))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.51 verify_time_measure_action_property

The verify_time_measure_action_property function evaluates each action_property that refers to the input characterized_action_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such action_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and time_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_time_measure_action_property (
        cad:            characterized_action_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_action_property(cad, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

cad: the characterized_action_definition that appears as the definition of the action_property instances to examine.

prop_name: the string that appears as the name of the action_property instances to examine.

5.2.6.52 verify_time_measure_rep_item

The verify_time_measure_rep_item function returns true if and only if the items set of the input representation contains a representation_item with a name equal to the input parameter prop_name that is of type measure_representation_item and ratio_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_time_measure_rep_item (
        rep:            representation;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
          (it.name = prop_name) AND NOT (SIZEOF([
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
           'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT'] *
            TYPEOF(it)) = 2))));
END_FUNCTION;
(*
Argument definitions:

rep: the representation to examine.

prop_name: the string that appears as the name of the representation_item instances to examine.

5.2.6.53 verify_time_measure_resource_property

The verify_time_measure_resource_property function evaluates each resource_property that refers to the input characterized_resource_definition and has a name equal to the input parameter prop_name. The function returns true if and only if all such resource_properties have an associated representation in which the items set contains a representation_item that is of type measure_representation_item and time_measure_with_unit.

EXPRESS specification:
*)
FUNCTION verify_time_measure_resource_property (
        crd:            characterized_resource_definition;
        prop_name:      STRING
        ): LOGICAL;

    RETURN (verify_rep_item_for_resource_property (crd, prop_name,
        ['MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.MEASURE_REPRESENTATION_ITEM',
         'MODEL_BASED_INTEGRATED_MANUFACTURING_SCHEMA.TIME_MEASURE_WITH_UNIT']));
END_FUNCTION;
(*
Argument definitions:

crd: the characterized_resource_definition that appears as the definition of the resource_property instances to examine.

prop_name: the string that appears as the name of the resource_property instances to examine.

*)
END_SCHEMA;
(*

© ISO 2022 — All rights reserved