iCAx开思网

标题: 独家发布,群处理源代码 [打印本页]

作者: sjhxs    时间: 2007-7-8 08:16
标题: 独家发布,群处理源代码
本帖最后由 sjhxs 于 2014-8-16 09:58 编辑

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


作者: sjhxs    时间: 2007-7-8 08:18
本帖最后由 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 ;

作者: sjhxs    时间: 2007-7-8 08:20
本帖最后由 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 " )"  ;



作者: sjhxs    时间: 2007-7-8 08:22
本帖最后由 sjhxs 于 2016-3-3 14:20 编辑

[attach]1231053[/attach]

[attach]1231014[/attach]


[attach]1231013[/attach]
[attach]1231054[/attach]

[attach]1231055[/attach]

下转129楼




作者: dearbabyer    时间: 2007-7-8 08:53
是行家的,知道有用的就顶一下吧
作者: 山中岁月    时间: 2007-7-8 09:27
顶啊.
作者: o198000    时间: 2007-7-8 09:28
需然我不是行家,但是sjhxs兄的无私奉献是一定要顶!
作者: biiby    时间: 2007-7-8 09:29
原帖由 dearbabyer 于 2007-7-8 08:53 发表
是行家的,知道有用的就顶一下吧

有用的,我过来支持一下!  感谢楼主!
作者: han    时间: 2007-7-8 09:52
我也顶
作者: xxm_c    时间: 2007-7-8 10:49
支持老胡
作者: tantiduo    时间: 2007-7-8 12:26
这样当然要顶啦。
作者: 2008cnc    时间: 2007-7-8 13:12
谢谢大哥共享!请教一个关于CS程序单的问题?我用你以前的源代,自己修改了一些东西。目前还有两个问题一直困扰着我,请楼主大哥指教!
1.在输出粗加工,精加工的语句里,你是不是根据余量来作判定,如何作的判定?我今天搞了一个早上还是搞不出来。
2.在输出刀具名,我将其改为以TP命名时,处理出来也还是同一TP下有多个工序的都还是分开处理的,如何将其合并?我用你的CS程序单可以,我想学习一下。所以…………
以上两个问题,请楼主在百忙之中,抽点时间帮小弟指点一下。谢谢先了!
作者: san775425    时间: 2007-7-8 13:12
你发的..俺肯定帮顶了
作者: sjhxs    时间: 2007-7-8 14:35
原帖由 2008cnc 于 2007-7-8 13:12 发表
谢谢大哥共享!请教一个关于CS程序单的问题?我用你以前的源代,自己修改了一些东西。目前还有两个问题一直困扰着我,请楼主大哥指教!
1.在输出粗加工,精加工的语句里,你是不是根据余量来作判定,如何作的判定 ...



1)关于粗精判断,我确实是根据加工余量定的。由于该程式单最初是基于IT版做的,所以除了外形、口袋工序按轮廓外,其他的均按曲面余量、曲面公差设定的
即:offset = PART_OFST ; tol = PART_TOL ;
我的判断依据如下(请按自己的习惯设定):
     if_set (offset _Ge_ 0.2)
        PM ="粗加工" ;
      end_if ;
        if_set (offset _Lt_ 0.2)
          if_set (offset _GT_ 0.02)
              PM ="中加工" ;
           end_if ;
         end_if ;
      if_set (offset _Le_ 0.02)
         if_set (tol _Le_ 0.02)
              PM ="精加工" ;
           else
              PM ="中加工" ;
         end_if ;
        end_if ;
上面自定义变量offset tol 为(COORDINATES)坐标格式,而PM为(CHARACTER)字符格式

2)关于TP命名,我是将输出部分写在END OF TOOLPATH:区块之下,但这种出单方式是基于相同刀具作为一TP编制的.
作者: camcam000000    时间: 2007-7-8 17:07
支持支持支持支持
作者: san775425    时间: 2007-7-8 18:04
要是改程序的时候重新输出时能自动覆盖就好了!
作者: san775425    时间: 2007-7-8 18:04
要是改程序的时候重新输出时能自动覆盖就好了!
作者: 2008cnc    时间: 2007-7-8 18:56
原帖由 sjhxs 于 2007-7-8 14:35 发表



