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 15:定义Buffer 2
sbufname2$   : ""
rc2          : 1
wc2          : 1
b2_size      : 0
str2         : ""
fbuf 2 1 255 0 16:利用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)
	
如代码存在问题,请跟帖留言,稍后将会更正相关错误代码。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删