找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 34125|回复: 67
打印 上一主题 下一主题

【讨论】CIMATRON的POST

[复制链接]
跳转到指定楼层
1
发表于 2003-2-19 11:40:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
以下代码是我自写的POST中圆弧段表示法(勉强可称算法),跟Cimatron中附带的DEMO不同,用R来表示G02和G03(DEMO用I,J,K来表示G02和G03)。其中MEDX,MEDY是自定义变量,类型为COORDINATES。
  
CIRCULAR MOTION:  
      IF_SET (ARC_ANG _LT_ 0.0) ARC_ANG = 0.0 - ARC_ANG ; END_IF ;
  
      OUTPUT $ ;
      IF_SET (CIRC_MOV) OUTPUT " " CIRC_MOV ; END_IF ;  
      IF_SET (ARC_ANG _GT_ 0.0)
        IF_SET (ARC_ANG _LE_ 180.0)
          IF_SET (X_ENDPT) OUTPUT " X" X_ENDPT  ; END_IF ;  
          IF_SET (Y_ENDPT) OUTPUT " Y" Y_ENDPT  ; END_IF ;  
          OUTPUT " R" RADIUS_ ;
          IF_SET (MCH_FEED) OUTPUT " F" MCH_FEED ; END_IF ;
        ELSE
          MEDX = 2 * X_CENTER - XOLD ;
          MEDY = 2 * Y_CENTER - YOLD ;
          OUTPUT " X" MEDX " Y" MEDY " R" RADIUS_ ;
          IF_SET (MCH_FEED) OUTPUT " F" MCH_FEED ; END_IF ;
          SET_ON X_ENDPT Y_ENDPT ;
          OUTPUT $ " X" X_ENDPT " Y" Y_ENDPT " R" RADIUS_ ;
        END_IF ;
      ELSE
        MEDX = 2 * X_CENTER - XOLD ;
        MEDY = 2 * Y_CENTER - YOLD ;
        OUTPUT " X" MEDX " Y" MEDY " R" RADIUS_ ;
        IF_SET (MCH_FEED) OUTPUT " F" MCH_FEED ; END_IF ;
        SET_ON X_ENDPT Y_ENDPT ;
        OUTPUT $ " X" X_ENDPT " Y" Y_ENDPT " R" RADIUS_ ;
      END_IF ;  
  
      SET_ON LIN_MOV ;  
      XOLD = X_CURPOS ;  
      YOLD = Y_CURPOS ;  
      ZOLD = Z_CURPOS ;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2003-2-20 12:00:53 | 只看该作者
我学着老兄乡改了我的后处理,可是,怎样让他生效呢?
是DEX文件吧。
3
发表于 2003-2-20 12:33:39 | 只看该作者
我这是源代码,即EXF文件,通过DFEXF.EXE编译后生成DEX文件,即可生效。
4
发表于 2003-2-20 15:26:24 | 只看该作者
以下代码是CIMATRON中附带的DEMO中的打孔表示法,有一个BUG ,而且输出的G代码同CIMATRON中NC环境下的刀路坐标没有一一对应。
  
CYCLE: ON:  
      FlagSpin = NO ;  
      IF_SET (SPIN_SPEED) FlagSpin = YES ; END_IF ;  
      IF_SET (SPIN_DIR)   FlagSpin = YES ; END_IF ;  
      IF_SET (FlagSpin _EQ_ YES)  
   SET_ON SPIN_SPEED SPIN_DIR ;  
   OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;  
      END_IF ;  
   
      SET_ON X_CURPOS Y_CURPOS Z_CURPOS   ;  
      SET_ON CYC_DEPTH CYC_RETR CYC_CLEAR MCH_FEED MCH_COOL ;  
      SET_ON Zinit Depth Clear ;  
      Zinit    = Z_CURPOS + CYC_DZINIT ;  
      Depth    = Z_CURPOS - CYC_DEPTH ;  
      Clear    = Z_CURPOS + CYC_CLEAR ;  
      IF_SET (Zold _LT_ Zinit) OUTPUT $ " Z" Zinit ; END_IF ;  
       OUTPUT $ ;  
       OUTPUT " "  CYC_RETR ;  
       OUTPUT " "  CYC_CODE ;  
       OUTPUT " X" X_CURPOS ;  
       OUTPUT " Y" Y_CURPOS ;  
       OUTPUT " Z" Depth    ;  
       OUTPUT " R" Clear ;  
      IF_SET (CYC_PECK)  OUTPUT " Q" CYC_PECK  ; END_IF ;  
      IF_SET (CYC_DWELL) OUTPUT " P" CYC_DWELL ; END_IF ;  
      IF_SET (CYC_XSHFT) OUTPUT " I" CYC_XSHFT ; END_IF ;  
      IF_SET (CYC_YSHFT) OUTPUT " J" CYC_YSHFT ; END_IF ;  
       OUTPUT " F" MCH_FEED ;  
       OUTPUT " "  MCH_COOL ;  
      SET_ON  LIN_MOV CIRC_MOV ;  
      SET_OFF CYC_DEPTH CYC_CLEAR;  
      Xold = X_CURPOS ;  
      Yold = Y_CURPOS ;  
      Zold = Z_CURPOS ;  
  
