peof0 #End of file for tool zero peof
peof #End of file for non-zero tool pretract comment
#Remove pound character to output first tool with staged tools # #if stagetool = one, pbld, n, *first_tool, e n, \ \
pwcs #G54+ coordinate setting at toolchange
if workofs <> prv_workofs | (force_wcs & toolchng), [
if workofs < 6, [
g_wcs = workofs + 54 *g_wcs ] else, [
p_wcs = workofs - five \ ] ]
!workofs
pgear #Find spindle gear from lookup table if use_gear = one, [
gear = frange (one, speed) *gear ]
#换刀设置
pspindle #主轴转速计算 for RPM speed = abs(ss)
if maxss = zero | maxss > max_speed, maxss = max_speed if speed > max_speed, speed = maxss if speed < min_speed, speed = min_speed spdir2 = fsg3(spdir)
pq #Setup post based on switch settings if stagetool = one, bldnxtool = one if arctype = one | arctype = four,
26
[
result = newfs(two, i) result = newfs(two, j) result = newfs(two, k) ] else, [
result = newfs(three, i) result = newfs(three, j) result = newfs(three, k) ]
pheader #文件开始前调用
if met_tool = one, #米制常量和变量调整 [
ltol = ltol_m vtol = vtol_m
maxfeedpm = maxfeedpm_m ]
ptoolend #刀具路径末尾,读取新刀具资料之前 !speed, !spdir2
ptlchg1002 #Call at actual toolchange, end last path here pspindle
if gcode = 1000, [
#Null toolchange ] else, [
#Toolchange and Start of file if gcode = 1002, [
#Actual toolchange pretract ]
if stagetool = one, prv_next_tool = m_one prv_xia = vequ(xh) prv_feed = c9k ]
# -------------------------------------------------------------------------- # Motion NC output 运动 NC 输出
# -------------------------------------------------------------------------- #绝对方式输出的变量为 xabs, yabs, zabs. #增量方式输出的变量为 xinc, yinc, zinc.
27
# -------------------------------------------------------------------------- prapidout #输出直线运动的NC指令 - 快速 pcan1, pbld, n, sgplane, `sgcode, sgabsinc, pccdia, pxout, pyout, pzout, strcantext, scoolant, e
plinout #输出直线运动的NC指令 - 进给 pcan1, pbld, n, sgplane, `sgcode, sgabsinc, pccdia, pxout, pyout, pzout, feed, strcantext, scoolant, e
pcirout #输出圆弧插补的NC指令
if arcrad >= max_arc, result = mprint(saxiswarn) pcan1, pbld, n, sgplane, sgcode, sgabsinc, pccdia,
pxout, pyout, pzout, parc, feed, strcantext, scoolant, e
pcom_moveb #Common motion preparation routines, before pxyzcout ps_inc_calc
pncoutput #Movement output pcom_moveb comment pcan
if gcode = zero, prapidout if gcode = one, plinout
if gcode > one & gcode < four, pcirout pcom_movea
pcom_movea #Common motion preparation routines, after pcan2
pe_inc_calc
pdwl_spd #Call from NCI gcode 4 pspindle comment
if prv_spdir2 <> spdir2, pbld, n, *sm05, e
if prv_speed <> speed | prv_spdir2 <> spdir2, pbld, n, *speed, *spindle, pgear, e pcan
if fmtrnd(dwell), pcan1, pbld, n, *sgcode, *dwell, strcantext, e else, pcan1, pbld, n, strcantext, e pcan2
prapid #输出直线运动的NC指令 - 快速 pncoutput
pzrapid #输出直线运动的NC指令 - 快速 Z only pncoutput
28
plin #输出直线运动的NC指令 - 进给 pncoutput
pz #输出直线运动的NC指令 - 进给 Z only pncoutput
pmx #输出NCI向量的NC指令 pncoutput
pcir #输出圆弧插补的NC指令 pncoutput
# -------------------------------------------------------------------------- # Motion output components 运动输出组成
# -------------------------------------------------------------------------- pbld #Canned text - 单节删除 if bld, '/'
pfbld #强制 - 单节删除 \
pccdia #切削补偿 #Force Dxx#
if prv_cc_pos <> cc_pos & cc_pos, prv_tloffno = c9k sccomp
if cc_pos, tloffno
pfxout #Force X axis output if absinc = zero, *xabs, !xinc else, *xinc, !xabs
pxout #X output
if absinc = zero, xabs, !xinc else, xinc, !xabs
pfyout #Force Y axis output if absinc = zero, *yabs, !yinc else, *yinc, !yabs
pyout #Y output
if absinc = zero, yabs, !yinc else, yinc, !yabs
pfzout #Force Z axis output if absinc = zero, *zabs, !zinc
29
else, *zinc, !zabs
pzout #Z output
if absinc = zero, zabs, !zinc else, zinc, !zabs
parc #选择圆弧输出格式 if arcoutput = zero, [
#圆弧输出为 IJK i, j, k ] else, [
#圆弧输出为 R
if abs(sweep)<=180 | arcoutput=one, result = nwadrs(srad, arcrad) else, result = nwadrs(srminus, arcrad) *arcrad ]
# -------------------------------------------------------------------------- # Drilling 钻孔
# -------------------------------------------------------------------------- pdrlcommonb #Canned Drill Cycle common call, before if gcode = 81, [
result = newfs (two, zinc)
if drillcyc = three, drlgsel = fsg1(-ss) + drillcyc * two else, drlgsel = fsg2(dwell) + drillcyc * two if initht <> refht, drillref = zero else, drillref = one prv_refht_a = c9k prv_refht_i = c9k ]
z = depth
prv_zia = initht feed = fr_pos prv_dwell = zero @dwell
pcom_moveb comment pcan
prdrlout #R drill position refht_a = refht
refht_i = refht - initht
30