找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

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

[原创] 独家发布,群处理源代码

[复制链接]
跳转到指定楼层
1
发表于 2007-7-8 08:16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 sjhxs 于 2014-8-16 09:58 编辑

为了最大限度地提高工作效率,造福同道中人,打破技术封锁。本人斗胆开贴,公布自己的群处理源代码。因为技术原因,代码中肯定有许多不尽人意的地方,相信通过你的努力,能使其更加完善。同时也希望获益者在发扬光大后也能将成果分享给大家~!
  

评分

参与人数 1技术 +2 收起 理由
dearbabyer + 2 见解非常独到

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 赞一下!赞一下!
2
发表于 2007-7-8 08:18:25 | 只看该作者
本帖最后由 sjhxs 于 2014-8-16 10:00 编辑

* CIMATRON 3 轴集成群后处理(按刀具自动分割程序)
* 适用于佳铁、西门子、三菱或法兰克控制器(交互区A、B、C选择)
* 园弧代码可X、Y、I、J或X、Y、R方式输出 (交互区Y、N选择)
* 本后处理由舜江侯(网名)制作,欢迎提供宝贵意见!
********************************************************
* define private variables:
FORMAT (SEQUENCING)  Seq SubSeq count first deg id ;
FORMAT (COORDINATES) Xold Yold Zold DXcenter DYcenter DZcenter ;
FORMAT (COORDINATES) Zinit Clear Depth CNTRL_X  CNTRL_Y  CNTRL_Z  KNOT_ ;
FORMAT (COORDINATES) Xhome Yhome Zhome  minz radout ;
FORMAT (COORDINATES) XfirstOrigin YfirstOrigin ZfirstOrigin ;
FORMAT (USER_1)      CurrSubNum ;
FORMAT (coordinates) ORIGOLDI ORIGOLDJ ORIGOLDK  ;

* define private flags:
FORMAT (USER_2)      FlagSub FlagSeq FlagSpin;
FORMAT (USER_2)      FirstOriginChange FlagError Flagrotmac  ;

* define private constants:
FORMAT (USER_2)      YES NO ;

*文件命名时使用的TP或刀具字符赋值变量
FORMAT (CHARACTER) tp tl ;
********************************************************
INTERACTION (CHARACTER)    "SEQUENCING<Y/N>"         NumYN       = "N"  ;
INTERACTION (SEQUENCING)   "SEQUENC-START"           SeqStart    = 1   ;
INTERACTION (SEQUENCING)   "SEQUENC-INCR."           SeqIncr     = 1   ;
INTERACTION (CHARACTER)   "JT/A/Sim/B/Fanuc/C/"      CONTTYPE    = "C"  ;
INTERACTION (CHARACTER)      "R-OUTPUT<Y/N>"         RADOUTPUT   = "N"  ;
********************************************************
NON_MODAL  ALL_VAR;
MODAL      X_CURPOS Y_CURPOS Z_CURPOS ;
MODAL      LIN_MOV CIRC_MOV MCH_FEED SPIN_SPEED SPIN_DIR MCH_COOL MCH_DWELL;
MODAL      CUTCOM_ON  CUTCOM_OFF ;
MODAL      CYC_DEPTH CYC_PECK CYC_DWELL CYC_RETR CYC_CLEAR Depth Clear NURBS_MOV;
      
IDENTICAL  X_CURPOS X_ENDPT ;
IDENTICAL  Y_CURPOS Y_ENDPT ;

********************************************************
NEW_LINE_IS $ ;
      IF_SET (FlagSeq _EQ_ NO)
         OUTPUT \J ;
      ELSE
         IF_SET (FlagSub _EQ_ NO)
            OUTPUT \J "N" Seq ;
            Seq = Seq + SeqIncr ;
         ELSE
            OUTPUT \J "N" SubSeq ;
            SubSeq = SubSeq + SeqIncr ;
         END_IF ;
      END_IF ;

********************************************************
  
BEGINNING OF TAPE:
      YES              = 1 ;
      NO               = 0 ;
      Seq              = SeqStart ;

      FlagSeq = NO ;
      FlagSub = NO ;
      IF_SET (NumYN _EQ_ "y") FlagSeq = YES ; END_IF ;
      IF_SET (NumYN _EQ_ "Y") FlagSeq = YES ; END_IF ;
      IF_SET  (CONTTYPE _EQ_ "a") CONTTYPE ="A"; END_IF ;
      IF_SET  (CONTTYPE _EQ_ "b") CONTTYPE ="B"; END_IF ;
      IF_SET  (CONTTYPE _EQ_ "c") CONTTYPE ="C"; END_IF ;

*-----Unit matrix (MUST be input in this order !!!)
      ROT_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 ;

*-----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 ;
*--For the first origin change
   ORIGOLDI=0 ; ORIGOLDJ=0 ; ORIGOLDK=1 ;
   flagrotmac = no ;
   minz=999.0;     
