pstrtool #Comment for tool if strtool <> sblank, [
strtool = ucase(strtool) *strtool, \ ]
pcomment #Comment from manual entry (must call pcomment2 if booleans)
pcomment2
pcomment2 #Comment from manual entry scomm = ucase (scomm)
if gcode = 1007, \ else, \ #
--------------------------------------------------------------------------
# 文件起始和刀具交换设置 #
--------------------------------------------------------------------------
psof0 #Start of file for tool zero psof
psof #Start of file for non-zero tool number toolchng = one if ntools = one, [
#skip single tool outputs, stagetool must be on stagetool = m_one !next_tool ] \
*progno, e
\
\ ptoolcomment
pbld, n, *sgcode, *sgplane, \\\\*sgabsinc, *smetric, e
sav_absinc = absinc
pcom_moveb
absinc = zero
pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, *zr, *speed, *spindle, pgear, strcantext, e pe_inc_calc ps_inc_calc
absinc = sav_absinc pbld, n, sgabsinc, e
pretract #刀具路径末尾,换刀 sav_absinc = absinc absinc = one
sav_coolant = coolant coolant = zero
#cc_pos is reset in the toolchange here cc_pos = zero gcode = zero
pbld, n, sccomp, *sm05, e
absinc = sav_absinc coolant = sav_coolant
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, [
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. #
--------------------------------------------------------------------------
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
plin #输出直线运动的NC指令 - 进给 pncoutput