1)关于粗精判断,我确实是根据加工余量定的。由于该程式单最初是基于IT版做的,所以除了外形、口袋工序按轮廓外,其他的均按曲面余量、曲面公差设定的
即:offset = PART_OFST ; tol = PART_TOL ;
我的判 ...

大哥,再次谢谢你了!你实在太好了。还有你这个群处理是不是不支持IT版的?下午在厂里试了一下,E版的可以。
作者: mirrtext    时间: 2007-7-8 19:43
!!!
百年不遇啊
作者: liutongxu    时间: 2007-7-9 08:29
学习中
作者: mxwzt    时间: 2007-7-9 09:06
好人啊,这年头有这种无私精神的人真是太少了.强烈支持!
作者: san775425    时间: 2007-7-9 11:24
可以啊,,呵呵下午QQ聊
作者: yang_271    时间: 2007-7-9 11:33
好东西.俺不会改啊.只有用现成的了
作者: 2008cnc    时间: 2007-7-9 18:55
楼主大哥,你好!今天用你告知的CS程式单判定,第一个问题粗精加工已成功解决了。但今天在处理一个钻孔的加工程式,处理出来发现其余量,和刀长的输出有问题。是否钻孔还需另外作判定的?其它加工方式都能正常处理出来。麻烦再次指教!
作者: lby    时间: 2007-7-10 08:39
谢谢楼主,小弟向你学习很多了!
作者: 星球大战    时间: 2007-7-10 12:20
江侯兄又有新东西分享了,支持支持
作者: lxhlufcnc    时间: 2007-7-10 14:49
sjhxs老哥,这是我以前改的后处理,我刚到现在工厂用没问题,可最近撞了两次刀(我事先模拟没问题),搞的我对自己都没信心了.麻烦您能不能帮我看看我的POST是不是有问题?谢谢您先!
作者: hongxinyu    时间: 2007-7-10 15:07
谢谢楼主, .学习中
作者: 2008cnc    时间: 2007-7-10 22:24
楼主大哥,你好!钻孔程式余量,和刀长的输出问题,今天已解决。但又出现一个新问题了,就是走外形和挖槽的输出程式,明明按余量判定是粗加工的,可输出的是精加工,但外形连在环绕粗加工后面,输出的判断结果又是对的。用你的CS后处理出来又没有任何问题。我仔细看了一下判定,又没发现有什么不妥的地方。自己也反反复复的另外判定了无数次,就是搞一定。还请大哥,帮忙指点一下。
作者: jmm7777    时间: 2007-7-11 00:22
谢谢分享~
作者: WCP0592    时间: 2007-7-11 20:29
真的很有用  顶楼主
作者: zhanyongeyou    时间: 2007-7-11 22:08
这个要顶
作者: wszgr    时间: 2007-7-12 09:25
楼主大哥你的那些代码复制保存什么文件啊
作者: xxm_c    时间: 2007-7-12 09:57
胡哥     可以说你很伟大   谢谢你对我们的无私的奉献   谢谢你在“生命的最后”为我们做的贡献  老天是多么的不公平    好人往往都不长久   让我们一起为胡哥祝福  希望他过得快乐。。。。
作者: wszgr    时间: 2007-7-12 11:19
谢谢楼主大哥共享
我想解决个问题就是处理时可不可以自动创建以图档为文件夹啊?
作者: xxm_c    时间: 2007-7-12 11:30
sjhxs答复[2007-07-12 11:05]:
晕~~说得我好象不久于人世似的,阎王爷说了:正常情况下,十年内还不会考虑带我走的......
作者: sjhxs    时间: 2007-7-13 09:00
由于不少人询问程式改动的覆盖以及相同刀具分离问题,在此一并作答
1)程式覆盖:
   因为工序分割的默认名称的缘故,如果仅用TP命名,对于习惯只在一TP下编程方式,其命名可能将后者覆盖前者。对多TP则无碍,所以为了增加后处理的通用性,建议以“数字-TP-刀名.NC”命名。
  将原:
   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 " ;
  改为:
    print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if  exist \nc\" part_name "\%%a-" tp "-" tl ".NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tp "-" tl ".nc >nul " ;
   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-" tp "-" tl ".nc >nul " ;

  大意是前一句)如果在指定的文件夹中(\NC\图档名\)存在"当前数-当前TP-当前刀具.NC"文件,且有待命名的代码文件,就移动该文件到指定文件夹覆盖之
  (后一句)如果在指定的文件夹中(\NC\图档名\)不存在"当前数-*.NC"文件,且有待命名的代码文件,就移动该文件到指定文件夹命名为"当前数-当前TP-当前刀具.NC"

