Default Move Events
The code below assumes that a STEP-NC file is in memory and annotated with ARM objects as described in the Getting Started instructions.
The example below uses a cursor to print the tool movements in a process. Each call to next() will return a move event (STIXCTL_MOVE) and the active element on the process stack will be some type of movement element. Check the type of that element with getActiveType().
After testing whether it is a linear move, arc, or helix, we print the destination coordinates, tool axis, and any arc parameters associated with the move. These are the most common parameters, but a position may have others, like surface normal or feed multiplier.
// Print coordinates and tool axis information for a move // void printend(StixCtlCursor &ctl, StixCtlPos p) { double v[3]; ctl.getPosXYZ(v, p); printf (" END: XYZ: %.5g %.5g %.5g", v[0], v[1], v[2]); if (ctl.getPosDirZ(v, p)) printf (" ZDIR: %.5g %.5g %.5g", v[0], v[1], v[2]); printf ("\n"); } // Print arc center, radius, and direction for an arc move // void printarc(StixCtlCursor &ctl, StixCtlPos p) { double v[3]; printf (" ARC: %s", ctl.getArcIsCW(p)? "CW": "CCW"); ctl.getArcCenter(v, p); printf (" CENTER: %.5g %.5g %.5g", v[0], v[1], v[2]); printf (" RADIUS: %.5g", ctl.getArcRadius(p)); printf (" ANGLE: %.5g", ctl.getArcAngle(p)); printf ("\n"); } int main (int argc, char **argv) { [ ... read file and other setup ... ] StixCtlCursor p; p.startProject(design); while (p.next()) { switch (p.getActiveType()) { case STIXCTL_TYPE_MOVE: printf ("LINEAR MOVE\n"); printend(p, p.getMoveEnd()); break; case STIXCTL_TYPE_MOVE_ARC: printf ("ARC MOVE\n"); printarc(p, p.getMoveArc()); printend(p, p.getMoveEnd()); break; case STIXCTL_TYPE_MOVE_HELIX: printf ("HELIX MOVE\n"); printarc(p, p.getMoveArc()); printend(p, p.getMoveEnd()); break; default: printf ("UNKNOWN MOVE\n"); break; } } return 0; }
When run on a file with some linear and arc moves, it produces the following output. The data was a series of three-axis toolpaths, so none of the positions have a tool axis direction.
LINEAR MOVE END: XYZ: 0 0 0 LINEAR MOVE END: XYZ: 0 2 0 ARC MOVE ARC: CW CENTER: 2 2 0 RADIUS: 2 ANGLE: 90 END: XYZ: 2 4 0 ARC MOVE ARC: CCW CENTER: 2 6 0 RADIUS: 2 ANGLE: 90 END: XYZ: 4 6 0 LINEAR MOVE END: XYZ: 4 6 0 LINEAR MOVE END: XYZ: 6 6 0 ARC MOVE ARC: CCW CENTER: 8 6 0 RADIUS: 2 ANGLE: 90 END: XYZ: 8 4 0 ARC MOVE ARC: CW CENTER: 8 2 0 RADIUS: 2 ANGLE: 90 END: XYZ: 10 2 0 LINEAR MOVE END: XYZ: 10 2 0 LINEAR MOVE END: XYZ: 10 0 0