修改pncoutput #Movement output
........................................
if gcode$ = one & mi3$ = 0, plinout
if gcode$ = one & mi3$ < 0, plinout_force_f
if gcode$ = one & mi3$ >0, plinout_corner_dec
if (gcode$ > one & gcode$ < four) & mi3$ = 0, pcirout
if (gcode$ > one & gcode$ < four) & mi3$, pcirout_corner_dec
.........................................
后处理末尾插入以下代码
#----------------------------------------------------------------------------------------------------------------------
#功能说明
# 2D toolpath corner decelerate #2D拐角减速及圆弧插补减速后处理
# Only support ABS. NCI point #仅支持绝对编程方式
# support G02/G03 feed override, arcoutput$=1 #支持圆弧插补减速
# Nonsupport post 3D NCI, Nonsupport post Ramp #不支持3D刀路,不支持螺旋插补
#mi3$ #mi3 进给改写,编程时在Misc values输入
#正值表示直线和圆弧都减速,
#负值仅圆弧减速,
#0不启用减速后处理。
#-----------------------------------------------------------------------------------------------------------------------
#用户参数
#min_distance : 5 # setting min_distance to break 直线减速距离,打断长度5
#skip_distance :10 # to skip the line length small than直线长度小于10,直接减速不打断
#small_r : 2 # <= R2 use ov_f overiide feed 小于等于R2用Mi3参数改写圆弧插补进给
#big_r : 10 # R2<R<=R10 use 80% feed$ override feed 小于等于R10且大于R2圆弧用80%进给改写,大于R10圆弧不改写进给
#-------------------------------------------------------------------------------------------------------------------------
#作者信息
# Programmer TA
# Version v1.0
# Date 2012-10
# Contact email etg_taoshx@163.com
# Blog https://attao.blog.163.com
#请保留开发者个人信息,以示对作者尊重
#----------------------------------------------------------------------------------------------------------------------
fmt 1 x1 # line end point one
fmt 1 y1
fmt 1 z1
fmt 1 x2 # line end point two
fmt 1 y2
fmt 1 z2
#-------
fmt 1 xcenter # arc data
fmt 1 ycenter
fmt 1 radius
fmt 1 start
fmt 1 arcsweep
#--------
fmt "X" 2 int1x # intersect point one (result point)
fmt "Y" 2 int1y
fmt "Z" 2 int1z
fmt "X" 2 int2x # intersect point one (result point)
fmt "Y" 2 int2y
fmt "Z" 2 int2z
#-----------
fmt "F" 15 ov_f
fmt "F" 15 ov_f2
#----------
fmt 1 min_distance
fmt 1 skip_distance
fmt 1 skip_dis
fmt 1 small_R
fmt 1 big_R
xtol$ : 0.00001 # tolerance, default = 0.0001
skip_dis :0 # Do not modify
min_distance : 5 # setting min_distance to break
skip_distance :10 # to skip the line length small than
small_r : 2 # <= R2 use ov_f overiide feed
big_r : 10 # R2<R<=R10 use 80% feed$ override feed
plinout_corner_dec # postline to set corner decelerate
ov_f=feed #init. feed
if mi3$,ov_f=abs(mi3$) # mi3$ override feed
ptnearx$ = xabs # near point
ptneary$ = yabs
ptnearz$ = 0
x1 = prv_xabs # line start point one
y1 = prv_yabs
z1 = zabs
x2 = xabs # line end point two
y2 = yabs
z2 = zabs
xcenter = prv_xabs # findinter
ycenter = prv_yabs
radius = min_distance
start = 0
arcsweep = 360
int1x = xla(x1,xcenter)
if (t1$<0.998&t1$>0.002),skip_dis=min_distance/t1$
if ((t1$<0.998&t1$>0.002)&skip_dis>skip_distance),pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia, *int1x, *int1y, *ov_f, e$
# "(","intersect P1 ",*int1x," ",*int1y, " ",*int1z," ", " ", "startpiont ",*x1," ",*y1," ",*z1," ", "endpiont "*x2," ",*y2," ",*z2,*t1$,*t2$,"skip_dis",*skip_dis,"skip_distance",*skip_distance,")",e$ # only For debug
ptnearx$ = prv_xabs # near point
ptneary$ = prv_yabs
x1 = prv_xabs # line start point one
y1 = prv_yabs
z1 = zabs
x2 = xabs # line end point two
y2 = yabs
z2 = zabs
xcenter = xabs # findinter
ycenter = yabs
radius = min_distance
start = 0
arcsweep = 360
int1x = xla(x1,xcenter)