NURBS Formats in APT Output

It is possible to generate NC output files containing tool motion descriptions using a format based on NURBS technology for both fixed or variable axis programs.

This format is recognized by most new generation NC controllers (such as the Siemens 840D). It supports High Speed Milling (HSM) in order to reduce machining time and improve surface quality.

Examples of Fixed Axis and Variable Axis NURBS output statements that can be found in the generated APT file are given below.

Fixed Axis NURBS example:

BEGIN NURBS_SIEMENS(D=3,F=4000,AXIS=0.00,0.00,1.00);
N0,XT= 0.000,YT=0.000,ZT=0.000,DK= 0.00,W=1.0;
N1,XT=10.000,YT=0.000,ZT=0.000,DK= 0.00,W=1.0;
N2,XT=20.000,YT=0.000,ZT=0.000,DK=30.00,W=1.0;
N3,XT=30.000,YT=0.000,ZT=0.000,DK= 0.00,W=1.0;
END NURBS;

Variable Axis NURBS example:

BEGIN NURBS_SIEMENS(D=3,F=4000,AXIS=VAR,LENGTH=100.00);
N0,XT= 0.000,YT=0.000,ZT=0.000,XH= 0.000, $
YH=0.000,ZH=100.00,DK= 0.00,W=1.0;
N1,XT=10.000,YT=0.000,ZT=0.000,XH=10.000, $
YH=0.000,ZH=100.00,DK= 0.00,W=1.0;
N2,XT=20.000,YT=0.000,ZT=0.000,XH=20.000, $
YH=0.000,ZH=100.00,DK=30.00,W=1.0;
N3,XT=30.000,YT=0.000,ZT=0.000,XH=30.000, $
YH=0.000,ZH=100.00,DK= 0.00,W=1.0;
END NURBS;

These statements are supported by some of the Post-Processors proposed under Tools > Options > Machining > Output for conversion to Siemens Nurbs/Bspline statements.

Benefit Derived from Using NURBS Interpolated Tool Paths

There are several advantages in using NURBS interpolated tool paths:

Gain in Overall Dynamic Performance

Because NURBS curves introduce C2 continuity in the path as often as possible, it decreases dramatically the machine decelerations produced by curvature discontinuities. This fact is easily explained. If the second derivative of the curve is not continuous on a point, the numerical controller detects a discontinuity in acceleration at this position. There are two solutions to this problem:

Better Surface Quality

Compared to linear interpolation, a NURBS machined surface will have a smoother aspect and will not provide a facetized result like in linear interpolation. A very good surface quality can be obtained without significantly reducing the program tolerance.

Gain in Productivity

NURBS output provides better dynamic properties and, as a result, the gain in productivity using NURBS instead of linear or linear/circular interpolation is increased. A comparison in terms of machining time gain of the different APT output formats has been verified with a lot of programs including 3-axis and 5-axis operations.

This interpolation provides as good results as the numerical controller polynomial interpolation. The advantage of using NURBS interpolation is that there is no need for extra numerical controller parameterization.

The NURBS toolpath final tolerance is equal to 1.5 times the computed operation tolerance.

CATIA Version 5 APT Output Format

The fixed and variable axis NURBS output can be included in regular Catia APT output containing other classes of 3 or 5 axis tool motion statements. The most common of these statements are:

GOTO / x, y, z

GOTO / x, y, z, i, j, k

Sample:

GOTO / 0.00000, 89.19372, 12.00000

GOTO / 0.00000, 89.19372, 12.00000, 0.000000, 0.000000, 1.000000

Syntax

A Fixed Axis Catia NURBS for Siemens Output looks like this:

BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS= 0.000000, 0.000000, 1.000000)
N0, XT= 0.00000, YT= 89.19372, ZT= 12.00000,DK=0.000,W=1.000;
N1, XT= -35.25923, YT= 82.30182, ZT= 12.00000,DK=0.000,W=1.000;
N2, XT= -70.67279, YT= 76.14709, ZT= 12.00000,DK=107.790,W=1.000;
N3, XT= -105.90481, YT= 69.14878, ZT= 12.00000,DK=0.000,W=1.000;
END NURBS

A Variable Axis Catia NURBS for Siemens Output looks like this:

BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS=VAR,LENGTH= 50.000)
N0, XT= -75.76597, YT= 71.65094, ZT= -21.94567, XH= -72.178223, YH=$
62.527376, ZH= 27.083796,DK=0.000,W=1.000;
N1, XT= -78.91003, YT= 71.01919, ZT= -21.77676, XH= -79.690819, YH=$
61.032142, ZH= 27.416003,DK=0.000,W=1.000;
N2, XT= -82.06101, YT= 70.37700, ZT= -21.56199, XH= -87.244248, YH=$
59.640659, ZH= 27.190920,DK=22.998,W=1.000;
N3, XT= -85.40313, YT= 69.68892, ZT= -21.29975, XH= -94.767915, YH=$
58.350206, ZH= 26.488684,DK=0.000,W=1.000;
END NURBS

The number of digits used for each float value is not imposed. The $ character signifies that the instruction continues on the next line.

Mathematical and Geometrical Interpretation

D=Integer value:
degree on the NURBS, means order-1, in most cases degree is 3 and order is 4.
F=Float value:
feedrate in mm per minute (Feedrate)
LENGTH=Float value:
distance (constant in the NURBS) between MT and MH control points.
N=Integer value:
rank of the control point in the NURBS, starts at 0 for the initial point.
XT, YT, ZT=Float values:
coordinates of the control point of the tool tip (MT).
XH, YH, ZH=Float values:
coordinate of the control point of a point on the tool axis (MH).
DK=Float value:
increment of nodal parameter related to this node (can be null, always >= 0.00).
W= Float value:
weight of the control point (in most cases it is set to 1.00 for all NURBS, which is Polynomial and not Rational in this case ).

Consider (DKi), (Wi), (XTi,YTi,ZTi), (XHi,YHi,ZHi) for all the values related to the control point i, for i in [0,NB].
With all this data it is possible to define a NURBS function from [0.00,Kmax] to R6.
Kmax = ΣDKi , for i=0 to NB.

The nodal vector (U(I)) of the NURBS contains NB+5 Values:
U(0)=0.00
U(1)=0.00
And for I=2 to NB+3
U(I)=U(I-1)+DK(I-2) (that is, U(2)=U(1)+DK(0)=0.00)
then
U(NB+4) = U(NB+3) = Kmax
U(NB+5) = U(NB+4)

In Fixed Axis mode, for each value of w in [0,Kmax] this function give 3 values: X(w), Y(w), Z(w), which are the control point coordinates of the tool tip at the w parameter.

In Variable Axis mode, for each value of w in [0,Kmax] this function give 6 values: XT(w), YT(w), ZT(w), XH(w), YH(w), ZH(w) which are the control point coordinates of the points MT=(XT,YT,ZT) and MH=(XH,YH,ZH).

MT is the position of the tool tip at the w parameter.
MH is the position, at the w parameter, of the point on the tool axis located a distance LENGTH from MT. This length defines the active cutting part of the tool. This means that all transformations of the tool path must respect the machining tolerance (chordal deviation) for all points between MT and MH.

The first Tool position (XYZIJK) of the NURBS is:

X=XT0
Y=YT0
Z=ZT0
I=(XH0-XT0)/LENGTH
J=(YH0-YT0)/LENGTH
K=(ZH0-ZT0)/LENGTH.

Post Processing Considerations for Siemens 840D Format

Variable Axis Syntax

The format used by 840D is the following:

BEGIN NURBS_SIEMENS(D=3,F=xxxx,AXIS=VAR,LENGTH=100.00);
N0,XT=xt0,YT=yt0,ZT=zt0,XH=xh0,YH=yh0,ZH=zh0,DK=dk0,W=w0;
N1,XT=xt1,YT=yt1,ZT=zt1,XH=xh1,YH=yh1,ZH=zh1,DK=dk1,W=w1;
N2,XT=xt2,YT=yt2,ZT=zt2,XH=xh2,YH=yh2,ZH=zh2,DK=dk2,W=w2;

../..
Nn,XT=xtn,YT=ytn,ZT=ztn,XH=xhn,YH=yhn,ZH=zhn,DK=dkn,W=wn;
END NURBS;

If previous Catia block is a NURBS block:
     SD=3 F xxxx ; NURBS degree and feedrate
Otherwise:
     ORIVECT
     G1 X Y Z A3=I B3=J C3=K ; first point of the NURBS, Control Point 0
Then:
     ORICURVE
     G642 ; start of continuous motion statement
     BSPLINE SD=3 F xxxx ; NURBS declaration, degree and feedrate
     X Y Z XH YH ZH PW=W PL=DK ; Control Point 1
     X Y Z XH YH ZH PW=W PL=DK ; Control Point 2
     ../..
     X Y Z XH YH ZH PW=W PL=DK ; Last Control Point of the NURBS.

