45.2 APT
This language allows tools to be programmed using geometrical shapes. This puts less burden on the programmer to do calculations in their heads.
APT programs must be converted into low level programs, such as G-codes.
An example of an APT program is given below.
Some samples of the geometrical and motion commands follow. These are not complete, but are a reasonable subset.
GEOMETRY: The simplest geometrical construction in APT is a point
p=POINT/x,y,z - a cartesian point
p=POINT/l1,l2 - intersection of two lines
p=POINT/c - the center of a circle
p=POINT/YLARGE,INTOF,l,c - the largest y intersection of a line and a circle
*Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE
GEOMETRY: Lines are one of the next simplest definitions,
l=LINE/x1,y1,z1,x2,y2,z2 - endpoint cartesian components
l=LINE/p,PARLEL,l - a line through a point and parallel to another line
l=LINE/p,PERPTO,l - a line through a point and perpendicular to a line
l=LINE/p,LEFT,TANTO,c - a line from a point, to a left tangency point on a circle
l=LINE/p,RIGHT,TANTO,c - a line from a point, to a right tangency point on a circle
l=LINE/LEFT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
l=LINE/LEFT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles
l=LINE/RIGHT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
l=LINE/RIGHT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles
GEOMETRY: Circles are very useful for constructing geometries
c=CIRCLE/x,y,z,r - a center and radius
c=CIRCLE/CENTER,p,RADIUS,r - a center point and a radius
c=CIRCLE/CENTER,p,TANTO,l - a center and a tangency to an outside line
c=CIRCLE/p1,p2,p3 - defined by three points on the circumference
c=CIRCLE/YLARGE,l1,YLARGE,l2,RADIUS,r - tangency to two lines and radius
*Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE
GEOMETRY: More complex geometric constructions are possible
QUADRIC/a,b,c,d,e,f,g,h,i,j - define a polynomial using values
GCONIC/a,b,c,d,e,f - define a conic by equation coefficients
LCONIC/p1,p2,... - defines a conic by lofting (splining) points
RLDSRF/ - a ruled surface made of two splines
POLCON/ - define a surface using cross sections
PATERN/ - will repeat a motion in a linear or circular array
Once we have constructed points, lines and circles we can then proceed to direct the tool to follow the path.
MOTION: We can use the basic commands to follow the specified geometry
FROM/p - specify a start point
FROM/x,y,z - specify a start point
GOTO/p - move to a final point
GOTO/x,y,z - move to a final point
GOTO/TO,p - move until the tool touches a point
GOTO/TO,l - move until the tool touches a line
GOTO/TO,c - move until the tool touches a circle
GOLFT/l1,TO,l2 - go on the left of l1 until the tool touches l2
GORGT/l1,TO,l2 - go on the right of l1 until the tool touches l2
GOBACK/l1,TO,l2 - reverses direction along l1 to l2
GOBACK/l1,TO,c1 - reverses direction along l1 to c1
GOUP/l1,TO,l2 - goes up along l1 to l2
GODOWN/1l,TO,l2 - goes down along l1 to l2
GODLTA/x,y,z - does a relative move
Note: TO can be replaced with PAST, ON to change whether the tool goes past the structure, or the center stops on the structure.
MOTION: The following commands will create complex motion of the tool
POCKET/ - will cut a pocket
PSIS/ - will call for the part surface
As would be expected, we need to be able to issue commands to control the machine.
CONTROL: The following instructions will control the machine outside the expected cutting tool motion.
CUTTER/n1,n2 - defines diameter n1 and radius n2 of cutter
MACHIN/n,m - uses a post processor for machine `n', and version `m'
COOL/ANT/n - either MIST, FLOOD or OFF
TURRET/n - sets tool turret to new position
TOLER/n - sets a tolerance band for cutting
FEDRAT/n - sets a feedrate n
SPINDL/n,CW - specifies n rpm and direction of spindle
We can also include some program elements that are only used for programming
PROGRAM: The following statements are programming support instructions
REMARK - starts a comment line that is not interpreted
$$ - also allows comments, but after other statements
NOPOST - turns off the post processor that would generate cutter paths
CLPRNT - prints a sequential history of the cutter center location
SQRTF(n) - calculates the floating point square root
PARTNO/n - allows the user to specify the part name
LOOPST and LOOPND - loop instructions
RESERV/n,m - defines an array of size `n' by `m'
JUMPTO/n - jump to line number
Note: variables can also be defined and basic mathematical operations can be performed.
Note: macro functions are also available.