IF_SET (CONTTYPE _EQ_ "A")
   OUTPUT \J " % " ;
   OUTPUT \J " G00 G53 Z0 " ;
   OUTPUT \J " G54" ;
   OUTPUT \J " G17 G90" ;
   OUTPUT \J " G51 E0.01" ;
   OUTPUT \J " G00 X0. Y0." ;
END_IF ;
      IF_SET  (CONTTYPE _EQ_ "B")
        OUTPUT \J " %_N_DM_MPF"  ;
        OUTPUT \J " ;$PATH=/_N_MPF_DIR" ;        
        OUTPUT \J " G90 G00 G17 G64 G54 " ;
      END_IF ;
      IF_SET  (CONTTYPE _EQ_ "C")
         OUTPUT \J " %" ;     
         OUTPUT \J " G91 G28 Z0 ";
         OUTPUT \J " G90 G00 G17 G40 G54 "  ;                  
     END_IF ;

BEFORE CUT:

BEGINNING OF PROC:  
      KEEP   PROC_NAME ;
      SET_ON MCH_COOL ;
      FlagSub = NO ;
      SubSeq  = SeqStart ;
  
END OF TAPE:

  IF_SET (CONTTYPE _EQ_ "A")
     OUTPUT \J " G53 Z0 ";
     OUTPUT \J " G90" ;
   ELSE
     OUTPUT \J " G91 G28 Z0 ";
  END_IF ;
       OUTPUT \J  " M05 " ;
       OUTPUT \J  " M30 " ;
       OUTPUT \J  " % " ;
       OUTPUT \J  "( MinZ=" minz " MM )";
IF_SET (CONTTYPE _EQ_ "A")
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\00000%%a.PIM if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\00000%%a.PIM >nul " ;
  ELSE
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\%%a-*.NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tl ".nc >nul " ;
END_IF ;

********************************************************
FEED:
      KEEP MCH_FEED ;

SPIN:
      KEEP SPIN_SPEED ;

COOLANT:
      KEEP MCH_COOL ;

DWELL:
      KEEP MCH_DWELL ;

CUTTER COMPENSATION:
      KEEP  CUTCOM_ON ;

CUTTER COMPENSATION: COFF:
      KEEP  CUTCOM_OFF ;
3
发表于 2007-7-8 08:20:36 | 只看该作者
本帖最后由 sjhxs 于 2014-8-24 14:43 编辑

********************************************************
TOOL CHANGE: FIRST:
  SET_ON  SPIN_SPEED SPIN_DIR ;
    tp=tp_name ;
    tl=curr_name ;
    id = 0 ;
*-----user define batch file------
print0 \j " @echo off " ;
print0 \j " if not exist \nc\" part_name " md \nc\" part_name " >nul " ;
print0 \j " ren " part_name "." tp_name "." post_name " " part_name ".*." post_name "_0 " ;
TOOL CHANGE:
      SET_ON  SPIN_SPEED SPIN_DIR ;
  IF_SET (CONTTYPE _EQ_ "A")
     OUTPUT \J " G53 Z0 ";
     OUTPUT \J " G90" ;
   ELSE
     OUTPUT \J " G91 G28 Z0 ";
  END_IF ;
       OUTPUT \J  " M05 " ;
       OUTPUT \J  " M30 " ;
       OUTPUT \J  " % " ;
       OUTPUT \J  "( MinZ=" minz " MM )";  
  IF_SET (CONTTYPE _EQ_ "A")
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\00000%%a.PIM if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\00000%%a.PIM >nul " ;
  ELSE
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\%%a-*.NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tl ".nc >nul " ;
  END_IF ;  
      SET_ON CUT_FILE X_CURPOS Y_CURPOS Z_CURPOS SPIN_SPEED SPIN_DIR MCH_FEED;
        id=id+1 ;
    tp=tp_name ;
    tl=curr_name ;
TOOL CHANGE: LAST:
      SET_ON  SPIN_SPEED SPIN_DIR ;
IF_SET (CONTTYPE _EQ_ "A")
     OUTPUT \J " G53 Z0 ";
     OUTPUT \J " G90" ;
   ELSE
     OUTPUT \J " G91 G28 Z0 ";
  END_IF ;
       OUTPUT \J  " M05 " ;
       OUTPUT \J  " M30 " ;
       OUTPUT \J  " % " ;
       OUTPUT \J  "( MinZ=" minz " MM )";  
  IF_SET (CONTTYPE _EQ_ "A")
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\00000%%a.PIM if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\00000%%a.PIM >nul " ;
  ELSE
   print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if not exist \nc\" part_name "\%%a-*.NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tl ".nc >nul " ;
  END_IF ;   
      SET_ON CUT_FILE X_CURPOS Y_CURPOS Z_CURPOS SPIN_SPEED SPIN_DIR MCH_FEED;
        id=id+1 ;
    tp=tp_name ;
    tl=curr_name ;