Translation from Catia Format

All parameters are the same as the one on the corresponding Catia line (i), except for the first one. If needed it is translated by a G1 statement.

Siemens Xi= Catia XTI
Siemens Yi= Catia YTI
Siemens Zi= Catia ZTI
Siemens XHi= Catia XHi
Siemens YHi= Catia YHi
Siemens ZHi= Catia ZHi
Siemens PWi= Catia Wi
Siemens PLi= Catia DKi

APT Sample for Variable Axis NURBS

$$ -----------------------------------------------------------------
$$ Generated on Wednesday, September 25, 2002 05:24:47 PM
$$ CATIA APT VERSION 1.0
$$ -----------------------------------------------------------------
$$ Flank Mixed Combin
$$ Part Operation.1
$$*CATIA0
$$ Flank Mixed Combin
$$ 1.00000 0.00000 0.00000 0.00000
$$ 0.00000 1.00000 0.00000 0.00000
$$ 0.00000 0.00000 1.00000 0.00000
PARTNO Part Operation.1
FROM / 0.00000, 0.00000, 100.00000, 0.000000, 0.000000, 0.000000
PPRINT OPERATION NAME : Tool Change.10
$$ Start generation of : Tool Change.10
MULTAX
$$ TOOLCHANGEBEGINNING
CUTTER/ 8.000000, 4.000000, 0.000000, 4.000000, 0.000000,$
0.000000, 50.000000
TOOLNO/2,MILL, 8.000000, 4.000000,, 100.000000,$
60.000000,, 50.000000,4, 8000.000000,$
MMPM,15000.000000,RPM,CLW,ON,$
AUTO, 0.000000,NOTE
TPRINT/balld8,,balld8
LOADTL/2,2,2
$$ End of generation of : Tool Change.10
PPRINT OPERATION NAME : Multi-Axis Flank Contouring.2
$$ Start generation of : Multi-Axis Flank Contouring.2
FEDRAT/ 8000.0000,MMPM
SPINDL/15000.0000,RPM,CLW
BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS=VAR,LENGTH= 50.000)
N0, XT= 19.75656, YT= 81.42861, ZT= 20.00000, XH= 19.757763, YH=$
71.623025, ZH= 69.029078,DK=0.000,W=1.000;
N1, XT= 19.75625, YT= 83.94658, ZT= 7.40984, XH= 19.757454, YH=$
74.140998, ZH= 56.438918,DK=0.000,W=1.000;
N2, XT= 19.75594, YT= 86.46456, ZT= -5.18032, XH= 19.757144, YH=$
76.658971, ZH= 43.848757,DK=38.518,W=1.000;
N3, XT= 19.75563, YT= 88.98253, ZT= -17.77048, XH= 19.756835, YH=$
79.176944, ZH= 31.258597,DK=0.000,W=1.000;
END NURBS
BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS=VAR,LENGTH= 50.000)
N0, XT= 19.75563, YT= 88.98253, ZT= -17.77048, XH= 19.756835, YH=$
79.176944, ZH= 31.258597,DK=0.000,W=1.000;
N1, XT= 19.38827, YT= 89.96343, ZT= -23.02431, XH= 19.389475, YH=$
80.157844, ZH= 26.004770,DK=0.000,W=1.000;
N2, XT= 14.20175, YT= 89.85474, ZT= -27.41283, XH= 14.202952, YH=$
80.049153, ZH= 21.616250,DK=15.662,W=1.000;
N3, XT= 9.00010, YT= 88.77303, ZT= -26.95061, XH= 9.001309, YH=$
78.967440, ZH= 22.078468,DK=0.000,W=1.000;
END NURBS

../..

BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS=VAR,LENGTH= 50.000)
N0, XT= 19.18055, YT= -42.44969, ZT= -6.28780, XH= 19.180191, YH=$
-37.474471, ZH= 43.464058,DK=0.000,W=1.000;
N1, XT= 19.18049, YT= -41.57342, ZT= 2.47480, XH= 19.180128, YH=$
-36.598205, ZH= 52.226657,DK=0.000,W=1.000;
N2, XT= 19.18042, YT= -40.69716, ZT= 11.23740, XH= 19.180065, YH=$
-35.721939, ZH= 60.989257,DK=26.419,W=1.000;
N3, XT= 19.18036, YT= -39.82089, ZT= 20.00000, XH= 19.180002, YH=$
-34.845674, ZH= 69.751856,DK=0.000,W=1.000;
END NURBS
$$ End of generation of : Multi-Axis Flank Contouring.2
FINI

