Cimatron 后置处理技术(5)

2019-04-02 19:15

这一节是轴相关操作的,不用改。

*-----shift all data according to the MCHINE ZERO indicated by the * user in the POSTPR interaction TRANS_MATX = 0 - X_MACH ; TRANS_MATY = 0 - Y_MACH ; TRANS_MATZ = 0 - Z_MACH ;

*-----shift the HOME according to the MCHINE ZERO indicated by the * user in the POSTPR interaction Xhome = X_HOME - X_MACH ; Yhome = Y_HOME - Y_MACH ; Zhome = Z_HOME - Z_MACH ;

*-----tool location is HOME Xold = X_HOME ; Yold = Y_HOME ; Zold = Z_HOME ;

*-----For 1st ORIGIN CHANGE

FirstOriginChange = YES ;

MCH_FEED = 9999 ; 以上内容,通通略过。

IF_SET (FlagSeq _EQ_ YES )

OUTPUT \ ELSE

OUTPUT \ END_IF ;

如果FLAGSEQ这一项为1的话,输出%O100,否则输出% O100,%和O前面有空格的,下面还有一段解释是和这一节有点儿关系的,继续看。 *--For the first origin change

ORIGOLDI=0 ; ORIGOLDJ=0 ; ORIGOLDK=1 ; flagrotmac = no ;

========================================= 在BEGINNING OF TAPE: 前面,还有一段: NEW_LINE_IS $ ;

IF_SET (FlagSeq _EQ_ NO) OUTPUT \\J ; ELSE

IF_SET (FlagSub _EQ_ NO) OUTPUT \\J \ Seq = Seq + SeqIncr ;

ELSE

OUTPUT \\J \

SubSeq = SubSeq + SeqIncr ; END_IF ; END_IF ;

翻译如下:

新行属于字符串输出。 如果设定为不输出行号的话

在文件中输出一个换行符(\\J) 否则(就是指输出行号)

如果不输出子程序(又一个子判断语句,嵌套)

那么,先换行,输出一个N,再输出Seq的内容(就是行号) 把Seq加上增量值,以便下一次调用。 否则

输出换行,输出N,输出SubSeq子程序号。 SubSeq加上增量值,以便下一次调用。 结束判断 结束判断

BEGINNING OF PROC:

KEEP PROC_NAME ;

SET_ON MCH_COOL ; FlagSub = NO ;

SubSeq = SeqStart ;

这一节显得简单得多。KEEP的作用是保持,但是保持了有什么用我也是不太清楚,所以呢,这一节原有内容大家不要动他好了。 下面会根据需要,再增加几项输出的。 输出的格式

Output 变量 常量;

Output后面可以有任何有效的变量或常量,包括$及\\J,如果用Output $就可以不用\\J了。 如:

Output $ \和Output \\J \是等效的。

变量也变量之间,要用空格格开,常量与变量之间,可以不用格开。但是常量这里一般指的是“ ”方式的字符串,其它的输出内容,暂时还没有去研究他。 还可以这样写。

Output \\J \注意,这只是一个范例而已,并不表示他在这一节能生效。

BEGINNING OF TOOLPATH

这一节DEMO中半没有用到,只有在一次POST多个PROC或多个TP的时候才有作用。

这里没必要就不再详述了,如果你需要输出TPNAME,可以这样写:

BEGINNING OF TOOLPATH:

OUTPUT \\J \

Output后面可以有任何有效的变量或常量,包括$及\\J,如果用Output $就可以不用\\J了。 如:

Output $ \和Output \\J \是等效的

这话我补充一下 $和\\J是有区别的

$是一个段变量,它是NEW_LINE_IS段的简化替代,它可以代表一组指令,比如 NEW_LINE_IS $ ;

IF_SET (FlagSeq _EQ_ NO) OUTPUT \\J ; ELSE

IF_SET (FlagSub _EQ_ NO) OUTPUT \\J \ Seq = Seq + SeqIncr ; ELSE

OUTPUT \\J \

SubSeq = SubSeq + SeqIncr ; END_IF ; END_IF ;

$就简化表示了 IF_SET 到END_IF之间的指令段 而\\J是代表G代码的行回车符,

只有当FlagSeq为NO时(上面的指令段),$和\\J会等效,但它们是不等价的

我在搞一个多文件输出的后处理时发现,\\J不仅代表G代码的行回车符,还代表

G代码文件的结束符,比如DEMO中对G代码文件的结束表示如下 END OF FILE:

IF_SET (FlagSeq _EQ_ YES ) OUTPUT \\J \ ELSE

OUTPUT \\J \ END_IF ;

如果启动了分割文件机制,那么上面指令段中的%是不会出现在前一个文件的结尾,它会出现在后一个文件的开头,这会导致后一个文件的开头有两个 % 因此,为防止此BUG,代码改为如下 END OF FILE:

IF_SET (FlagSeq _EQ_ YES ) OUTPUT \\J \ ELSE

OUTPUT \\J \ END_IF ;

当开启行号时:OUTPUT \\J 不产生行号,而OUTPUT $ 则产生行号。

整园等分四段输出的方法

我也来凑凑热闹,出个题:即将整园等分成四段输出的方法,先提示一下供大家参考.相信当你熟悉了该算法后,可举一反三,不管是G91还是G90输出方式,均可方便实现,先来看看与园相关的变量,见图:

此主题相关图片如下:

我们先来计算各等分点相对于园心的坐标,即相对坐标,见上图: 起点X4=Xold-X_CENTER,Y4=Yold-Y_CENTER;

根据分析,不考虑正负时的相对值X4=Y1=X2=Y3,Y4=X1=Y2=X3;(初中的知识,请不要问我原因哦!)

而且我们知道I=园心X坐标-起点X坐标,J=园心Y坐标-起点Y坐标; 居此可推导出各点的X,Y绝对值以及I,J的坐标公式; X4=Xold; Y4=Yold;(此处Xold=X_ENDPT,Yold=Y_ENDPT)

X1=X_CENTER-Yold+Y_CENTER; Y1=Y_CENTER+Xold-X_CENTER;I2=X_CENTER-X4; J2=Y_CENTER-Y4;

X2=2*X_CENTER-Xold; Y2=2*Y_CENTER-Yold; I3=X_CENTER-X1; J3=Y_CENTER-Y1;

X3=X_CENTER+Yold-Y_CENTER ; Y3=Y_CENTER-Xold+X_CENTER ;I4=X_CENTER-X2;J4=Y_CENTER-Y2;

I1=X_CENTER-X3;J1=Y_CENTER-Y3;

当ARC_ANG _EQ_ 360.0时输出(即逆时针G03时): OUTPUT $ ;

IF_SET (CIRC_MOV) OUTPUT \\CIRC_MOV ; END_IF ; OUTPUT \X\X1 \Y\Y1 \I\I2 \J\J2 ; .... ...... ..... ......

OUTPUT $ \X\X4 \Y\Y4 \I\I1 \J\J1 ; 当ARC_ANG _EQ_ -360.0时输出(即顺时针G02时): OUTPUT $ ;

IF_SET (CIRC_MOV) OUTPUT \\CIRC_MOV ; END_IF ; OUTPUT \X\X3 \Y\Y3 \I\I2 \J\J2 ;


Cimatron 后置处理技术(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江大学2015年硕士招生目录(专业学位)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: