在 Mastercam 的后处理开发中,控制 NC 文件的输出位置一直是很多编程员和机床管理者非常关心的问题。特别是在多版本、多机床、多人协作的车间环境里,如果所有程序都默认扔进同一个文件夹,不仅查找麻烦,还容易因为重名覆盖导致严重事故。
本文将围绕“如何让 Mastercam 后处理把程序输出到指定目录”这个问题,从旧版本的局限、传统解决方案的缺陷,到 Mastercam 2017 之后的新思路,再到可直接落地的完整代码示例,做一次系统性讲解。
在 Mastercam 2017 及更早版本中,后处理本身并没有提供“直接指定输出目录”的原生能力。换句话说,后处理只能把 NC 文件写到系统默认路径,或者由用户在“另存为”对话框里手动选择。
为了突破这个限制,业内通常只能用三种间接方法:
原理:后处理生成一个 .bat文件,用批处理命令移动或复制 NC 文件。 从 Mastercam 2017 开始,后处理新增了对 directory函数的支持,终于可以直接对文件夹进行操作,不再依赖外部脚本或程序。
虽然 Mastercam 没有直接提供“复制 / 移动 NC 程序”的函数,但我们可以通过 Buffer(缓冲区) 间接实现:
[POST_VERSION] #DO NOT MOVE OR ALTER THIS LINE#
V24.00 P0 E1 W24.00 T1614093555 M24.00 I0 O1
scncpost_revision := "22.81"
scustpost_revision := "0"return : 0
spath_old : ""
spath : ""
spath_new : ""
sextnc$ : ".nc"pheader$
spath = smcpath$ + snamenc$
spath_old = spathnc$ + snamenc$ + sextnc$
return = directory(2, spath)
if return = 0, return = directory(1, spath)
"G01 X0.", e$
"2022-05-01", e$
"2022-05-01", e$说明: directory(2,...)判断文件夹是否存在 directory(1,...)新建文件夹
sbufname1$ : ""
rc1 : 1
wc1 : 1
b1_size : 0
str1 : ""
fbuf 1 1 255 0 1sbufname2$ : ""
rc2 : 1
wc2 : 1
b2_size : 0
str2 : ""
fbuf 2 1 255 0 1ppost$
return = fclose(spath_old)
sbufname1$ = spathnc$ + snamenc$ + sextnc$
sbufname2$ = smcpath$ + "\" + snamenc$ + "\" + snamenc$ + sextnc$
spath_new = smcpath$ + "\" + snamenc$ + "\" + snamenc$ + sextnc$
if fexist(sbufname2$), return = remove(sbufname2$)
if fexist(spath_new), return = remove(spath_new)
b1_size = rbuf(1,0)
rc1 = 1
rc2 = 1
while rc1 <= b1_size,
[
str2 = rbuf(1,rc1)
str2 = wbuf(2,rc2)
]
return = fclose(2)
if fexist(spath_old), return = remove(spath_old)
从 Mastercam 2017 开始,directory+ Buffer 的组合,让“输出 NC 程序到指定目录”从一件麻烦事变成了标准化操作。相比早期的三种间接方法,新方法更安全、更简单,也更利于长期维护。
如果你还在用老版本方案,强烈建议尽快升级到新思路,不仅能减少出错,还能显著提升车间程序管理的效率。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。