NC Code Sample for Variable Axis NURBS

N10 ;PROGRAMME : Part Operation.1
N20 ;PROGRAMMEUR: AAU
N30 ;DATE : AAU
G642
ffwon
N40 TRAORI
G57
M8
N50 ORIVECT
N60 G0 Z100.0
N70 G0 X0.0 Y0.0
N80 T2 M06
N90 G1 X19.75656 Y81.42861 Z20.0 A3=0.00002 B3=-0.19611 C3=0.98058
N100 ORICURVE
N110 G642
N120 BSPLINE SD=3 F8000.000
N130 X19.75625 Y83.94658 Z7.40984 XH=19.75745 YH=74.141 ZH=56.43892 PL=0.0
N140 X19.75594 Y86.46456 Z-5.18032 XH=19.75714 YH=76.65897 ZH=43.84876 PL=38.518
N150 X19.75563 Y88.98253 Z-17.77048 XH=19.75683 YH=79.17694 ZH=31.2586 PL=0.0
N160 X19.38827 Y89.96343 Z-23.02431 XH=19.38948 YH=80.15784 ZH=26.00477 PL=0.0
N170 X14.20175 Y89.85474 Z-27.41283 XH=14.20295 YH=80.04915 ZH=21.61625 PL=15.662
N180 X9.0001 Y88.77303 Z-26.95061 XH=9.00131 YH=78.96744 ZH=22.07847 PL=0.0

../..

N470 X19.19914 Y-42.982 Z-11.59413 XH=19.19878 YH=-38.00679 ZH=38.15773 PL=15.662
N480 X19.18055 Y-42.44969 Z-6.2878 XH=19.18019 YH=-37.47447 ZH=43.46406 PL=0.0
N490 X19.18049 Y-41.57342 Z2.4748 XH=19.18013 YH=-36.59821 ZH=52.22666 PL=0.0
N500 X19.18042 Y-40.69716 Z11.2374 XH=19.18007 YH=-35.72194 ZH=60.98926 PL=26.419
N510 X19.18036 Y-39.82089 Z20.0 XH=19.18 YH=-34.84567 ZH=69.75186 PL=0.0
N520 ORIVECT
N530 TRAFOOF
N540 G57
N550 M5 M9
N560 M30

Fixed Axis Syntax

The format used by 840D is the following: Translation Convention.

BEGIN NURBS_SIEMENS(D=3,F=xxxx,AXIS=0.00,0.00,1.00);
N0,X=x0,Y=y0,Z=z0,DK=dk0,W=w0;
N1,X=x1,Y=y1,Z=z1,DK=dk1,W=w1;
N2,X=x2,Y=y2,Z=z2,DK=dk2,W=w2;
../..
Nn,X=xn,Y=yn,Z=zn,DK=dkn,W=wn;
END NURBS;

If previous Catia block is a NURBS Block:
     SD=3 F xxxx ; NURBS degree and feedrate 
Otherwise:
     G1 X Y Z ; first point of the NURBS, Control Point 0
Then:
     G64 ; start of continuous motion statement
     BSPLINE SD=3 F xxxx ; NURBS declaration, degree and feedrate
     X Y Z PW=W PL=DK ; Control Point 1
     X Y Z PW=W PL=DK ; Control Point 2
     ../..
     X Y Z PW=W PL=DK ; Last Control Point of the NURBS

Translation from Catia Format

All parameters are the same as the one on the corresponding Catia line (i), except for the first one. If needed it is translated by a G1 statement.

Siemens Xi= Catia Xi
Siemens Yi= Catia Yi
Siemens Zi= Catia Zi
Siemens PWi= Catia Wi
Siemens PLi= Catia DKi

APT Sample for Fixed Axis NURBS

