做 Mastercam 后处理时,想在 NC 代码里把操作的加工预留量(Stock to Leave)打出来,老手都知道不能只靠当前行读取,必须用预读(Look Ahead)的方式。
这是因为 Mastercam 在执行当前刀路时,预留量参数还没完全写入系统变量。常规做法是在 psof$或 ptlchg$里,用 prm函数提前调取操作参数。比如通过 prm(1010)或 prm(1011)这类系统参数号,把 XY 和 Z 方向的预留量先抓出来,存到自定义变量里。
拿到值后,再用 fmt定义好输出格式,在程序头或者注释行里打印出来。这样不仅避免了数据丢失,还能让操作工一眼看清这道工序留了多少余量,方便后续精加工对刀,也减少了口头沟通出错的概率。
pparameter$ # Run parameter table
if prmcode$ = 10010, stock = rpar(sparameter$,1)
if prmcode$ = 10068, stock1 = rpar(sparameter$,1)
if prmcode$ = 12068, stock2 = rpar(sparameter$,1)
pwrttparam$ #Information from parameters
if prmcode$ = 10010, stock = rpar(sparameter$,1)
if prmcode$ = 10068, stock1 = rpar(sparameter$,1)
if prmcode$ = 12068, stock2 = rpar(sparameter$,1)
以上方法在正常情况下(正常情况是指2D,一般3D操作)都可以获得正确的数据,但对于高版本(高版本一般指Mastercam2017及之后的版本)中新增加的如高速刀路,5轴刀路等都不能获取到加工预留量,Mastercam高版本针对这一情况对后处理内置参数进行了相应的升级,现在可以实现低版本中无法实现的能力。
预留量查询函数
stockinfo()
用于3D高速刀路界面里获取驱动面,干涉面信息,一般用于获取侧面,底面的加工余量,如下图:

string = stockinfo(n,x,y)
string—记录查询结果.
n—The function state:
0 = 按行查询驱动面
1 = 按行查询干涉面.
2 = 按名称查询驱动面.
3 = 按名称查询干涉面.
x=需要查询的操作ID号,一般查询当前操作的驱动面,干涉面。
y=行号或名称,如采用行号查询,必须以0开始。
以下为原始说明

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。