其中%%a是按叠加方式从1-35变化,如果程式超过35只,则可修改35为更大.

2)相同刀具分离:
  目前暂时采用分开处理方式实现,例如有路径A、B、C、D、E、F,其中C、D的刀具一样,但前者作为粗加工使用,而后者在作光刀用,则需分两次群处理,即A、B、C一次,D、E、F再处理一次。

  由于技术问题,有些功能需要大家研究发掘而加以完善。所谓众人拾柴火焰高,这也是我公布源代码的原因所在!

[ 本帖最后由 sjhxs 于 2007-7-14 09:15 编辑 ]
作者: wszgr2006    时间: 2007-7-13 10:18
"代码中 PRINT0 中的内容就是解决你所关心的问题的,当然还需把PRINT0文件改成批处理文件执行之,这就是为什么后处理还需要*.cmd文件的原因所在。"
楼主大哥:"把PRINT0文件改成批处理文件执行"怎么改啊?请指教要改成什么*.cmd

[ 本帖最后由 wszgr2006 于 2007-7-13 10:25 编辑 ]
作者: sjhxs    时间: 2007-7-13 10:40
原帖由 wszgr2006 于 2007-7-13 10:18 发表
楼主大哥:"把PRINT0文件改成批处理文件执行"怎么改啊?请指教要改成什么*.cmd

  兄弟还得认真地学习一下DOS命令啊....
  如果没有cmd文件,后处理出来的不但有代码文件(默认文件名),还有一系列的伴随文件 ,其中有print0.txt文件,里面的内容就是在源代码中写的一组dos命令,可print0.txt文件又不会自动执行,所以就得借cmd来实现,首先改print0.txt为print0.bat,再呼print0.bat执行之,即:

   @echo off
  ren print0.txt print0.bat
  call print0
  del print*.*

[ 本帖最后由 sjhxs 于 2007-7-13 10:47 编辑 ]
作者: wszgr2006    时间: 2007-7-13 10:45
楼主大哥,谢谢你了!你实在太好了.

以“数字-TP-刀名.NC”命名。
  将原:
   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 " ;
  改为:
    print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if  exist \nc\" part_name "\%%a-" tp "-" tl ".NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tp "-" tl ".nc >nul " ;
   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-" tp "-" tl ".nc >nul " ;
楼主大哥我现在想以“TP.NC”命名格式我应该怎么改啊
 print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if  exist \nc\" part_name "\%%a-" tp "-" tl ".NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tp "-" tl ".nc >nul " ;
   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-" tp "-" tl ".nc >nul " ;
这里看去有两部分,还是当一起用?
还有就是代码里面有好几段print0的代码我们主要改哪段啊?

[ 本帖最后由 wszgr2006 于 2007-7-13 11:01 编辑 ]
作者: cwmcwm    时间: 2007-7-13 11:45
支持sjhxs
作者: zhoukuan    时间: 2007-7-13 12:28
虽然看不懂
但还要顶
作者: wszgr2006    时间: 2007-7-13 18:18
楼主大哥我刚入门很菜鸟里面一大堆dos命令
没有见过具体后处理教材啊
想以“TP.NC”命名格式我应该怎么改啊