$$ -----------------------------------------------------------------
$$ Generated on Wednesday, September 25, 2002 05:24:29 PM
$$ CATIA APT VERSION 1.0
$$ -----------------------------------------------------------------
$$ Manufacturing Program.7
$$ Part Operation.1
$$*CATIA0
$$ Manufacturing Program.7
$$ 1.00000 0.00000 0.00000 0.00000
$$ 0.00000 1.00000 0.00000 0.00000
$$ 0.00000 0.00000 1.00000 0.00000
PARTNO Part Operation.1
FROM / 0.00000, 0.00000, 100.00000
PPRINT OPERATION NAME : Tool Change.14
$$ Start generation of : Tool Change.14
MULTAX
$$ TOOLCHANGEBEGINNING
CUTTER/ 8.000000, 4.000000, 0.000000, 4.000000, 0.000000,$
0.000000, 50.000000
TOOLNO/2,MILL, 8.000000, 4.000000,, 100.000000,$
60.000000,, 50.000000,4, 8000.000000,$
MMPM,15000.000000,RPM,CLW,ON,$
AUTO, 0.000000,NOTE
TPRINT/balld8,,balld8
LOADTL/2,2,2
$$ End of generation of : Tool Change.14
PPRINT OPERATION NAME : Isoparametric Machining.2
$$ Start generation of : Isoparametric Machining.2
FEDRAT/ 8000.0000,MMPM
SPINDL/15000.0000,RPM,CLW
GOTO / 9.95037, -48.78022, 20.00000
GOTO / 9.95037, -48.78022, 22.00000
BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS= 0.000000, 0.000000, 1.000000)
N0, XT= 9.95037, YT= -48.78022, ZT= 22.00000,DK=0.000,W=1.000;
N1, XT= 10.01206, YT= -48.78639, ZT= 16.72430,DK=0.000,W=1.000;
N2, XT= 5.43447, YT= -48.32863, ZT= 11.75306,DK=15.662,W=1.000;
N3, XT= 0.00000, YT= -47.78518, ZT= 12.00000,DK=0.000,W=1.000;
END NURBS

../..

BEGIN NURBS_SIEMENS (D=3,F=8000.000,AXIS= 0.000000, 0.000000, 1.000000)
N0, XT= 0.00000, YT= -44.60573, ZT= 12.00000,DK=0.000,W=1.000;
N1, XT= 5.25284, YT= -45.09640, ZT= 11.93801,DK=0.000,W=1.000;
N2, XT= 10.20252, YT= -45.55876, ZT= 16.53842,DK=15.662,W=1.000;
N3, XT= 9.95665, YT= -45.53580, ZT= 22.00000,DK=0.000,W=1.000;
END NURBS
GOTO / 9.95665, -45.53580, 22.00000
GOTO / 9.95665, -45.53580, 20.00000
$$ End of generation of : Isoparametric Machining.2
FINI

NC Code Sample for Fixed Axis NURBS

N10 ;PROGRAMME : Part Operation.1
N20 ;PROGRAMMEUR: AAU
N30 ;DATE : AAU
G642
ffwon
N40 TRAORI
G57
M8
N50 ORIVECT
N60 G0 Z100.0
N70 G0 X0.0 Y0.0
N80 T2 M06
N90 G1 X9.95037 Y-48.78022 Z20
N100 G1 X9.95037 Y-48.78022 Z22.0
N110 G64
N120 BSPLINE SD=3 F8000.000
N130 X10.01206 Y-48.78639 Z16.7243 PL=0.0
N140 X5.43447 Y-48.32863 Z11.75306 PL=15.662
N150 X0.0 Y-47.78518 Z12.0 PL=0.0

../..

N2700 X0.0 Y-44.60573 Z12.0 PL=0.0
N2710 X5.25284 Y-45.0964 Z11.93801 PL=0.0
N2720 X10.20252 Y-45.55876 Z16.53842 PL=15.662
N2730 X9.95665 Y-45.5358 Z22.0 PL=0.0
N2740 ORIVECT
N2750 G1 X9.95665 Y-45.5358 Z22
N2760 Z20
N2770 TRAFOOF
N2780 G57
N2790 M5 M9
N2800 M30

Scope and Limitations

The tool paths of all non-axial machining operations can be generated in NURBS format.

NURBS output statements are computed by taking into account the machining tolerance defined on the machining operation. The number of control points is a consequence of the accuracy required on the NURBS and so is relative to the machining tolerance. There is no option for the user to manage the number of control points.

Note that the 3D Nurbs Interpolation check box in the Machine Editor dialog box must be set to specify the ability to generate NURBS data in an APT output file.

The NURBS output of an operation is not compatible with any compensation output format (Profile or PQR).

The NURBS output is not compatible with Center output, NURBS is always a Tip position.

The NURBS ouput is only possible in APT (not CLFile).

It is not possible to import an APT containing NURBS statements using the APT Import command.

ISO simulation of the NURBS formats is not possible.