I've got an old KMB1 Hurco and I'd like to tweak the solidcam gpp post
for helical arcs. For plain arcs in the XY plane, the Hurco wants a
block like: N55 G2 X1.4792 Y1.375 I1.4006 J1.375, for this the
existing post works fine. Unfortunatly, for helical arcs in the XY
plane, the old bugger wants a incremental, signed "K" term for Z or
slope per 360deg of arc, ie. X___Y___Z___I___J___K___F___ or as
follows:

N55 G2 X1.2713 Y0.755 Z-0.25 I1.2713 J1.375 K-0.25 F100.

For, the ZX plane, it needs X___Y___Z___I___K___J,___F___ and for the YZ plane it needs X___Y___Z___J___K___I ___F___ This is kinda beyond my meager experience with gpp. If I manually code with a K value in XY plane, the Hurco seems to do the helical move just fine, so I just need a way to make the code generation conditional on Solidcam calling for a plain arc, or a helical move. My present arc gpp is the following:

@arc ;-- arc plane --

if arc_direction eq CCW then gcode = 3 else ; CW gcode = 2 endif ; if change(gcode) then call @gen_nb if print_gcode eq true endif {[' X'xpos] [' Y'ypos] [' Z'zpos]}

if arc_plane eq XY then {' I'xcenter:xpos_f, ' J'ycenter:ypos_f} endif if arc_plane eq ZX then {' K'xcenter:xpos_f, ' I'ycenter:ypos_f} endif if arc_plane eq YZ then {' J'xcenter:xpos_f, ' K'ycenter:ypos_f} endif if only_xyz eq false {[' F'feed]} endif endp

Any ideas? Thanks

N55 G2 X1.2713 Y0.755 Z-0.25 I1.2713 J1.375 K-0.25 F100.

For, the ZX plane, it needs X___Y___Z___I___K___J,___F___ and for the YZ plane it needs X___Y___Z___J___K___I ___F___ This is kinda beyond my meager experience with gpp. If I manually code with a K value in XY plane, the Hurco seems to do the helical move just fine, so I just need a way to make the code generation conditional on Solidcam calling for a plain arc, or a helical move. My present arc gpp is the following:

@arc ;-- arc plane --

if arc_direction eq CCW then gcode = 3 else ; CW gcode = 2 endif ; if change(gcode) then call @gen_nb if print_gcode eq true endif {[' X'xpos] [' Y'ypos] [' Z'zpos]}

if arc_plane eq XY then {' I'xcenter:xpos_f, ' J'ycenter:ypos_f} endif if arc_plane eq ZX then {' K'xcenter:xpos_f, ' I'ycenter:ypos_f} endif if arc_plane eq YZ then {' J'xcenter:xpos_f, ' K'ycenter:ypos_f} endif if only_xyz eq false {[' F'feed]} endif endp

Any ideas? Thanks