所以请指点
作者: 2008cnc    时间: 2007-7-14 07:47
大哥,你好!用FEN后处理时,发现其模拟显示有点小问题,就是下刀时,程式明明是有G00抬刀后再下的刀,可我用熊族模拟显示出来的是斜线下刀的,不是平移过去再下刀的。我用另外一个后处理又不会这样,是不是要在DEF里面设置某个参数?
作者: wxk002    时间: 2007-7-14 10:43
谢谢!
作者: ypyp    时间: 2007-7-14 14:53
支持,支持,这也是很有用的。
作者: 2008cnc    时间: 2007-7-14 22:15
sjhxs大哥,你好!今天用了你的CS程序单。发现其同一TP里有多个工序时,是以最后一个工序来命名的,当后一个工序加工深度小于前一个工序深度时,问题就出来了,刀长无法显示前一工序的深度值。你是怎么做的呢?要么用你的CNC程式单的话,你看能否在同一TP名里的所有工序,刀长输出区域作个判断,使其最大深度值的显示,以其红色或其它顔色突出显示呢?帮我想想好吗?我今天在输出粗加工,中粗加工,精加工的区域里,也分别用顔色来判断了一下,可以突出显示,但还没有完全成功,有乱码存在。不好意思!表达能力还需加强,说得有些含糊了。不知你能否理解我的意思?
作者: 2008cnc    时间: 2007-7-15 18:51
sjhxs答复[2007-07-15 08:41]:
看到这个问题,我就知道你还没仔细地分析CX的源代码,请到CX文件中找答案吧...
多谢sjhxs大哥!是的,我确实没仔细地分析CX的源代码,今天下午认真分析了下,处理出来问题也解决了,但时间上都是显示5分钟。此句判断就是5。是不是时间判断有问题,还是电脑有问题?用CS就是有些又可以,有些也只是显示5分钟。
作者: cwmcwm    时间: 2007-7-16 12:00
print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if  exist \nc\" part_name "\%%a-" tp "-" tl ".NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tp "-" tl ".nc >nul " ;
   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-" tp "-" tl ".nc >nul " ;



请问sjhxs
这些应该是处理程式命名的指令吧

哪些是将一个TP里面的刀路,按照刀具的不同分开处理成NC程式的指令呢?
作者: wszgr2006    时间: 2007-7-18 12:52
sjhxs大哥
    通过了好几个后处理对比怎么找不到      OUTPUT $ "M03S" SPIN_SPEED   ;这句啊
怎么有可以处理出程式头有M03S 呀 如果想把OUTPUT \J " G00 X0 Y0 Z " Zhome ; 放到M30S1500 数后怎么改呢?
作者: cwmcwm    时间: 2007-7-18 18:45
因为我把你的源代码里面的
print0 \j "for /L %%a in (1,1,35) do ";
   print0 "if  exist \nc\" part_name "\%%a-" tp "-" tl ".NC if exist " part_name ".*." post_name "_" id ;
   print0  " move/y " part_name ".*." post_name "_" id " \nc\" part_name "\%%a-" tp "-" tl ".nc >nul " ;
   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-" tp "-" tl ".nc >nul " ;


全部都删掉后,POST也可以按照刀具来分割程式,只是命名是按照软件内定的方式命名而已的。
我想知道哪些是控制按照刀具来分割程式的。不是程式怎么命名的问题。

再次感谢sjhxs
作者: wszgr2006    时间: 2007-7-18 19:37
感谢
sjhxs大哥
问题总算搞定
作者: wszgr2006    时间: 2007-7-19 11:48
急待解决
在处理TP命名的程式时,如图
这样的刀路
处理后这么会509XD01,509XD03,m509XD01,m509XD03
没有509XD02,m509XD02啊
作者: sjhxs    时间: 2007-7-22 15:08
本帖最后由 sjhxs 于 2015-8-22 17:32 编辑

  群处理出NC代码的同时,同步输出程序单(IE打开),后处理文件范本(源代码),期待大家能进一步完善之....


作者: sjhxs    时间: 2007-7-22 15:33
本来想搞Excel表单,代码也简单得多,可执行速度太慢,而且图片显示又太麻烦,同时电脑还需专门安装Word,而IE则是系统自带,所以还是将代码合二为一,既出NC代码又出程序单,编程者也方便得多了....
作者: 2008cnc    时间: 2007-7-22 17:56
多谢SJHXS大哥,我时时刻刻都在关注你的贴子呀!
作者: cwmcwm    时间: 2007-7-22 18:17
原帖由 sjhxs 于 2007-7-22 15:33 发表
本来想搞Excel表单,代码也简单得多,可执行速度太慢,而且图片显示又太麻烦,同时电脑还需专门安装Word,而IE则是系统自带,所以还是将代码合二为一,既出NC代码又出程序单,编程者也方便得多了....



