# Presentation: 694721

## Describing Toolpaths in an AP-238 CC1 file

**Martin Hardwick**
**hardwick@steptools.com**
**STEP**** Tools, Inc.**
**14 First Street, Troy, NY 12180**
**(518) 687-2848 / (518) 687-4420 fax**

## This Walkthrough

**This walkthru describes the AP-238 entities required to define a toolpath**
- It shows what values are
- Required by the AP-238 standard (_underlined in red_)
- Suggested by the OMAC subset
**Other walkthru’s describe**.
- How to represent other APT information in an AP-238 CC1 file
- How to conform to the ISO standard

## Syntax conventions

**The boxes represent entities**
- The text attributes of the entity are described in the box
- If a value is required by the ISO standard it is _underlined and shown in_ _red_
**The arrows represent attributes that are implemented as addresses in the Part 21 file**
- The direction is important
- The label on the arrow is the name of the EXPRESS attribute
**Not all the entities are described**
- If an entity is not described on a page it will not have a box
- If an entity is described on another page then it will be shown in bold case
- If an entity is not described here then it is shown in italics and you must read the AP-238 CC1 OMAC subset reference for more details.

## Organization of the AP-238 CC1 file

**Per file **
- One Project
- One Workplan
**Per Tool change**
- One Workingstep
- One Freeform_milling operation
**Per Feed, Speed or Coolant change**
- One Machining_toolpath

**Workplan**

**Workingstep**

**1**

**n**

**Freeform_milling**

**1**

**1**

**Machining_toolpath**

**1**

**n**

***LOADTL***
***SPINDL***

***COOLNT***
***FEDRAT***
***SPINDL***
***GOTO***

## The Project – name and version data

**The Project – name and version data**

**product_definition**
- id = same as machining_project.name
- description = ’machining project’

**machining_project**
- id = formal program name
- name = informal program name
- description = end user data** **or ’’

**product_definition _formation**
- id = program version number or 1.0
- description = ‘machining project’

- of_product

**process_product_association**
- name = same as machining_project.name
- description = end user data or ’’

**product_definition_process**
- name= _‘machining’_
- description = end user data or ’’
- Identification = ’’

**machining_workplan**

*product_context*

*product_definition_context*

- frame_of_reference

- formation

- frame_of_reference

- defined_product

- process

- chosen_method

*application_context*

*application_*
*protocol_*
*definition*

## The Workplan – one per file

**machining_workingstep**

**machining_workplan**
- name = ‘AP-238 CC1 OMAC Subset Version 1.0’
- description = ‘main workplan’
- consequence = empty string
- purpose = empty string

**machining_process_sequence_relationship**
- name = machining_workingstep.name
- description = end user data** **or** ‘’**
- sequence_position = 1.0 for 1st, 2.0 for 2nd etc.

- relating_method

- related_method

**machining_process_sequence_relationship**
- name = machining_workingstep.name
- description = end user data** **
- sequence_position = 1.0 for 1st, 2.0 for 2nd etc.

- relating_method

- related_method

**product_definition_process**

- process

**machining_workingstep**
- name = ‘WS 1’, ’WS 2’, ‘WS 3’ etc.
- description = _‘machining’_** **
- consequence = empty string
- purpose = empty string

**freeform_milling_operation**

- relating_method

- related_method

**machining_operation_relationship**
- name = machining_workingstep.name
- description = end user data** **.

- related_method

## Freeform_milling – one per LOADTL

**freeform_milling_operation**
- name = machining_workingstep.name
- description = ‘AP-238 CC1 OMAC Subset Version 1.0
- consequence = empty string
- purpose = empty string

- related_method

**machining_operation_relationship**

**machining_toolpath_sequence_relationship**
- name = machining_workingstep.name, machining_toolpath.name
- description = ‘AP-238 CC1 OMAC Subset Version 1.0’
- sequence_position = 1.0 for 1st, 2.0 for 2nd etc.

- relating_method

**machining_toolpath**

- related_method

- usage

**machining_tool**
- name = _‘milling cutting tool’_
- description = user name for tool

*action_resource_type*

- kind

**machining_toolpath_sequence_relationship**

- relating_method

**“****Consider also creating a new operation for each change of spindle speed”**

## Machining_toolpath – one per FEDRAT

