上面这个部分就是变量/常量定义,这些都属于自定义变量,所以要告诉系统,这些变量分别属于什么格式,格式指定正确,可以节省内存,加快程序运行效率,另外,也不会出错。说到这里,稍有编程基础的人就知道变量定义的重要性,例如一个数字2356,如果要用文本方式存储(无限制,一个数字一个字节),需要占用4个字节,而用短整数方式存储(最大65535),只需要占用2个字节,而用长整方式存储(最大4294967295),需要4个字节。
象还有些User_2的变量,就是我们在Def中讲到的,大家可以去看看这些变量的格式。
INTERACTION (USER_1) \ 100 ;
INTERACTION (TOOL) \0 ;
INTERACTION (USER_1) \00 ;
INTERACTION (CHARACTER) \\
INTERACTION (SEQUENCING) \0 ;
INTERACTION (SEQUENCING) \0 ;
INTERACTION (CHARACTER) \\
INTERACTION (USER_1) \00 ;
上面的部分内容,就是一个交互区,这些是在Post前,接受的一些自定义内容,有些高手,把其中某项输入加以判断,分别输出不同的代码(如同时支持Fanuc,三菱,Sim802s的后处理),这一点,舜江侯兄玩得很精,可机会的话,可以请他再给大家加以详细解释。
这部分代码,每行有四个部分
INTERACTION (USER_1) \0 ;
其中INTERACTION(USER_1),这一部分,指示这是一个USER_1格式的交互操作,其中USER_1的格式在def中定义,而该项的操作对象(变量)是MainNum。 “MAIN-PROGRAM-NUMBER”,这一部分,是指示的在Cimatron软件中显示的文字内容或提示,记住,如果你的系统不支持中文,请不要在这里写下中文字符,特别是IT。E版支持中文的显示,没有问题。
MainNum,被操作的变量,也就是这里输出的数值或文本,将在确定后,传送到对应的变量MainNum中,在处理过程中,该项的值就是您输出的数值。 =100,默认值,该值在您输出后,会被改变。 最后不要忘记,一定要在行尾加上分号\。
所有字符,一定要输入半角英文,引号内的内容除外,切记!不过也有特殊的情
况,象X,Y,Z这一类的字符,是在引号内的,您也不可以输出全角字母,因为就算Cimatron编译通过了,机床也不会认XYZ(XYZ)这样的全角字符,和括号里的XYZ比较一下就知道有什么区别了。
下面,我们来做一些练习,学习交互区的操作。 练习一 汉化:
INTERACTION (USER_1) \主程序序号\INTERACTION (TOOL) \刀具补偿\INTERACTION (USER_1) \换刀子程序\INTERACTION (CHARACTER) \是否输出行号
INTERACTION (SEQUENCING) \行号起始值\
INTERACTION (SEQUENCING) \行号增量值\
INTERACTION (CHARACTER) \是否输出子程序\\
INTERACTION (USER_1) \子程序号\
然后编译,执行POST,看看有什么变化没有。以上操作,请在Cimatron E版或Cimatron IT中文版下进行。
此主题相关图片如下:
练习二
增加一个操作项。
INTERACTION (CHARACTER) \编程员\张\然后在BEGINNING OF TAPE:段中加入相应的内容,例如加在%号前面 *-----output
OUTPUT $ \编程员:\
IF_SET (FlagSeq _EQ_ YES )
OUTPUT \ ELSE
OUTPUT \ END_IF ;
在程序中,\\J是指输出一个换行符,如果不加换行符,那么后面的内就会直接
根上来,导致一行可能不被机床识别的代码。
这只是举的一个例子,实际中,用这个输出编程员的名字是不可以的,因为他只能识别两个字节(2个英文字母,1个中文汉字)的内容,大家试一下把Programmer =“张”改成“张三”便知。
另外要注意的一点是,所以的交互区用到的变量都不需要预先定义,因为在交互的时候,也就定义了变量。
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 ;
这一节是输出子程序和程序号,一般没必要的话,不要去改动他,程序行号在后面还有部分代码的,在后面我们会分别讲述。 可能有的朋友想默认不输出子程序,把
INTERACTION (CHARACTER) \是否输出子程序\\
后的\改成\就可以了。
在您的Program文件夹下,有一大堆chm文件,或者在Cimatron中按下F1也可以打开Help,IT是无效的哦! 因为是英文的,所以大家读起来可能会有一些困难,这时候要借助一些翻译软件来学习了,英文不好的朋友,不要气馁,慢慢地读。
Blocks and Their Variables
在这一节中,标明的是每个段及其能识别的变量,也就是说,这些段只能识别这些变量。例如:
在END OF PROC:这一段中,能识别的变量就是 N_FED_TIME、N_FST_TIME、N_GEN_TIME这三个,这就是为什么有些朋友在输出加工时间时,为什么想在程序头中输出而进行不了的原因,可以在反过来看看Beggin of proc这一节,是不支持这几个变量的。
在这一节下面,Formats for Variables也是非常有用的,这个列举出了所有的变量以及其使用的相关信息,大家以后在定制后处理的时候,要随时翻查这一内容。
Executable Block Statements
这一节中是关于程序流程控制的部分,也是非常有用的,大家先看,后面会一一细讲。
已经处理完了
〖第五课〗几个BEGINNING段
第一个段,BEGINNING OF TAPE: 在DEMO中,是这样的内容。 YES = 1 ; NO = 0 ;
Seq = SeqStart ;
YES,NO是两个自定义的变量,先来个赋值。赋值就是一个流程控制,也是一个最基本的语法,例如,Time = 0.001,Time=Time+N_GEN_TIME。第一个的意思是让Time的值为0.001,第二个的意思是指,把Time原有的值去加上N_GEN_TIME的值,然后把结果再赋给TIME。上面Seq=seqstart,其中SeqStart就是在交互区中曾经赋过值的。 FlagSeq = NO ; FlagSub = NO ;
还是赋值,NO已经被赋值为0了,那么现在FlagSeq和FlagSub都等于0。 IF_SET (NumYN _EQ_ \ IF_SET (NumYN _EQ_ \
开始判断,如果NumYN等于“Y”或\(因为他区分大小写,所以要写两句 ),那么FlagSeq的值就变成1。注意后面还要有END_IF。这时候,大家要参考一下GPP里的帮助了。“_EQ_”就是一个逻辑判断,判断前后两项的内容是否相等。IF_SET最标准的写法就是: IF_SET (条件)
满足条件执行的语句; ELSE
不满足条件执行的语句; END_IF;
IF_SET (Sub _EQ_ \ IF_SET (Sub _EQ_ \ SET_OFF NO_SUBROUT ; ELSE
SET_ON NO_SUBROUT ; END_IF ;
这里有一个SET_ON语句,看GPP中System Flags一节。 *-----Unit matrix (MUST be input in this order !!!)
OT_MAT1 = 1.0 ; ROT_MAT2 = 0.0 ; ROT_MAT3 = 0.0 ; ROT_MAT4 = 0.0 ; ROT_MAT5 = 1.0 ; ROT_MAT6 = 0.0 ; ROT_MAT7 = 0.0 ; ROT_MAT8 = 0.0 ; ROT_MAT9 = 1.0 ;