iCAx开思网

标题: 关于完美后处理实现的探讨 [打印本页]

作者: pogua007    时间: 2007-1-29 00:33
标题: 关于完美后处理实现的探讨
诸葛版主有一个加分体题,要求后处理的nc能显示出:

1:加工方案(在comment加注)

2:用jop setup后能显示加工材料的大小

3:公差

4:余量(不够完善,用同一把刀做其它加工方案联在一起后处理时能显示出第二 .三个加工余量!)

6:刀具长度.  刀具直径(已解决). 刀具的R(已解决).  刀具角度(用锥度刀加工时)让操作员一目了然。

除了显示锥度铣刀的锥度之外,版主的其他设想,我可以实现,但是刀具路径类型、范围和理论加工时间必须加在每个刀路之中,无法全部显示在程序的开头部分,显示在程序中间显然很难阅读,意义不是很大,这样的后处理,我明天就可以给改好,如果一定要显示在程序开头部分,也不是完全的不可能,但是很难。实际是使用我汉化的那个加工报表+简洁后处理是一个非常好的办法。如果全在NC程序中,就是程序可以生成那些东西,在机床上去阅读也是很麻烦的,NC文件本来就是给机器读的,顶多加上如刀具直径,刀角半径就够了(我是直接加在程序开始符号“%”之后的,在宝元系统的机器上可以直接显示在文件列表中),可惜无法获得锥刀的锥度。
给操机人读还是读加工报表吧,我汉化修改的加工报表功能已经不错了,显示机床名,刀具名称、直径半径、进给、转速,刀具路径类型、余量、误差、步进、程序编号(这个功能很有用可以把加工报表和程序名联系起来)、路径范围、理论加工时间,还有建议夹持长度,还有总的统计。打印出来慢慢看,多舒服~~~。
刀具路径类型、余量、误差、步进、路径范围、理论加工时间这些东西在后处理运算的时候属于变量,必须生成每个刀路的时候才可以生成,所以一般的方法无法实现在程序开头运算的时候写出。可以在程序开始的时候空运算一次所有刀路,即不写出程序的主体内容,只写出我们如上所述的注解,然后再运算一次所有刀路写出主体内容。非常垃圾的方法,不论可否实现,额外的运算少不了的,而且如果搞的变量出错,程序也要出错。虽然我肯定不会把会出错的后处理发上来的,但是我到底不是写mastercam的,如果有什么未知bug,而且工件的加工大都是不可逆的,国家的现代化建设用的机械,中国的未来领先世界的机床,还有宇宙飞船可能就是因为……(路人甲:太看的起自己了吧,我扁)汗!残念.....(我靠!这方法何止是垃圾简直是太变态了,我要软件公司老板,我的职员写出这样的程序,我非把他开除不可)。还有大多数的机床都不允许程序中出现中文的,使用英文又增加了阅读的难度。(路人甲:控制系统调用汉字模块WT。俺:我砍,还要我去给控制系统打补丁啊,我砍、砍、砍,报仇了)

锥度铣刀的锥度,具我研究好象只在算刀路生成NCI时候的刀具补正中出现,在nci文件中不存储,所以后处理的时候,无论是生成加工报表还是NC程序都无法获得锥刀锥度,不知道还有没有大虾知道锥刀锥度的获得方法,写程序加外挂就拉倒吧,俺不跟你玩了。
作者: voip    时间: 2007-1-29 13:32
能否给分我,谢谢。
020yi@163.com
作者: boy9981    时间: 2007-2-7 14:42
原帖由 pogua007 于 2007-1-29 00:33 发表
诸葛版主有一个加分体题,要求后处理的nc能显示出:

1:加工方案(在comment加注)

2:用jop setup后能显示加工材料的大小

3:公差

4:余量(不够完善,用同一把刀做其它加工方案联在一起后处理时能显示出第二 .三个加工余量!)

6:刀具长度.  刀具直径(已解决). 刀具的R(已解决).  刀具角度(用锥度刀加工时)让操作员一目了然。

除了显示锥度铣刀的锥度之外,版主的其他设想,我可以实现,但是刀具路径类型、范围和理论加工时间必须加在每个刀路之中,无法全部显示在程序的开头部分,显示在程序中间显然很难阅读,意义不是很大,这样的后处理,我明天就可以给改好,如果一定要显示在程序开头部分,也不是完全的不可能,但是很难。实际是使用我汉化的那个加工报表+简洁后处理是一个非常好的办法。如果全在NC程序中,就是程序可以生成那些东西,在机床上去阅读也是很麻烦的,NC文件本来就是给机器读的,顶多加上如刀具直径,刀角半径就够了(我是直接加在程序开始符号“%”之后的,在宝元系统的机器上可以直接显示在文件列表中),可惜无法获得锥刀的锥度。
给操机人读还是读加工报表吧,我汉化修改的加工报表功能已经不错了,显示机床名,刀具名称、直径半径、进给、转速,刀具路径类型、余量、误差、步进、程序编号(这个功能很有用可以把加工报表和程序名联系起来)、路径范围、理论加工时间,还有建议夹持长度,还有总的统计。打印出来慢慢看,多舒服~~~。
刀具路径类型、余量、误差、步进、路径范围、理论加工时间这些东西在后处理运算的时候属于变量,必须生成每个刀路的时候才可以生成,所以一般的方法无法实现在程序开头运算的时候写出。可以在程序开始的时候空运算一次所有刀路,即不写出程序的主体内容,只写出我们如上所述的注解,然后再运算一次所有刀路写出主体内容。非常垃圾的方法,不论可否实现,额外的运算少不了的,而且如果搞的变量出错,程序也要出错。虽然我肯定不会把会出错的后处理发上来的,但是我到底不是写mastercam的,如果有什么未知bug,而且工件的加工大都是不可逆的,国家的现代化建设用的机械,中国的未来领先世界的机床,还有宇宙飞船可能就是因为……(路人甲:太看的起自己了吧,我扁)汗!残念.....(我靠!这方法何止是垃圾简直是太变态了,我要软件公司老板,我的职员写出这样的程序,我非把他开除不可)。还有大多数的机床都不允许程序中出现中文的,使用英文又增加了阅读的难度。(路人甲:控制系统调用汉字模块WT。俺:我砍,还要我去给控制系统打补丁啊,我砍、砍、砍,报仇了)

锥度铣刀的锥度,具我研究好象只在算刀路生成NCI时候的刀具补正中出现,在nci文件中不存储,所以后处理的时候,无论是生成加工报表还是NC程序都无法获得锥刀锥度,不知道还有没有大虾知道锥刀锥度的获得方法,写程序加外挂就拉倒吧,俺不跟你玩了。  


锥度铣刀的锥度在NCI中是有的,其变量代码是10092


目前网上流行的有刀具路径XY的最大外围、余量、最深Z点、刀具名称、加工方式现实的后处理,都是采用抓NCI里的变量代码来实现的。
作者: pogua007    时间: 2007-2-9 03:14
谢谢,我找到了,变量名为tl_tip_angle
作者: boy9981    时间: 2007-2-9 08:58
10092

tip_angle

现在我知道通过以上两个变量可以获得斜度刀的锥度单遍度数。

tip_angle_ch  = tip_angle * 2

--------------------------------------------------------------------------
         要在程式里输出以上并不难,我现在想的问题是:能不能判断刀具?如果是斜度刀,则有斜度刀的度数输出,反之则没有。
         如同 带R的刀具一样,有R则输出,如果刀具不带R,则不会输出 R=0.0 这样的数值。

         以上是基于自动换刀环境而想的。
作者: boy9981    时间: 2007-2-9 09:02
还有:用jop setup后能显示加工材料的大小

其变量值是: stck_ht
                         stck_wdth
                         stck_thck
                        

对应 NCI 值 1020

[ 本帖最后由 boy9981 于 2007-2-12 09:20 编辑 ]
作者: pogua007    时间: 2007-2-9 21:56
判断的方法比较简单,平刀的锥度为180,所以使用if tl_tip_angle < 180,就可以判断了啊,还有我弱弱的问一句,什么是jop setup。
判断素材是否已经设定的判断方法为if stck_ht$ > 0 & stck_wdth$ > 0 & stck_thck$ > 0,不过只可以使用数值设定的素材,实体素材没有用。不知道车床NCI中的素材怎么存储,变量有没有可通用的,还有大侠啊,你的资料是在哪找的,我怎么找不到啊。

[ 本帖最后由 pogua007 于 2007-2-9 22:01 编辑 ]
作者: boy9981    时间: 2007-2-10 09:01
原帖由 pogua007 于 2007-2-9 21:56 发表
判断的方法比较简单,平刀的锥度为180,所以使用if tl_tip_angle < 180,就可以判断了啊,还有我弱弱的问一句,什么是jop setup。
判断素材是否已经设定的判断方法为if stck_ht$ > 0 & stck_wdth$ > 0 & stck_thck$ > 0,不过只可以使用数值设定的素材,实体素材没有用。不知道车床NCI中的素材怎么存储,变量有没有可通用的,还有大侠啊,你的资料是在哪找的,我怎么找不到啊。