胡哥
可以说说怎么搞Excel表单吗?是有什么代码来执行的?最近对这个比较感兴趣。
作者: 2008cnc    时间: 2007-7-22 23:24
晚上试用了一下,群处理出NC代码有以下问题?
1.当前后两道工序刀具相同,且加工性质不同。如前道工序是粗加工,后一道工序是精加工时,后处理出来是两道工序在一起的。我是将其中一道工序的刀具另外命名,处理出来才可以的。程式单也是一样。
2.程式单的刀径是以整数形式输出的,当用到一些骗刀法时,处理出来的程式单需注意核对。
3.有些工序的刀长也存在问题,与实际不合。
以上是我总结的三点问题,期待胡哥和大家一起来完善。
作者: 2008cnc    时间: 2007-7-22 23:25
晚上试用了一下,群处理出NC代码有以下问题?
1.当前后两道工序刀具相同,且加工性质不同。如前道工序是粗加工,后一道工序是精加工时,后处理出来是两道工序在一起的。我是将其中一道工序的刀具另外命名,处理出来才可以的。程式单也是一样。
2.程式单的刀径是以整数形式输出的,当用到一些骗刀法时,处理出来的程式单需注意核对。
3.有些工序的刀长也存在问题,与实际不合。
以上是我总结的三点问题,期待胡哥和大家一起来完善。
不好意思!网速作怪!!!

[ 本帖最后由 2008cnc 于 2007-7-22 23:35 编辑 ]
作者: sjhxs    时间: 2007-7-23 08:21
原帖由 cwmcwm 于 2007-7-22 18:17 发表
胡哥
可以说说怎么搞Excel表单吗?是有什么代码来执行的?最近对这个比较感兴趣。


  我们现在搞的Excel表单,一般是先做好程式单的格式,然后再调用另一文件的数据(该文件一般通过后处理生成),再根据行列对应显示出来....
  [attach]664360[/attach]
  如下图:#REF!显示部分均对应另一文件的某一行列

[ 本帖最后由 sjhxs 于 2007-7-23 13:59 编辑 ]
作者: wszgr2006    时间: 2007-7-23 13:13
原帖由 sjhxs 于 2007-7-23 08:21 发表


  我们现在搞的Excel表单,一般是先做好程式单的格式,然后再调用另一文件的数据(该文件一般通过后处理生成),再根据行列对应显示出来....
  如下图:#REF!显示部分均对应另一文件的某一行列


我也 sjhxs搞的Excel表单
作者: cwmcwm    时间: 2007-7-23 19:04
原帖由 sjhxs 于 2007-7-23 08:21 发表


  我们现在搞的Excel表单,一般是先做好程式单的格式,然后再调用另一文件的数据(该文件一般通过后处理生成),再根据行列对应显示出来....
  664360
  如下图:#REF!显示部分均对应另一文件的某一行列


在POST里面怎么才能输出.CSV格式的数据啊?

胡哥
可不可以给做一个POST啊。
作者: phoniexs    时间: 2007-7-23 22:42
标题: 求助(急)
加工中心是FANUC系统, 软件 cimatron it 12
能否后处理出以下程式的格式,   请指教   或者加我QQ:7682710
扩展名是        *.NC

%
G21
G90 G00 G17 G40 G49 G80
       (这里显示是什么刀具直径,R角半径
       切削深度,余量)   无关紧要的
G54
G00 X132.5 Y135.7
G43 H00 Z100
S700 M03
Z1.5
Z.7
G01
G03
--------
--------(中间省略)
-------
--------
G00 Z100
M05
M09
G91 G28 Z0
M30
%
作者: sjhxs    时间: 2007-7-24 14:33
本帖最后由 sjhxs 于 2015-8-22 17:34 编辑
原帖由 cwmcwm 于 2007-7-23 19:04 发表
胡哥
可不可以给做一个POST啊。

真是萝卜青菜各欢喜,既有鱼,又需渔。我是冒着被砸砖的危险(怕断了别人的财路),授之与渔,如果还不会,那已经是天命了.....

     将hu.xls及加工图片文件复制到D:\NC中,其他文件就不用说了吧....(因为调用图片是通过宏录制的,所以应启用宏)




作者: wszgr2006    时间: 2007-7-24 17:14
看来很不错啊
那的试试
作者: san775425    时间: 2007-7-24 18:24
路过.在顶下
作者: lxhlufcnc    时间: 2007-7-24 19:33
想要解压口令.大家来顶啊!
作者: phoniexs    时间: 2007-7-24 22:01
标题: 给为高手 快点帮我啊
加工中心是FANUC系统, 软件 cimatron it 12
能否后处理出以下程式的格式,   请指教   或者加我 QQ:7682710 或者发短信:13575647074
扩展名是        *.NC      程式里需要R替代 I  J

