Mastercam后处理程序头输出加工时间--纯代码版方法。
此方法由官方提供,其原理利用了mill.set文件及buffer的方式来实现。
实现的原理及过程如下:
首先利用后处理调用mp.dll及mill.set,获取加工时间,并把加工时间保存为doc文件。
其次正常后处理程序,并向后处理中写入一个标志字符串。
最后再后处理运行结束前利用buffer重读nc文件,并搜索标志字符串。
1:定义各项数据
代码块
JavaScript
# Define strings used in building up the command line parameters for the DLL call
sspace : " " # SPACE character
ssq : "'" # Single Quote character
sdq : '"' # Double Quote character
sdoc : ".doc" # .doc extension
spath_in : "" # Will be the "path\name" of the NCI input file
spath_out : "" # Will be the "path\name" of the DOC output file
sparams : "" # Will be the command parameter line passed to the DLL
复制成功
2:定义mp.dll文件路径,此路径可用绝对路径,也可用相对路径
代码块
JavaScript
sdll : "D:\Program Files\Mastercam 2022\Mastercam\apps\MP.dll"
复制成功
3:定义mill.set文件路径,此路径可用绝对路径,也可用相对路径
代码块
JavaScript
s_setfile : "C:\Users\Public\Documents\Shared Mastercam 2022\mill\Posts\Mill.set"
复制成功
4:定义保存时间数据的函数
代码块
JavaScript
# Define strings used to read cycle time from .set
set_time : ""
scycle_time : ""
scycle_time_out : "(cycle_time_here)"
loc_found : 0
复制成功
5:定义buff1数据
代码块
JavaScript
# --------------------------------------------------------------------------
#Buffer 1, Doc file created by setup sheet
wc1 : 1 #Buffer 1 write counter
rc1 : 1 #Buffer 1 read counter
size1 : 0 #Buffer1size
string1 : "" #Buffer 1
fbuf 1 0 256 1 1 #Buffer 1
复制成功
6:定义buff2数据
代码块
JavaScript
#Buffer 2, NC file after posting
wc2 : 1 #Buffer 2 write counter
rc2 : 1 #Buffer 2 read counter
size2 : 0 #Buffer2size
string2 : "" #Buffer 2
fbuf 2 1 256 1 1 #Buffer 2
复制成功
7:在ppost$下完成整个加工时的获取,输出,回写到程序中
代码块
JavaScript
ppost$ # This posblock is call AFTER all the files from the PST run are closed!
spath_in = spathnci$ + snamenci$ + sextnci$
spath_out = spathnc$ + snamenc$ + sdoc
sparams=ssq+sdq+spath_in+sdq+sspace+sdq+s_setfile+sdq+sspace+sdq+spath_out+sdq+ssq
result = dll(sdll, sparams)
sbufname1$ = spath_out
size1 = rbuf(one, zero)
rc1 = size1
set_time = rbuf(one, rc1)
end_str_ix$ = zero
if end_str_ix$ = zero, result = strstr(":", set_time)
if end_str_ix$ = zero, result = strstr("=", set_time)
scycle_time = brksps(end_str_ix$, set_time)
sbufname2$ = spathnc$ + snamenc$ + sextnc$
while loc_found = zero,
[
string2 = rbuf(two, rc2)
if string2 = scycle_time_out,
[
wc2 = rc2 - one
scycle_time = sopen_prn + "CYCLE TIME =" + scycle_time + sclose_prn
scycle_time = wbuf(two, wc2)
loc_found = one
]
]
复制成功
8:在任何需要输出加工时间的位置处调用时间标志,如下。
代码块
JavaScript
psof$
*cycle_time_out, e$
复制成功
至此,后处理修改结束,NC程序头会自动输出程序的总时间,至于时间是否准确,这个还需要根据实际情况,如增加换刀时间,考虑圆弧减速等

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删