以上问题都以解决了。
判断确实不难,我设得是同时判断刀具有无 R 、是否为斜度刀。其实我这里是不用斜度平底刀的。   以后可能考虑斜度球刀来做精锣。
我没有用 if tl_tip_angle < 180 的语句,用的是  if tip_angle = 180 的
如:是16mm平底刀则         则输出: D=16.00mm
如:是16 R0.8 的园鼻刀     则输出: D=16.00mm  |    R=0.80
如:是R6球刀                      则输出: D=12.00mm   |    R=6.00
如:是10mm(小头数)单边3度的斜度刀, 无R   则输出: D=10.00mm   |  T_A(自设的)=3.00
如:是10mm(小头数)单边3度的斜度刀, R=某某数值   则输出: D=10.00mm   | R=某某数值 |  T_A(自设的)=3.00

jop setup ,在Mastercam其快捷键为 Alt +J
设定之后实体模拟是按妮设得材料大小和中心点来模拟的。
诸葛版主的的意思应该就是让操机的通过这个程式的看到材料大小尺寸是多少吧。
该语句不需要判断。

在适当的时候(修改得更完美点),我会放出修改后得后处理的。

CNC车床我没有用过自动编程的,没有去时刻研究。
其变量值肯定与洗床功能不同的。
要查看其在NCI的代码,方法如下:
你可以设定某个有小数点的素材,如 50.123 ,再把程式处理为NCI ,编辑,查找 50.123
前面的四位数就是变量代码。

[ 本帖最后由 boy9981 于 2007-2-10 09:11 编辑 ]
作者: ja8250    时间: 2007-2-10 09:22
高人呀.能否看看!
作者: boy9981    时间: 2007-2-15 14:26
原帖由 pogua007 于 2007-2-9 03:14 发表
谢谢,我找到了,变量名为tl_tip_angle



这个变量 tl_tip_angle 单独能使用吗?


作者: pogua007    时间: 2007-2-15 23:18
不能单独使用,tl_tip_angle属于定义变量,在加工报表中是默认定义的。如果在后处理中使用,要自己定义。你和说是10092,是错的,是20004组16项中一项。
调用方法为:if prmcode$ = 20004, tl_number(刀号,20004组中的第一个,名称调用的时候定义) = rpar(sparameter$, 16),调用之后,需要定义格式,要把16个都定义了。
fmt     2   tl_number
fmt     3   ……
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   tl_tip_angle #第九个是锥刀锥度了,
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     3   ……
fmt     3   ……
这个方法是我自己研究出来的,没有时间去试验,如果有问题,我们再继续研究。

[ 本帖最后由 pogua007 于 2007-2-15 23:20 编辑 ]
作者: boy9981    时间: 2007-2-16 08:59
不是讲在加工报表里怎么使用,其实加工报表里已经有类似你上面的定义了。

我是说在后处理里面,你那个变量能不能单独使用?同时包括能不能正确认识刀的斜度,还有如果刀具没有斜度怎么办。

还有,tl_tip_angle 这个变量是加工报表里取的,20004这个NCI代码里不是单纯的抓斜度刀的斜度。

我说的 tip_angle 和 10092  是没有错误的。

10092 只抓斜度刀的角度。

[ 本帖最后由 boy9981 于 2007-2-16 09:09 编辑 ]
作者: xdlight    时间: 2007-2-16 10:43
有那位大侠能传一些后处理的资料给我啊!谢谢了啊!xu-dong@polygon-gp.com
作者: pogua007    时间: 2007-2-16 20:04
当然不可以,tl_tip_angle不是pre-defined variable,名字是自己起的。
在后处理里面也要定义,定义的方法就是上面我说的。从调用到显示,步骤有四个,因为MP语言的特殊性,四个步骤不需要前后顺序,为了逻辑方便,所以我采用了先后顺序。
一、
if prmcode$ = 20004, tl_number = rpar(sparameter$, 16),#调用NC中的20004项目中的16个值。
二、
定义16个值的格式,同时命名16个值。
mt     2   tl_number
fmt     3   ……
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   tl_tip_angle #第九个是锥刀锥度了,
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     3   ……
fmt     3   ……
三、
为显示刀具锥度建立一个操作,操作包含如下部分:
定义一个变量,并赋予默认值。
定义变量的显示格式。(最好和其他的format放在一起)
判断什么样的刀。如果为锥度铣刀则要使变量=2倍tl_tip_angle。如果是其他钻头类的锥度刀,则变量=tl_tip_angle。
判断是否显示,如果变量<>180,则*变量。
四、
在要显示的地方调用第三个所建立的操作。
我马上发布一个可显示刀锥度的后处理,你可以下载下来研究一下。
作者: mcam_taiwan    时间: 2007-2-21 00:13
看我的加工報表吧~