%
G21
G91 G28 Z0.
G90 G00 G17 G40 G49 G80
(E:\CAM\q2007-7\q07-210\q210b.prt  CREATE BY: XIE DU LIANG)
(TOOL NAME: D66R8  CREATE DATE: Tue Jul 24 07:37:26 2007)
(TOOL Diameter=66.00 R=8.00)
(PART STOCK =3.00  PART FLOOR STOCK=1.00)
G54
G00 X207.86 Y-28.546
G43 H00 Z100.
S700 M03
Z1.
G01 X208.898 Y-26.392 Z.916 F1500.
X210.083 Y-22.863 Z.786
X210.818 Y-19.214 Z.657
X211.091 Y-15.502 Z.527
X210.899 Y-11.785 Z.397
X210.243 Y-8.121 Z.267
X209.134 Y-4.567 Z.137
X207.59 Y-1.18 Z.007
--------
--------(中间省略)
-------
--------
G00 Z100
M05
M09
G91 G28 Z0                (结尾部分)
M30
%
作者: phoniexs    时间: 2007-7-24 23:03
标题: 各位高手 快点帮我啊
加工中心是FANUC系统, 软件 cimatron it 12
能否后处理出以下程式的格式,   请指教   或者加我 QQ:7682710 或者发短信:13575647074
扩展名是        *.NC      程式里需要R替代 I  J

%
G21
G91 G28 Z0.
G90 G00 G17 G40 G49 G80
(E:\CAM\q2007-7\q07-210\q210b.prt  CREATE BY: XIE DU LIANG)
(TOOL NAME: D66R8  CREATE DATE: Tue Jul 24 07:37:26 2007)
(TOOL Diameter=66.00 R=8.00)
(PART STOCK =3.00  PART FLOOR STOCK=1.00)
G54
G00 X207.86 Y-28.546
G43 H00 Z100.
S700 M03
Z1.
G01 X208.898 Y-26.392 Z.916 F1500.
X210.083 Y-22.863 Z.786
X210.818 Y-19.214 Z.657
X211.091 Y-15.502 Z.527
X210.899 Y-11.785 Z.397
X210.243 Y-8.121 Z.267
X209.134 Y-4.567 Z.137
X207.59 Y-1.18 Z.007
--------
--------(中间省略)
-------
--------
G00 Z100
M05
M09
G91 G28 Z0                (结尾部分)
M30
%
作者: cwmcwm    时间: 2007-7-25 18:36
感谢胡哥的热心

基本都可以了

[ 本帖最后由 cwmcwm 于 2007-7-26 18:06 编辑 ]
作者: sjhxs    时间: 2007-7-26 08:46
原帖由 cwmcwm 于 2007-7-25 18:36 发表
感谢胡哥的热心
xls格式的已经能够做出来了。
只是还有程式名的输出的问题。


请注意PRINT0文件中关于“程式名”命名内容的变量及写入位置
  建议*.p01文件的写入位置同PRINT0基本一致!(程式名变量同)
作者: 2008cnc    时间: 2007-7-26 13:15
原帖由 2008cnc 于 2007-7-22 23:24 发表
晚上试用了一下,群处理出NC代码有以下问题?
1.当前后两道工序刀具相同,且加工性质不同。如前道工序是粗加工,后一道工序是精加工时,后处理出来是两道工序在一起的。我是将其中一道工序的刀具另外命名,处理出 ...

多谢胡哥指点!2、3问题已全部解决了。第2个问题按照胡哥说的方法解决了。第3个问题我是根据个人的习惯,直接将刀长变量输出为MINZ-5就可以了。如果个人习惯用的坐标在基准面上的,不实用此方法。
作者: 2008cnc    时间: 2007-7-26 23:48
胡哥,我用你的CX程式单,在后处理交谈语句里增加了一项,表示输出前模或后模或者是铜公编号时,发现输出前模或后模时,处理出来的只有前面一个字符,后面那个“模”字,无法显示出来。输出字母和数字又没问题。我定义的输出格式又是为字符型,渗不透。是否还需在DEF里,另外改编。
作者: CAD/WANMEI    时间: 2007-7-27 13:17
楼主,可以加我QQ吗!!317849834谢谢~~~
作者: yehz    时间: 2007-7-27 22:39
sjhxs大哥
         我用你的CS后处理,输出来的程序单没有程序名,请教教不弟。
