Mastercam后处理输出程序到指定目录,在Mastercam2017之前是无法直接做到的,如果要达到这个目的,有3个间接的方法:
方法1:通过后处理调用控制台程序。
方法2:通过后处理调用VBScript脚本。
方法3:通过Bat批处理。
方法1需要开发者对控制台程序有一定的开发基础,同时还需要熟悉后处理传递数据到控制台。
方法2和方法3测需要利用Buffer来完成,都是用过vbs来实现。
现在我们可以直接利用directory函数创建文件夹。这个直接的方法相对于上面间接的方法有如下优点:
1:可以直接对文件夹进行操作,如删除,新建,判断是否存在。
2:不会因为文件不存在而出现未知错误。
3:可以直接对已经存在的文件夹进行操作。
Mastercam没有直接复制,移动NC程序的函数,想要直接把当前的NC输出到指定的目录,这个需要借助Buffer来实现。但相对非常简单。
以下代码为实现当前输出的NC程序至图档目录下以NC名为名的文件夹下面。
1:定义后处理头数据。
[POST_VERSION] #DO NOT MOVE OR ALTER THIS LINE# V24.00 P0 E1 W24.00 T1614093555 M24.00 I0 O1
scncpost_revision := "22.81" # Internal revision number for use by CNC Software only. Please do not change this number.
scustpost_revision := "0" # Revision number for use by Resellers or customers.
2:定义原始路径,新的路径及后缀名。
return : 0
spath_old : ""
spath : ""
spath_new : ""
sextnc$ : ".nc"
3:判断文件夹是否存在,并向NC文件里面写入一些数据。
pheader$
spath = smcpath$ + snamenc$
spath_old = spathnc$+ snamenc$ + sextnc$
return = directory(2, spath)
if return = 0, return = directory(1, spath)
"G01X0.", e$
"2022-05-01", e$
"2022-05-01", e$
4:定义buffer 1。
sbufname1$ : ""
rc1 : 1
wc1 : 1
b1_size : 0
str1 : ""
fbuf 1 1 255 0 1
5:定义Buffer 2
sbufname2$ : ""
rc2 : 1
wc2 : 1
b2_size : 0
str2 : ""
fbuf 2 1 255 0 1
6:利用buffer读取原始NC程序内容,并通过buffer输出到新的位置。
ppost$
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)
如代码存在问题,请跟帖留言,稍后将会更正相关错误代码。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删