CLDATA as used by Autodesk® PowerMill®

© Copyright 2016 Delcam Ltd. All rights reserved.

Introduction

This document is intended to outline CLDATA as used by PowerMill.

PowerMill uses CLDATA in a way that broadly conforms to ISO 3592-1978 and ISO 4343-1978: therefore copies of those documents would be a useful addition to the information given below. An additional document is available from Delcam which describes the structure of a generic CLDATA record.

Records used by PowerMill

These are given by class.

1000 records

This class of records is not used by PowerMill.

2000 records

These records are used extensively by PowerMill. A brief outline will be given below, in tabular form. Further detail will be given later. This table does not give all 2000 records that are currently meaningful to DUCTpost: rather it gives those 2000 records that are written by PowerMill.

Code Mnemonic Description
5 RAPID Indicates that following 5000 record may be performed as a point-to-point move
17 GOHOME Indicates that the next 5000 record should be interpreted as a move to the home position
1004 CLEARP PowerMill uses this for StartZ: this differs from the standard.
1007 CUTCOM Cutter compensation
1009 FEDRAT Specifies the feedrate
1010 DELAY Specifies any dwell
1014 PPLOT Used by PowerMill to indicate the size of the block. This differs from the standard
1030 COOLNT Specifies coolant flow, or type, or both
1031 SPINDL Specifies spindle function
1044 PPRINT Specifies a comment string
1045 PARTNO Gives a text string used to identify the part
1046 INSERT Text which will be inserted in the output file
1055 LOADTL Indicates that a tool should be loaded, and gives details of this tool
1054 CYCLE Indicates a canned cycle
1079 PPFUN PowerMill uses this a lot, almost as a "proprietary" record. See below for details
1094 SAFPOS Used by PowerMill to specify SafeZ. This differs from the standard.

RAPID

This record has no effect itself, it used to flag the fact that the next 5000 5 record may be performed as a point-to-point move. This record may contain more than one move, and may be continued by one or more 5000 6 records. All moves within the 5000 5 (and its continuation, if present) should be treated as point-to-point.

GOHOME

This record is used as a flag to indicate that the following 5000 5 record should be interpreted as a move to the home position. In actual fact, PowerMill currently outputs a GOHOME record at the very end of the CLDATA file, or at the end of every positional 5-axis toolpath.

CLEARP

This record is used by PowerMill to transmit the value of StartZ used in a particular toolpath. It contains one integer that gives the code for the Z plane (=33), followed by one real that gives the value for StartZ. toolpath.

Word Type Represents
1 integer plane code (always has value 33)
2 real SafeZ value

CUTCOM

Cutter compensation record

Word Type Represents
1 integer code

The values the code can take have the following meanings:

FEDRAT

This contains the feedrate, and consists of one real that gives the value of the feedrate, followed by an integer. That integer is not used by PowerMill, but can specify whether the feedrate is in length units per minute, or length units per revolution of the spindle. The integer is technically a units specifier, but PowerMill makes no use of it, taking the units from the "global" units flag.

Word Type Represents
1 real feedrate value
2 integer units code (not actually used)

DELAY

Commonly known as "dwell", this record contains one real that is used to specify the dwell time in seconds.

Word Type Represents
1 real dwell time in seconds

PPLOT

PowerMill uses this record to indicate the extents of the block. It will be preceeded by a workplane record giving the coordinate system for the block.It consists of 6 reals:

Word Type Represents
1 real Block XMin
2 real Block Ymin
3 real Block ZMin
4 real Block XMax
5 real Block YMax
6 real Block ZMax

COOLNT

This record contains one integer.

Word Type Represents
1 integer coolant code

This integer is interpreted as follows:

SPINDL

This record contains information relating to the spindle, and is structured like so, for spindle off:

Word Type Represents
1 integer code (= 72, for spindle off)

and like so, for spindle on:

Word Type Represents
1 real spindle speed, in RPM
2 integer code (= 78, for spindle on)
3 integer sense (=60 for clockwise, =59 for counterclockwise
4 integer range (=145 always)
5 integer ?, always 0
6 integer indicates a radius value follows, always =23
7 real tip radius: PowerMill uses this for the tip radius of a tool
8 integer always 0
9 real always 0.0

PPRINT

This is used as a comment record. PowerMill uses copious amounts of comment records at the start of every toolpath. The comment record simply consists of character CLDATA, with the characters forming the text of the comment string.

PARTNO

This is used as an identifier for the part. Each CLDATA file should contain just one PARTNO record. Again, it simply consists of character CLDATA, with the characters forming the name of the part.

INSERT

This is again character CLDATA. It allows for text to be directly inserted into the output file, for example a code such as G56. The difference between this and a comment record is that no brackets or other comment defining characters will be added on output.

LOADTL

This is used to indicate that a tool needs to be loaded, and also to describe the tool. The record is structured as follows:

Word Type Represents
1 real toolnumber (real is not a typo!)
2 integer indicates that tool length follows (=9)
3 real tool length
4 integer indicates that the tool diameter follows (=509)
5 real tool diameter
6 integer indicates that the offset toolnumbers follow
7 real the length offset register number for the tool
8 real the diameter offset register number for the tool
9* integer optionally present, indicates a toolname follows (=3017)
10* character optionally present, forms the toolname
...* character optionally present, any additional character records required to fully specify the tool name

CYCLE

The following is for a multiple peck cycle:

Word Type Represents
1 integer code to indicate cycle type
2 real clearance_plane + peck_depth
3 real clearance_plane + 2.0*peck_depth
... ... ...
N real clearance_plane + (N-1)*peck_depth
N+1 real total_depth
N+2 integer =315
N+3 real feedrate
N+4 real =0.0
N+5 real clearance_plane

For single peck cycles, only the total depth is given. Note the somewhat odd manner in which the drill depths are defined. Also, note that the clearance plane is defined somewhat oddly, and is the distance between the Z height of the actual clearance plane, and the previous Z height. It would be always expected to be positive, since one expects to be above the clearance plane before drilling begins.

The drill type codes are like so:

PPFUN

This record is widely used by PowerMill as a "proprietary" CLDATA record. It consists of character CLDATA record. Since this record is so heavily used, it will be detailed below.

SAFPOS

This record is used by PowerMill to specify the SafeZ value.

Word Type Represents
1 real SafeZ value

PPFUN records

These contain character CLDATA. The original intention of PPFUN records is to allow a "user" CLDATA record that the post-processor can pick up and act upon. When the character CLDATA is decoded, there is a space delimited text string. The first token in this text string is the PPFUN command. These can be created by the user within PowerMill, but certain PPFUN records are used by PowerMill to indicate certain special properties. The PPFUN commands that have special meaning to PowerMill are listed below. Note that any numerical values are represented in character form.

3000 records

These records are used to specify geometry. PowerMill uses these to specify circles (or arcs) and B-spline curves. The circle record is standard, and is structured as below, with major word taking the value 2:

Word Type Represents
1 integer =1
2 integer =4
3 integer =9
4 integer =0
5 integer =0
6 real centre X coordinate
7 real centre Y coordinate
8 real centre Z coordinate
9 real axis X component
10 real axis Y component
11 real axis Z component
12 real radius

Delcam also uses the 3000 class record to represent non-rational B-spline curves. This use of the 3000 class record uses a major word of 0, and is structured as follows:

Word Type Represents
1 integer =0
2 integer Code to indicate spline record (=126)
3 integer =1
4 integer order of spline (=3)

The 3000 class of records are followed by 5000 5 records (possibly continued by 5000 6 records). In the case of a circle record, the 5000 5 record is a polygonisation of the circle. In the case of a spline record, the 5000 5 record gives points that lie on the underlying cubic B-spline curves. Assume that each individual curve is given [0,1] parameterisation:

5000 records (MOTION records)

These records contain the point data that is used to specify the tool motion. PowerMill uses three types of 5000 record:

Code Mnemonic Description
3 FROM Specifies the "home" point of the toolpath.
5 MOTION General motion record, that may be modified by the immediately preceding record (CIRCLE, SPLINE, CYCLE, GOHOME).
6 CONT Continuation of a 5000 5 record

MOTION records are all structured as below, with the example record showing two points. In a 5000 5 or 5000 6 record there can be up to 80 points.

Word Type Represents
1 real X coordinate of point 1
2 real Y coordinate of point 1
3 real Z coordinate of point 1
[4 real X coordinate of point 2]
[5 real Y coordinate of point 2]
[6 real Z coordinate of point 2]

If the CLDATA is in MULTAX mode, then the 5000 5/6 records contain toolvector information in addition to tool position information. Thus, only 40 points may be contained in such a record.

6000 records

There are two tolerance records used by PowerMill: 6000 4 (INTOL) and 6000 5 (OUTTOL). However, these records use the same values, and are both structured as below:

Word Type Represents
1 real tolerance value
2 real tolerance value
3 real tolerance value

6000 6 is the tool information record structured as follows.

Word Type Represents
1 real cutter diameter
2 real corner radius
3 real tip radius x
4 real tip radius y
5 real not used
6 real taper angle
7 real cutting length

9000 records

There are two records in the 9000 class that are used by PowerMill. 9000 2 is the MULTAX record, and 9000 9 is the units record.

MULTAX

Word Type Represents
1 integer status: =1 (ON), =0 (OFF)

MULTAX ON remains active until MULTAX OFF is seen.

UNITS

Word Type Represents
1 integer code: =171 (MM), =173 (INCH)
PowerMill uses one record in the 18000 class. The 18000 1 record contains one double, which is used to specify the thickness for the toolpath.

20000 records

These are just description records which appear at the start and end of groups of records (for example Join....Join End).
Word Type Represents
1 integer
2 integer
3 integer
4 String Description

The description consists of one of the following

28000 records

Workplane records : 1 for ncprogram workplane, 2 for toolpath workplane, 3 for block workplane, 4 is for fixture offsets, 5 is for the safe area workplane, and 6 is for the model location.

Word Type Word Type Word Type Represents
1 real 2 real 3 real Position
4 real 5 real 6 real X Vector
7 real 8 real 9 real Y Vector
10 real 11 real 12 real Z Vector
13 real 14 real 15 real Euler angles

29000 records

These non-standard cldata records are used to pass information to the postprocessor where no standard records are available. The record always contains a real and a string, if the information to be passed is a string the numeric value is 0, if the information is numeric the string contains a description of the record to make it easier to read when looking at a printed form of the cutfile.

Word Type Represents
1 integer Record Code
2 string String value or name of record
3 real Numeric value or 0

The following 29000 records are available:

Integer String Real Meaning
1 Tool type Length Length to be used for multiaxis calculation
2 "Recommended_length" Length Overhang
3 workplane name 0 Toolpath creation workplane name
4 "Tip" or "Centre" 0 Coordinate output - tool tip or centre
5 "Drill_dwell" Dwell Dwell for drilling cycle
6 "Hole_top" Top Hole top for drilling
7 "Hole_diameter" Diameter Hole diameter for drilling
8 "Rapid_feed" Feedrate Rapid feedrate
9 "Cutting_feed" Feedrate Cutting feedrate
10 "Plunge_feed" Feedrate Plunge feedrate
11 "Number_pecks" Number Number of pecks for drilling
12 "Pitch" Value Thread pitch for drilling
20 Workplane name 0 Output workplane name
21 "Expanded_cycle" 0 Only written if the following data is an expanded drilling cycle
22 "Peck_depth" Depth Peck depth for drilling
23 "Peck_decrement" Value Peck decrement if each peck is to be smaller than the last
24 "Minimum_peck" Value Smallest peck if each peck is to be smaller than the last
25 "Feed_reduction" Value Proportion by which feed is to be reduced at the bottom of the drill
26 "Rfeed_distance" Distance Distance for which feed is to be reduced at the bottom of the drill
27 "Full retract" 0.0(partial retract) or 1.0(full retract) Drilling : if 1 retract to safe Z (G98) otherwise to the clear plane (G99)
28 "User_par" Value User defined parameter for drilling
29 "Draft angle" Value Draft angle for drilling
30 "Sfeed_reduction" Value Factor for reducing the feedrate at the top of a hole.
31 "Sfeed_distance" Value Fraction of the drilled depth for which the feedrate is reduced.
32 "Overlap" Value The factor by which a profile overlaps in profile drilling.
33 "Retract_Factor" Value The factor of the peck used to retract for break chip drilling
34 "Retract_Feed_Factor" Value The retract may be done at a different feedrate from cutting
35 "Chamfer_Diameter" Value Chamfer diameter for drilling
36 "Sub_Peck" Value Subsidiary peck (for each peck several sub pecks are performed).
37 "Rapid_Retract" 0 or 1 If 1 then drilling cycle retracts at rapid.
38 "Hole_Depth" Value The depth of the actual hole (which may not be the drilled depth
39 strategy_subtype Value Strategy type (e.g. single peck for drilling)
40 strategy name strategy code Toolpath strategy name
41 "Number_flutes" Number The number of flutes on the tool
42 "Compensation" Radius Value for radius compensation (not usually the full radius)
43 "Toolpath_codebase" Codebase Toolpath creation codebase
44 "Modification_status" 0.0 (not modified) or 1.0 (modified) Has toolpath been edited
45 "Program Number" Program Number Number which can be used at start of program output.
46 "Varifeed" 1.0 The toolpath following this record contains some feedrates which are not plunge,cutting or rapid
47 "Finishing" 1.0 Toolpath Type
"Roughing" 2.0
"Drilling" 3.0
"Semi_Finishing" 4.0
48 tool_description Text Tool description
60 project name 1.0 The project name (not the full project path)
61 "Skim_distance" Value The skim distance
62 "Cut_direction" Value Cut direction
70 "Allowance" Value The allowance for a drill profile finishing pass
71 "Number_of_Cuts" Value The number of cuts for drilling
72 "Number_of_Turns" Value The number of turns for drilling
73 "Lead_angle" Value The drilling lead angle
74 "Incr_start" Value The distance above the clearance where pecking starts
75 "Secondary_Clearance" Value The secondary clearance
99 "Toolpath_end" Value The toolpath end
100 "required_ductpost" Codebase Minimum codebase of ductpost for this cutfile
101 "axial_thickness" Value Axial thickness for this toolpath
102 "SAFEAREAPLANEDIST" Value Safe area distance
103 "SAFEAREAPLANEPLUNGE" Value Safe area plunge distance
104 "SAFEAREAPLANENORMX" Value X component of the safe area axis
105 "SAFEAREAPLANENORMY" Value Y component of the safe area axis
106 "SAFEAREAPLANENORMZ" Value Z component of the safe area axis
107 "SAFEAREACYLPOINTX" Value X component of the safe area point
108 "SAFEAREACYLPOINTY" Value Y component of the safe area point
109 "SAFEAREACYLPOINTZ" Value Z component of the safe area point
110 "SAFEAREABOXLENX" Value X component of a safe area box length
111 "SAFEAREABOXLENY" Value Y component of a safe area box length
112 "SAFEAREABOXLENZ" Value Z component of a safe area box length
113 "SAFEAREATYPE" 1 (plane), 2 (cylinder), 3 (sphere), 4 (Box) The type of safe area
114 "CNC Cutter Comp Type" 1 (full radius), 2 (wear), 0 (no) Does the toolpath use cutter compensation
115 "Drill_Lead_Dist" Value Drill lead distance
116 "Feed_Ramp_LeadIn" Value Feedrate definition for ramp lead in moves
117 "Feed_LeadIn" Value Feedrate definition for lead in moves
118 "Feed_LeadOut" Value Feedrate definition for lead out moves
119 "Ramp_LeadIN_feed" Value Marker for ramp lead in moves
120 "LeadIN_feed" Value Marker for lead in moves
121 "LeadOUT_feed" Value Marker for lead out moves
122 Model location workplane name 0 Name of the model location workplane

30000 records

User paramters.

Word Type Represents
1int1 project, 2 toolpath, 3 tool
2stringUser parameter name
3doubleUser parameter value

30100 records

Settings. The difference between these and user parameters is just that settings may appear before any point where user parameters are grouped at the toolpath start.

Word Type Represents
1intNot used (always 0)
2stringSetting name
3stringSetting value

32000 records (MOTION records with orientation vector)

These records contain the point data that is used to specify the tool motion together with a contact normal vector

MOTION with contact normal records are all structured as below, with the example record showing two points. In a 32000 5 or 32000 6 record there can be up to 40 points.

Word Type Represents
1 real X coordinate of point 1
2 real Y coordinate of point 1
3 real Z coordinate of point 1
4 real I coordinate of 1st contact normal
5 real J coordinate of 1st contact normal
6 real K coordinate of 1st contact normal
[7 real X coordinate of point 2]
[8 real Y coordinate of point 2]
[9 real Z coordinate of point 2]
[10 real I coordinate of 2nd contact normal]
[11 real J coordinate of 2nd contact normal]
[12 real K coordinate of 2nd contact normal]

If the CLDATA is in MULTAX mode, then the 32000 5/6 records contain toolvector information between the tool position information and contact normal. Thus, only 24 points may be contained in such a record.

32100 records (MOTION records with orientation vector)

These records contain the point data that is used to specify the tool motion together with an orientation vector

MOTION with orientation records are all structured as below, with the example record showing two points. In a 32000 5 or 32000 6 record there can be up to 40 points.

Word Type Represents
1 real X coordinate of point 1
2 real Y coordinate of point 1
3 real Z coordinate of point 1
4 real I coordinate of 1st orientation vector
5 real J coordinate of 1st orientation vector
6 real K coordinate of 1st orientation vector
[7 real X coordinate of point 2]
[8 real Y coordinate of point 2]
[9 real Z coordinate of point 2]
[10 real I coordinate of 2nd orientation vector]
[11 real J coordinate of 2nd orientation vector]
[12 real K coordinate of 2nd orientation vector]

If the CLDATA is in MULTAX mode, then the 32100 5/6 records contain toolvector information between the tool position information and orientation vector. Thus, only 24 points may be contained in such a record.

32200 records (MOTION records with orientation vector and contact normal)

This is the same as the 32000 and 32100 records but with both orientation vector and contact normal. In MULTAX mode the tool axis vector appears as well. So in multax mode for each point there are 4 triples:
position, tool axis vector, orientation vector, contact normal



Rev No. WhatWhoWhen
1 Added 30000 and 32000mh28/01/10
1 Added 28000 and 30100mh12/11/10
1 Added 1046mh27/03/11