https://www.mcam.com.tw/alan/SETUPSHEET3.htm

https://www.mcam.com.tw/alan/SETUPSHEET3-table.htm
作者: boy9981    时间: 2007-2-21 08:16
原帖由 mcam_taiwan 于 2007-2-21 00:13 发表
看我的加工報表吧~

https://www.mcam.com.tw/alan/SETUPSHEET3.htm

https://www.mcam.com.tw/alan/SETUPSHEET3-table.htm




很不错,

请问 9 版本怎样才能支持中文?

谢谢。
作者: boy9981    时间: 2007-2-21 08:38
原帖由 pogua007 于 2007-2-16 20:04 发表
当然不可以,tl_tip_angle不是pre-defined variable,名字是自己起的。
在后处理里面也要定义,定义的方法就是上面我说的。从调用到显示,步骤有四个,因为MP语言的特殊性,四个步骤不需要前后顺序,为了逻辑方便,所以我采用了先后顺序。
一、
if prmcode$ = 20004, tl_number = rpar(sparameter$, 16),#调用NC中的20004项目中的16个值。
二、
定义16个值的格式,同时命名16个值。
mt     2   tl_number
fmt     3   ……
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   tl_tip_angle #第九个是锥刀锥度了,
fmt     3   ……
fmt     3   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     2   ……
fmt     3   ……
fmt     3   ……
三、
为显示刀具锥度建立一个操作,操作包含如下部分:
定义一个变量,并赋予默认值。
定义变量的显示格式。(最好和其他的format放在一起)
判断什么样的刀。如果为锥度铣刀则要使变量=2倍tl_tip_angle。如果是其他钻头类的锥度刀,则变量=tl_tip_angle。
判断是否显示,如果变量<>180,则*变量。
四、
在要显示的地方调用第三个所建立的操作。
我马上发布一个可显示刀锥度的后处理,你可以下载下来研究一下。


tl_tip_angle 这个变量在加工报表里已有,且其 MP 版本是支持这个变量的。
我觉得你自定义的变量太多了。

有了 我说的 tip_angle 和 10092   (我用的是 9 版本)
斜度刀单边锥度是用这 3 句来定义的:

fmt "A="            2      tip_angle   #那个红色的 2 可以定义其它值
  
if prmcode  =10092,  tip_angle = rpar(sparameter, 1)

*tip_angle,         # 放在你要输出的位置

可以做同时判断刀具R和锥度的语句。


在 emastercam 上有后处理下载,除了加工时间,基本上代码都有,8 版本的, 9 版本的, X版本、X2版本的都有。
作者: pogua007    时间: 2007-2-21 17:47
10092参数,默认是不被读取,我试过在默认的后处理中显示所有参数,是没有10092的,我虽然查了说明书知道10092是tl_angle,但是我无法读取,所以我调用了nci文件的20004参数,tl_tip_angle不是pre-defined variable,名字是随便起的,绝对不会默认支持.
9版的加工报表是支持中文的,只要去汉化就可以,但是我汉化X版的加工报表响应着寥寥,我又不用9版,所以我懒的去汉化.
mcam_taiwan的加工报表,我也准备做成这个样子的,但是mcam_taiwan准备卖钱,我都不好意思发了,连他采用过的技术我都不好意思采用,我绝对不是抄袭mcam_taiwan,比如我也知道使用vbs生成预览图,我也搞成功了html语言根本不算是技术,但是他用,我再做,就有被误会抄袭的可能.再者而且现在过年,比较的忙,我以前发的响应着寥寥,我本来就没有准备收钱,也没有人关注,积极性大受打击.
作者: 雪人2000    时间: 2007-2-21 17:55
一下。
作者: boy9981    时间: 2007-2-21 18:35
原帖由 pogua007 于 2007-2-21 17:47 发表
10092参数,默认是不被读取,我试过在默认的后处理中显示所有参数,是没有10092的,我虽然查了说明书知道10092是tl_angle,但是我无法读取,所以我调用了nci文件的20004参数,tl_tip_angle不是pre-defined variable,名字是随便起的,绝对不会默认支持.
9版的加工报表是支持中文的,只要去汉化就可以,但是我汉化X版的加工报表响应着寥寥,我又不用9版,所以我懒的去汉化.
mcam_taiwan的加工报表,我也准备做成这个样子的,但是mcam_taiwan准备卖钱,我都不好意思发了,连他采用过的技术我都不好意思采用,我绝对不是抄袭mcam_taiwan,比如我也知道使用vbs生成预览图,我也搞成功了html语言根本不算是技术,但是他用,我再做,就有被误会抄袭的可能.再者而且现在过年,比较的忙,我以前发的响应着寥寥,我本来就没有准备收钱,也没有人关注,积极性大受打击.





