|
发表于 2017-5-30 23:35:13
|
显示全部楼层
punclamp #Unclamp the rotary axis
if use_clamp,
[
#Force both rotaries to unlock if multi-axis
if cuttype <> zero & opcode$ <> three & opcode$ <> 16 & (p_lock = one | s_lock = one),
[
p_lock = zero, s_lock = zero
pbld, n$, *s_slock, e$
pbld, n$, *s_plock, e$
]
else, #Unlock the rotary axis if it is locked and moving
[
if p_inc, p_lock = zero
if s_inc, s_lock = zero
pbld, n$, s_slock, e$
pbld, n$, s_plock, e$
]
]
pclamp #Clamp the rotary axis
if use_clamp & (cuttype = zero | opcode$ = three | opcode$ = 16),
[
if p_inc, p_lock = one
if s_inc, s_lock = one
pbld, n$, s_slock, e$
pbld, n$, s_plock, e$
]
pbld #Canned text - block delete
if bld, '/'
pccdia #Cutter Compensation
#Force Dxx#
sav_cc_pos = cc_pos$
if cc_pos$ & pln_2_rev, cc_out = abs(cc_pos$ - three)
else, cc_out = cc_pos$
if prv_cc_out <> cc_out & cc_out, result = force(tloffno$,tloffno$)
sccomp
if cc_out, tloffno$
cc_pos$ = sav_cc_pos
!cc_pos$ # 01/26/04
pscool #Coolant output
scoolant #Old style coolant - based on NCI variable "coolant$"
pcan1_cool #X style coolant - based on Canned Text coolant
psign_ang_out #Signed angle output modification
if pang_output,
[
sv_p_abs = p_abs
ppsign_ang
if p_inc, result = force(p_out,p_out)
else, !p_out
]
if sang_output,
[
sv_s_abs = s_abs
pssign_ang
if s_inc, result = force(s_out,s_out)
else, !s_out
]
psign_ang_res #Restore p_abs with signed angle output
if pang_output, p_abs = sv_p_abs
if sang_output, s_abs = sv_s_abs
parc_setup #Force the arc position output
if pln_2_rev, gcode$ = abs(gcode$ - five)
parcijk #Select the arc output
if arcoutput$ = zero | full_arc_flg$,
[
#Arc output for IJK
iout, jout, kout
!i$, !j$, !k$
]
else,
[
#Arc output for R
if abs(sweep$)<=arc180 | arcoutput$=one, result = nwadrs(srad, arcrad$)
else, result = nwadrs(srminus, arcrad$)
*arcrad$
]
p_nobrk_emul #'nobrk' emulation option
if abs(zinc)<brk_tol | not(abs(xinc)>brk_tol | abs(yinc)>brk_tol)
| not(mtype = zero | mtype = three),
[
if cuttype = zero, ppos_cax_lin #Toolplane rotary positioning
prapidout
]
else,
[
nobrk_xa = vequ(xabs)
nobrk_xi = vequ(xinc)
nobrk_pa = vequ(p_abs)
nobrk_pi = vequ(p_inc)
#Z up, move Z, XY, PRI, SEC
if zinc > zero,
[
#Kill X, Y, PRI, SEC
xabs = prv_xabs
yabs = prv_yabs
xinc = zero
yinc = zero
p_abs = prv_p_abs
s_abs = prv_s_abs
p_inc = zero
s_inc = zero
psign_ang_out #jphjph need p_dlt_ang, s_dlt_ang
prapidout
#Enable X, Y
xabs = vequ(nobrk_xa)
xinc = vequ(nobrk_xi)
prapidout
#Enable PRI, SEC
p_abs = vequ(nobrk_pa)
p_inc = vequ(nobrk_pi)
ppos_cax_lin
]
#Z down, move PRI, SEC, XY, Z
else,
[
#ppos_cax_lin handles rotation
ppos_cax_lin
#Kill Z
zabs = prv_zabs
zinc = zero
prapidout
#Enable Z
xabs = vequ(nobrk_xa)
xinc = vequ(nobrk_xi)
prapidout
]
]
##### Stop custom changes #####
|
|