以下代码是我的改进
  
CYCLE: ON:  
      SET_ON X_CURPOS Y_CURPOS Z_CURPOS   ;  
      SET_ON CYC_RETR DEPTH CLEAR MCH_FEED ;  
     
      ZINIT = Z_CURPOS + CYC_DZINIT ;  
      DEPTH = Z_CURPOS - CYC_DEPTH ;  
      CLEAR = Z_CURPOS + CYC_CLEAR ;
  
      OUTPUT $ " Z" ZINIT ;  
      OUTPUT $ " " CYC_RETR " " CYC_CODE " X" X_CURPOS " Y" Y_CURPOS ;
      OUTPUT " Z" DEPTH " R" CLEAR ;
      IF_SET (CYC_PECK)  OUTPUT " Q" CYC_PECK  ; END_IF ;  
      IF_SET (CYC_DWELL) OUTPUT " P" CYC_DWELL ; END_IF ;  
      IF_SET (CYC_XSHFT) OUTPUT " I" CYC_XSHFT ; END_IF ;  
      IF_SET (CYC_YSHFT) OUTPUT " J" CYC_YSHFT ; END_IF ;
                         OUTPUT " F" MCH_FEED  ;  
  
      IF_SET (ZINIT _LT_ ZOLD) ZINIT = ZOLD ; END_IF ;
  
      SET_ON  LIN_MOV CIRC_MOV ;  
      XOLD = X_CURPOS ;  
      YOLD = Y_CURPOS ;  
      ZOLD = Z_CURPOS ;
5
发表于 2003-2-20 15:35:03 | 只看该作者
佩服!
6
发表于 2003-2-20 15:56:02 | 只看该作者
献丑了!对CIMATRON的POST,我还有一些小心得,容后再说。我知道chen75兄是高手,受到chen75兄夸奖,真是荣辛!
7
发表于 2003-2-20 16:50:51 | 只看该作者
darkbit wrote:
献丑了!对CIMATRON的POST,我还有一些小心得,容后再说。我知道chen75兄是高手,受到chen75兄夸奖,真是荣辛!

  
两位都是高手啊!!对于POST小弟不是很懂,所以还请两位仁兄多多指教!!
CIM中你们认为哪个后处理最好!!
8
发表于 2003-2-20 17:25:56 | 只看该作者
我不知道哪个后处理最好,适合你所用机床的POST即是好的POST,CIMATRON有两大后处理系统,一个为GPP,另一个即为著名的IMSPOST,GPP是CIMATRON固有的,IMSPOST是外挂的,许多人说IMSPOST同CIMATRON无缝集成,我认为缝隙很大,随便破破。对CIMATRON来说,GPP是基础,没有GPP,IMSPOST是空中楼阁。因IMSPOST是接受GPP生成的APT文件而产生G代码,试想,对GPP不了解,而去搞IMSPOST,若GPP生成的APT文件有问题,IMSPOST产生的G代码会好吗?
GPP可直接产生G代码,CIMATRON IT版附带的GPP型POST在文件名和路径上有问题,这点我已解决了,具体技巧容后再说。
GPP还控制着CIMATRON的摸拟,有时摸拟出错,很可能是GPP产生的CL文件不对。
综上所述,我不用IMSPOST
9
发表于 2003-2-20 19:00:27 | 只看该作者
darkbit wrote:
我这是源代码,即EXF文件,通过DFEXF.EXE编译后生成DEX文件,即可生效。

非常感谢,我马上试试.
10
发表于 2003-2-20 21:10:41 | 只看该作者
  &nbspFPF,又一位高手来了。
  关于GPP,在几年前用7.0时研究过,现在有了IMSPOST,就对它再也没兴趣了。毕竟以前看资料cimatron公司有专门工具开发GPP的后处理,而我们只有一行行的写程序。另外还有一点是GPP在多轴上的代码基本上要推倒重来(和三轴比较),IMS在这些地方就有优势。
   当然无论是后处理速度还是方便性上,用GPP都比IMS好,所以平时都用GPP,偶尔在工作中发现GPP有什么问题(如钻孔循环上的问题),再对细节处仔细研究,修改一下。对GPP的整体重写或大幅改动就心有余而力不足了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-22 22:44 , Processed in 0.029599 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表