不用想这么多,难道有人比你先用Mastercam你就不要用了,这些无非是内置功能,不能说是谁创造的,如果MP不支持,你原创也没有用,10092按我说的就能用。
改做的就做,没有什么好顾虑的。

9 版本不支持中文,不知是什么原因,要高手来解答。

[ 本帖最后由 boy9981 于 2007-2-21 18:36 编辑 ]
作者: pogua007    时间: 2007-2-21 18:40
emastercam的那个后处理就是用我说的方法显示锥刀锥度的,不是直接调用10092.下面是emastercam的后处理中的两段:
pwrttparam$ #Information from parameters
           if prmcode$ = 15346, comp_type = rpar(sparameter$, 1)
           if prmcode$ = 20004, slot = rpar(sparameter$, 16) #这个就是我说的调用nci中的20004序列的参数组.
           if prmcode$ = 20006, cut_ability = rpar(sparameter$,8)
           if prmcode$ = 20007, pilot_dia = rpar(sparameter$, 11)

fmt     2 slot                    # 定义20004组参数中的16项,第八个是锥度,我数错了,嘿嘿.
fmt     2 tool_type
fmt     2 matl_type
fmt     2 corner_rad_type
fmt     2 diameter
fmt     2 corner_rad
fmt     2 threads
fmt  A  2 tip_angle
fmt     2 dia_off
fmt     2 len_off
fmt     2 tool_feed
fmt     2 plunge
fmt     2 retract
fmt     2 rpm
fmt     2 coolant1
fmt     2 n_flutes1
fmt  A  2 tip_angle_ch

[ 本帖最后由 pogua007 于 2007-2-21 18:42 编辑 ]
作者: mcam_taiwan    时间: 2007-2-21 19:02
9版可支援中文的....不過方法不同罷了!不能直接修改內容,需外轉..
作者: boy9981    时间: 2007-2-22 11:42
原帖由 mcam_taiwan 于 2007-2-21 19:02 发表
9版可支援中文的....不過方法不同罷了!不能直接修改內容,需外轉..




谢谢,请指点!
作者: 雪人2000    时间: 2007-2-22 11:46
原帖由 pogua007 于 2007-2-21 18:40 发表
emastercam的那个后处理就是用我说的方法显示锥刀锥度的,不是直接调用10092.下面是emastercam的后处理中的两段:
pwrttparam$ #Information from parameters
           if prmcode$ = 15346, comp_type = rpar(sparameter$, 1)
           if prmcode$ = 20004, slot = rpar(sparameter$, 16) #这个就是我说的调用nci中的20004序列的参数组.
           if prmcode$ = 20006, cut_ability = rpar(sparameter$,8)
           if prmcode$ = 20007, pilot_dia = rpar(sparameter$, 11)

fmt     2 slot                    # 定义20004组参数中的16项,第八个是锥度,我数错了,嘿嘿.
fmt     2 tool_type
fmt     2 matl_type
fmt     2 corner_rad_type
fmt     2 diameter
fmt     2 corner_rad
fmt     2 threads
fmt  A  2 tip_angle
fmt     2 dia_off
fmt     2 len_off
fmt     2 tool_feed
fmt     2 plunge
fmt     2 retract
fmt     2 rpm
fmt     2 coolant1
fmt     2 n_flutes1
fmt  A  2 tip_angle_ch

[ 本帖最后由 pogua007 于 2007-2-21 18:42 编辑 ]

好料
作者: sany1234    时间: 2007-5-20 01:14
有些雕刻机上不能识别G代码中的G54.用Mastercam不太会有问题,但用其它软件于UG就会有一些问题.怎么解决?




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3