********************************************************
LINEAR MOTION: FAST:
      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 ;
         IF_SET (CONTTYPE _EQ_ "C")
         OUTPUT \J " (Tool=" CURR_NAME " D="DIAMETER_" R="TOOL_RAD")";
             ELSE
        OUTPUT \J " ;Tool=" CURR_NAME " D="DIAMETER_" R="TOOL_RAD ;
         END_IF ;
        OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;
      END_IF ;
      OUTPUT $ ;
      IF_SET (LIN_MOV)  OUTPUT " " LIN_MOV   ; END_IF ;
      IF_SET (X_CURPOS) OUTPUT " X" X_CURPOS ; END_IF ;
      IF_SET (Y_CURPOS) OUTPUT " Y" Y_CURPOS ; END_IF ;
      IF_SET (Z_CURPOS) OUTPUT " Z" Z_CURPOS ; END_IF ;
      IF_SET (MCH_COOL) OUTPUT  " " MCH_COOL ; END_IF ;
      SET_ON CIRC_MOV NURBS_MOV ;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;

LINEAR MOTION:
      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 ;

      OUTPUT $ ;
      IF_SET (LIN_MOV)    OUTPUT " "  LIN_MOV    ; END_IF ;
      IF_SET (X_CURPOS)   OUTPUT " X" X_CURPOS   ; END_IF ;
      IF_SET (Y_CURPOS)   OUTPUT " Y" Y_CURPOS   ; END_IF ;
      IF_SET (Z_CURPOS)   OUTPUT " Z" Z_CURPOS   ; END_IF ;
      IF_SET (MCH_FEED)   OUTPUT " F" MCH_FEED   ; END_IF ;
      IF_SET (MCH_COOL)   OUTPUT  " " MCH_COOL   ; END_IF ;
      IF_SET (minz _GT_ Z_CURPOS)  minz = Z_CURPOS ;  END_IF ;
      SET_ON CIRC_MOV NURBS_MOV;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;

********************************************************
CIRCULAR MOTION:
      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 ;

      DXcenter = X_CENTER - Xold ;
      DYcenter = Y_CENTER - Yold ;
      DZcenter = Z_CENTER - Zold ;
      OUTPUT $ ;
      IF_SET (CIRC_MOV)          OUTPUT " " CIRC_MOV  ; END_IF ;
      IF_SET (X_CURPOS)          OUTPUT " X" X_ENDPT  ; END_IF ;
      IF_SET (Y_CURPOS)          OUTPUT " Y" Y_ENDPT  ; END_IF ;
  IF_SET ( RADOUTPUT _EQ_ "y" )   RADOUTPUT ="Y" ;   END_IF ;
   IF_SET ( RADOUTPUT _EQ_ "Y" )
      IF_SET (ARC_ANG _Lt_ 0.0) ARC_ANG = 0.0 - ARC_ANG ; END_IF ;
        IF_SET (ARC_ANG _LE_ 180.0)  
          OUTPUT " R" RADIUS_ ;
      ELSE
          radout =0-radius_;     OUTPUT " R" radout ;
      END_IF ;
    ELSE
      IF_SET (DXcenter) OUTPUT " I" DXcenter ; END_IF ;
      IF_SET (DYcenter) OUTPUT " J" DYcenter ; END_IF ;
END_IF ;

      IF_SET (MCH_FEED)          OUTPUT " F" MCH_FEED ; END_IF ;
      IF_SET (MCH_COOL)          OUTPUT  " " MCH_COOL ; END_IF ;
      SET_ON LIN_MOV NURBS_MOV ;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
******************************************************************

INSERT WITH:
      OUTPUT $ INS_STR ;

INSERT WITHOUT:
      OUTPUT  \J INS_STR ;

MESSAGE:
      OUTPUT $ "( " MESS_STR " )"  ;


4
发表于 2007-7-8 08:22:24 | 只看该作者
本帖最后由 sjhxs 于 2016-3-3 14:20 编辑











下转129楼



本帖子中包含更多资源

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

x
5
发表于 2007-7-8 08:53:11 | 只看该作者
是行家的,知道有用的就顶一下吧
6
发表于 2007-7-8 09:27:23 | 只看该作者
顶啊.
7
发表于 2007-7-8 09:28:45 | 只看该作者
需然我不是行家,但是sjhxs兄的无私奉献是一定要顶!
8
发表于 2007-7-8 09:29:55 | 只看该作者
原帖由 dearbabyer 于 2007-7-8 08:53 发表
是行家的,知道有用的就顶一下吧

有用的,我过来支持一下!  感谢楼主!
9
发表于 2007-7-8 09:52:33 | 只看该作者
我也顶
10
发表于 2007-7-8 10:49:18 | 只看该作者
支持老胡
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-23 08:19 , Processed in 0.040595 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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