作者: lpokmijn    时间: 2007-7-27 23:06
标题: 请教各位师傅自动保存没了,该如何设置参数
本来是有的,后来该了些参数,就没了,请知道的师傅赐教!!
作者: yehz    时间: 2007-7-28 18:09
胡哥还是搞不掂,输出来就是没有程序名。
作者: wszgr2006    时间: 2007-7-30 12:55
SJHXS大哥,我用你的hu程式单
我有个问题想不明白
改前
print1 \j part_name ".pfm(elt)," date_syy"-"date_smm"-"date_sdd"," user_name "," ;
改后
print1 \j part_name ".pfm(elt)," date_syy"-"date_smm"-"date_sdd "/" time_shh ":"  time_smm "," user_name "," ;
编制日期就没的显示

[ 本帖最后由 wszgr2006 于 2007-7-30 13:08 编辑 ]
作者: sjhxs    时间: 2007-7-30 14:17
原帖由 wszgr2006 于 2007-7-30 12:55 发表
SJHXS大哥,我用你的hu程式单
我有个问题想不明白
改前
print1 \j part_name ".pfm(elt)," date_syy"-"date_smm"-"date_sdd"," user_name "," ;
改后
p ...

  这已经不是本论坛的讨论范畴了.....
作者: wszgr2006    时间: 2007-7-30 17:08
SJHXS大哥,搞了
谢谢了
作者: cwmcwm    时间: 2007-7-31 18:41
1.怎么能够把材料(或是毛胚)的外形的尺寸,输出到后处理中?

2.见图片
作者: tangl    时间: 2007-8-24 18:58
有用的,我过来支持一下!  感谢楼主!
作者: 8989039    时间: 2007-8-25 19:59
你个垃圾。弄个破东西还要钱。全球cimatron用户鄙视你!!
作者: zhoukuan    时间: 2007-8-25 21:48
学习学习
作者: 8989039    时间: 2007-8-29 11:52
真不好意思!是我搞错了。我对我的鲁莽向您道歉。请您不要放在心上,对不起!

其实我是想骂yhsean。
作者: 唏咪群    时间: 2007-8-29 12:10
老大解压密码多少啊?
作者: yhsean    时间: 2007-8-29 12:16
没文化的人不必理会

提供的两个版本

  一个是有偿使用
  一个是无偿使用

To  8989039
要成才先成人,请你尊重你自己。群处理本来是俺2005年底的首创,爱用则用, 不用拉倒。话不多说

感谢  sjhxs  在超蛋网的讲解。关于源代码,记得曾在2006年我就直接上传了 exf 文件(低调了一点,没有文字列示,感觉要占好几楼,请搜索),只不过是单处理而已,有幸看到  sjhxs  兄采用了俺的诸多代码,并加以了改进。他的贡献大家是有目共睹的。


[ 本帖最后由 yhsean 于 2007-8-29 13:22 编辑 ]
作者: 唏咪群    时间: 2007-8-29 12:37
顶起来!顶起来!
作者: 唏咪群    时间: 2007-8-29 14:26
大哥的后处理支持不支持自动换刀功能呀?
作者: Ihatecam    时间: 2007-8-30 14:40
恩  不错的资料
作者: 唏咪群    时间: 2007-8-30 16:26
是Excel程序单的那个呢。NC压缩包的密码。发个给我好吗?
作者: lifuzhi625    时间: 2007-8-31 11:05
我用CIM几年了
但从来没有去研究POST
高手啊
顶!
作者: xbear    时间: 2007-8-31 12:23
我頂這帖子
作者: sou365    时间: 2007-9-3 10:31
支持下,顶了
作者: LSG7890    时间: 2007-9-14 15:04
需然我不是行家,但是sjhxs兄的无私奉献是一定要顶!
作者: LSG7890    时间: 2007-9-14 15:19
有用的,我过来支持一下!  感谢楼主!
作者: xinger540    时间: 2009-2-20 20:10
标题: 顶!
好 ,愿意家个我群讨论下  54543485
作者: tantiduo    时间: 2009-11-21 00:07
希望研究得以成效。
可惜现在已经无从找到SJH所发的那个NC压缩包的密码了。
真后悔我那段时间没来。
作者: 梦比天高    时间: 2009-11-23 11:10
就顶一下吧
作者: liyouhua    时间: 2010-2-5 00:24
按TP名分割怎么修改?




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