**machining_toolpath**
- name = machining_workingstep.name + ‘TP 1’ or ‘TP 2’ etc.
- description =_ ‘cutter location trajectory’_
- consequence = empty string
- purpose = empty string

- related_method

**machining_toolpath_sequence_relationship**

**machining_technology_relationship**

- relating_method

**action_property**
- name = _‘basic curve’_

- definition

**action_property**
- name = _‘tool axis’_

**action_property**
- name = _‘priority’_

**action_property**
- name = _‘trajectory type’_

- definition

- definition

- definition

**machining_functions_relationship**

- relating_method

**“****Also need a new machining_toolpath for each COOLNT change”**

## Basic curve and tool axis representations

**representation**
- name = _‘basic curve’_

- representation

**polyline**
- name = machining_toolpath.name

- property

**action_property**
- name = _‘basic curve’_
- description=machining_toolpath.name

**action_property_representation**
- name = action_property.name
- description=action_property.description

*representation_context*

- items[1:1]

**cartesian_point**
- name = user data
- coordinates=X, Y,Z

- points

**representation**
- name = _‘tool axis’_

- representation

**polyline**
- name = machining_toolpath.name

- property

**action_property**
- name = _‘tool axis’_
- description=machining_toolpath.name

**action_property_representation**
- name = action_property.name
- description=action_property.description

- items[1:1]

**cartesian_point**
- name = user data
- coordinates=I, J, K

- points

*representation_context*

**machining_toolpath**

- definition

- definition

**“****Same number of points**
**one per GOTO**
**Do not forget first point for **
**second and subsequent paths”**

**“****If MULTAX on”**

## Machining_technology (feed and speed)

**machining_technology**
- name = AP-238 CC1 OMAC Subset Version 1.0’
- description= _‘milling’_
- consequence = empty string
- purpose = empty string

- definition

- related_method

**action_property**
- name = _‘feedrate’_
- description=machining_toolpath.name

- relating_method

**action_property_representation**

- property

**machining_toolpath**

- definition

**action_property**
- name = _‘spindle speed’_
- description=machining_toolpath.name

**action_property_representation**

- property

**Machining_technology_relationship**
- name = machining_toolpath.name
- description=‘coolant value’

## Feedrate representation

**machining_feed_speed_representation**
- name = _‘feed speed’_

- representation

*measure_representation_item*
*name = *_*‘feed speed’’*_
*value_component = value*
*unit_component = inches per minute*

- property

**action_property**

**action_property_representation**
- name = action_property.name
- description = action_property.description

*representation_context*

- items[1:1]

## Spindle speed representation

**machining_spindle_speed_representation**
- name = _‘spindle speed’_

- representation

*measure_representation_item*
*name = ‘*_*rotational speed’’*_
*value_component = value*
*unit_component = revolutions per minute*

- property

**action_property**

**action_property_representation**
- name = action_property.name
- description = action_property.description

*representation_context*

- items[1:1]

## Machining_functions (coolant)

**machining_functions**
- name = ‘AP-238 CC1 OMAC Subset Version 1.0’
- description = _‘milling’_
- consequence = empty string
- purpose = empty string

- definition

- related_method

**action_property**
- name = _‘coolant’_
- description = machining_workingstep.name

**machining_toolpath**

- relating_method

**action_property_representation**

- property

**Machining_functions_relationship**
- name = machining_toolpath.name
- description = ‘coolant value’

## Coolant representation

**representation**
- name = _‘coolant’_

- representation

**descriptive_representation_item**
- name = ‘shared constant’
- description = ‘coolant on’

- property

**action_property**

**action_property_representation**
- name = action_property.name
- description = action_property.description

*representation_context*

- Items[1:1]

- Or description = ‘coolant off’

## Toolpath constant representations

**representation**
- name = _‘required’_

- representation

**descriptive_representation_item**
- name = ‘constant’
- description = _‘required’_

- property

**action_property**
- name = _‘priority’_
- description = machining_toolpath.name

**action_property_representation**
- name = action_property.name
- description = action_property.description

*representation_context*

- Items[1:1]

**machining_toolpath**

- definition

**representation**
- name = _‘tool center point’_

- representation

**descriptive_representation_item**
- name = ‘constant’
- description = _‘tool center point’_

- property

**action_property**
- name = _‘trajectory type’_
- description = machining_toolpath.name

**action_property_representation**
- name = action_property.name
- description = action_property.description

- Items[1:1]

**machining_toolpath**

- definition