三维啦 -vvvla.com
ce-gpp2源代码-三维啦-VVVLA

ce-gpp2源代码

********************************************************

GPP_TITLE "Cimatron 3轴集成群后处理(按刀具自动分割程序,同步输出程序单)根据后处理源代码修改完美版。QQ:897553766 后处理注意:1、选择使用的坐标系输出。2、支持8.5以上版本3、多个相同刀具合并,刀具名不同即可分开后处理";

********************************************************

FORMAT (COORDINATES) ofset Xnew stockx stocky stockz maxz L;
FORMAT (SEQUENCING)  first id K count num ;
FORMAT (CHARACTER) zjj  checkz rorf prtn cnc;
FORMAT (FEED)       outfeed;
FORMAT (USER_1)     CurrSubNum ; 
FORMAT (USER_2)     FlagSpin ;


********************************************************
INTERACTION (USER_1)       "主程序名称"     MainNum     = 100  ;
INTERACTION (BOOLEAN_)     "是否使用行号"        SeqFlag     = TRUE_  ;
INTERACTION (SEQUENCING)    "开始行号 SEQUENC-START"                         SEQ_START;
INTERACTION (SEQUENCING)    "行号增量 SEQUENC-INCR"                          SEQ_INC; 
INTERACTION (SEQUENCING)    "行号最大值 SEQUENC-MAX"                         SEQ_MAX; 
INTERACTION (USER_2)         "机床坐标 Machine system"                       Macsys =54;
INTERACTION (CHARACTER)    "后处理文件后缀名"                                suffix    = "nc" ;
INTERACTION (CHARACTER)    "程序名编号前缀"                                  PNGra       = "" ;
INTERACTION (SEQUENCING)   "程序名起始编号"                                  StNo       =  1  ;
INTERACTION (MULTI_CHOICE)   "工件名称/动模/定模/动模框/定模框/滑块/模脚/分流板/动模型芯/定模型芯/上门板/下门板/上顶板/下顶板/动模背面/定模背面/电极/刻字/滑道电极/热流板/改模/夹具/检具"  PrtName = 1 ;
INTERACTION (MULTI_CHOICE)   "机床系统选项/三菱/法兰克/飞鹤/宝源" cxt= 1 ;
INTERACTION (MULTI_CHOICE)    "加工状态/粗/精/开粗/精加工"    CNCmill = 1 ;
INTERACTION (MULTI_CHOICE)    "输出选择/仅输出程序/仅输出程序单/输出程序和程序单"      mht = 1 ;
INTERACTION (BOOLEAN_)    "程序单是否输出刀号"  toolno     = FALSE_  ;
INTERACTION (MULTI_CHOICE) "原点位置X Y/四面分中/左下角/右下角/左上角/右上角/X分中,Y前单边靠/X分中,Y后单边靠/Y分中,X左单边靠/Y分中,X右单边靠/圆分中"  ZJ = 1 ;
INTERACTION (CHARACTER)    "程式单名称"                                      Program      = "" ;
INTERACTION (CHARACTER)    "公司名称"                                        CoNum        = "" ;
INTERACTION (CHARACTER)    "模具编号"                                        MoldNo       = "" ;
INTERACTION (CHARACTER)    "编程者"                                          Name       = "" ;
INTERACTION (CHARACTER)    "联系号码"                                        TL        = "" ;
INTERACTION (CHARACTER)    "原点位置Z"                                           ZJ1 = ""  ;
INTERACTION (CHARACTER)    "最大外形尺寸X*Y*Z"         XYZ       = "" ;
INTERACTION (CHARACTER)    "最大Z值"                    MZ       = "" ;
INTERACTION (BOOLEAN_)     "仅使用代码G01"        LLIN = FALSE_   ;
INTERACTION (BOOLEAN_)     "是否使用侧机头?"        CJ = FALSE_  ;

********************************************************

MODAL X_CURPOS Y_CURPOS Z_CURPOS A_CURPOS B_CURPOS  RADIUS_;
MODAL X_CURPOS Y_CURPOS Z_CURPOS A_CURPOS B_CURPOS X_CENTER Y_CENTER;
MODAL MOTION_CODE;
MODAL CUTCOM_ON CUTCOM_OFF;
MODAL LIN_MOV CIRC_MOV ;
MODAL MCH_FEED MCH_COOL SPIN_DIR SPIN_SPEED;
MODAL CYC_RETR CYC_PECK CYC_DWELL CYC_XSHFT CYC_YSHFT  Z_CYC_DEPTH Z_CYC_CLEAR;

********************************************************

NEW_LINE_IS $ ;
IF (mht != 2)
   IF (SeqFlag == TRUE_ )
      OUTPUT \J "N" SEQ_NUM ;   
   ELSE 
	 OUTPUT \J ;
   END_IF ;

END_IF; 

********************************************************
   
BEGINNING OF TAPE:
SEQ_NUM=SEQ_START;
num = 0;
IF (mht != 2)
       OUTPUT \J " %" ;
        
END_IF;

********************************************************
BEGINNING OF PROC:
maxz=-9999;
outfeed=0;
      KEEP   PROC_NAME ;
      SET_ON MCH_COOL ;
      CUTCOM_OFF = "" ;
      CUTCOM_ON  = "" ;
      SET_OFF CUTCOM_OFF CUTCOM_ON ;

********************************************************
END OF PROC:
*stockx = PUP_FLOAT1;
*stocky = PUP_FLOAT2;
*stockz = PUP_FLOAT3;
IF ( PROC_NAME _NE_ "POCKET  " )
   IF ( PROC_NAME _NE_ "PROFILE " )
      ofset = PART_OFST ;
   END_IF ;
END_IF;
IF ( PROC_NAME _EQ_ "PROFILE " )
   ofset = CONT_OFST ;
END_IF;
IF ( PROC_NAME _EQ_ "POCKET  " )
   ofset = CONT_OFST ;
END_IF;
IF (mht != 2)
*      OUTPUT $ " ( Z_MIN:"  Z_MIN "  Z_MAX:" Z_MAX" )";
      PRINT0 \J "echo off" ;      
*      PRINT0 \J "echo "TP_NAME""TOOL_NAME" >>"TP_NAME"T.txt" ;
END_IF;
IF ( PART_OFST _GE_ 0.2 _OR_ CONT_OFST _GE_ 0.2)
rorf =" 粗 ";
ELSE
   IF (( PART_OFST _GE_ 0.07 _AN_ PART_OFST _LT_ 0.2)  _OR_  (CONT_OFST _GE_ 0.07 _AN_ CONT_OFST _LT_ 0.2 ))
     rorf ="中";
   ELSE
    rorf ="细";
   END_IF;
END_IF;

IF (CXT ==1 )END_IF;
IF (CXT ==2 )END_IF;
IF (CXT ==3 )END_IF;
IF (CXT ==4 )END_IF;



IF (PrtName ==1 ) prtn = "动模"; END_IF;
IF (PrtName ==2 ) prtn = "定模"; END_IF;
IF (PrtName ==3 ) prtn = "动模框"; END_IF;
IF (PrtName ==4 ) prtn = "定模框";  END_IF;
IF (PrtName ==5 ) prtn = "滑块"; END_IF;
IF (PrtName ==6 ) prtn = "模脚"; END_IF;
IF (PrtName ==7 ) prtn = "分流板"; END_IF;
IF (PrtName ==8 ) prtn = "动模型芯"; END_IF;
IF (PrtName ==9 ) prtn = "定模型芯"; END_IF;
IF (PrtName ==10 ) prtn = "上门板"; END_IF;
IF (PrtName ==11 ) prtn = "下门板"; END_IF;
IF (PrtName ==12 ) prtn = "上顶板"; END_IF;
IF (PrtName ==13 ) prtn = "下顶板"; END_IF;
IF (PrtName ==14 ) prtn = "动模背面"; END_IF;
IF (PrtName ==15 ) prtn = "定模背面"; END_IF;
IF (PrtName ==16) prtn = "电极"; END_IF;
IF (PrtName ==17 ) prtn = "刻字"; END_IF;
IF (PrtName ==18) prtn = "滑道电极"; END_IF;
IF (PrtName ==19 ) prtn = "热流板"; END_IF;
IF (PrtName ==20 ) prtn = "改模"; END_IF;
IF (PrtName ==21 ) prtn = "夹具"; END_IF;
IF (PrtName ==22 ) prtn = "检具"; END_IF;

IF (CNCmill ==1 ) cnc = "粗"; END_IF;
IF (CNCmill ==2 ) cnc = "精"; END_IF;
IF (CNCmill ==3 ) cnc = "开粗"; END_IF;
IF (CNCmill ==4 ) cnc = "精加工";  END_IF;

IF (ZJ ==1 ) zjj = "四面分中"; END_IF;
IF (ZJ ==2 ) zjj = "左下角"; END_IF;
IF (ZJ ==3 ) zjj = "右下角"; END_IF;
IF (ZJ ==4 ) zjj = "左上角";  END_IF;
IF (ZJ ==5 ) zjj = "右上角"; END_IF;
IF (ZJ ==6 ) zjj = "X分中,Y前单边靠"; END_IF;
IF (ZJ ==7 ) zjj = "X分中,Y后单边靠"; END_IF;
IF (ZJ ==8 ) zjj = "Y分中,X左单边靠"; END_IF;
IF (ZJ ==9 ) zjj = "Y分中,X右单边靠"; END_IF;
IF (ZJ ==10 ) zjj = "圆分中"; END_IF;

*IF (ZJ1 ==1 ) checkz = "ZJ1"; END_IF;
*IF (ZJ1 ==2 ) checkz = "底为零"; END_IF;
*IF (ZJ1 ==3 ) checkz = "顶抬 (       )为零"; END_IF;
*IF (ZJ1 ==4 ) checkz = "底抬(       )为零"; END_IF;
*IF (ZJ1 ==5 ) checkz = "底抬(       )为零"; END_IF;
*IF (ZJ1 ==6 ) checkz = "如图所示"; END_IF;

*  L =  CLEAR_LENG +SHANK_TOT;

IF (mht >= 2)      
   IF (PROC_CNT == 1)
   
PRINT2 \J  "<HTML>";
PRINT2 \J  "<head>";
PRINT2 \J  "<title> 吖哥 提供 QQ:897553766 </title>";
PRINT2 \J  "</head>";
PRINT2 \J  "<body>";
PRINT2 \J  "<div align=center>";
PRINT2 \J  "<font size=5>"Program"</font><table border=1 width=699 cellspacing=0  cellpadding=6 id=table1 style=border-collapse:collapse height=205> ";
PRINT2 \J  "	<tr>";
IF (ZJ ==4 )
PRINT2 \J  "		<td width=20><input type=checkbox name=C10 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C10 value=ON></td>";
END_IF;
PRINT2 \J  "		<td width=300>";
IF (ZJ ==1 _OR_ ZJ ==7 _OR_ ZJ ==8 _OR_ ZJ ==9 )
PRINT2 \J  "		<p align=center><input type=checkbox name=C15 value=ON checked></td>";
ELSE
PRINT2 \J  "		<p align=center><input type=checkbox name=C15 value=ON></td>";
END_IF;
IF (ZJ ==5 )
PRINT2 \J  "		<td width=20><input type=checkbox name=C9 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C9 value=ON></td>";
END_IF;
PRINT2 \J  "		<td rowspan=3 width=0>";
PRINT2 \J  "		<table border=0 cellpadding=0 cellspacing=0 width=100% height=100%>";
PRINT2 \J  "			<!-- MSTableType=layout -->";
PRINT2 \J  "			<tr>";
PRINT2 \J  "				<td valign=middle align=center height=100% width=100%>";
PRINT2 \J  "				<!-- MSCellType=ContentBody -->";
PRINT2 \J  "				<table border=1 width=300 style=border-collapse:collapse height=266>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>名称</td>";
PRINT2 \J  "						<td colspan=2>";
PRINT2 \J  "						<p align=center>"CoNum"</td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>数量</td>";
PRINT2 \J  "						<td colspan=2>"MoldNo"</td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>工件</td>";
PRINT2 \J  "						<td colspan=2>"prtn"</td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>NC文路径</td>";
PRINT2 \J  "						<td colspan=2>"OUTPUT_DIR""PART_NAME"\</td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>档案路径</td>";
PRINT2 \J  "						<td colspan=2><font size=2>"PART_PATH"\</td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>原点定位</td>";
PRINT2 \J  "						<td width=122><span style=font-size:11pt><font color=red>"zjj"</span></td>";
PRINT2 \J  "						<td width=101><font style=font-size:11pt><font color=red>"ZJ1"</font></td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "					<tr>";
PRINT2 \J  "						<td width=66>最大Z值</td>";
PRINT2 \J  "						<td width=122><span style=font-size:11pt><font face=Mistral font size=3 >Z="MZ"</font></span></td>";
PRINT2 \J  "						<td width=101><font style=font-size:11pt>"cnc"</font></td>";
PRINT2 \J  "					</tr>";
PRINT2 \J  "				</table>";
PRINT2 \J  "				</td>";
PRINT2 \J  "			</tr>";
PRINT2 \J  "		</table>";
PRINT2 \J  "		</td>";
PRINT2 \J  "	</tr>";
PRINT2 \J  "	<tr>";
IF (ZJ ==1 _OR_ ZJ ==6 _OR_ ZJ==7 _OR_ ZJ==8)
PRINT2 \J  "		<td width=20><input type=checkbox name=C14 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C14 value=ON></td>";
END_IF;
PRINT2 \J  "		<td width=300>";
PRINT2 \J  "		<img border=0 src=.\"PART_NAME".jpg width=300 height=200></td>";
IF (ZJ ==1 _OR_ ZJ ==6 _OR_ ZJ==7 _OR_ ZJ==9)
PRINT2 \J  "		<td width=20><input type=checkbox name=C13 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C13 value=ON></td>";
END_IF;
PRINT2 \J  "	</tr>";
PRINT2 \J  "	<tr>";
IF (ZJ ==2)
PRINT2 \J  "		<td width=20><input type=checkbox name=C11 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C11 value=ON></td>";
END_IF;
PRINT2 \J  "		<td width=300>";
IF (ZJ ==1 _OR_ ZJ ==6 _OR_ ZJ ==8 _OR_ ZJ==9)
PRINT2 \J  "		<p align=center><input type=checkbox name=C16 value=ON checked></td>";
ELSE
PRINT2 \J  "		<p align=center><input type=checkbox name=C16 value=ON></td>";
END_IF;
IF (ZJ ==3)
PRINT2 \J  "		<td width=20><input type=checkbox name=C12 value=ON checked></td>";
ELSE
PRINT2 \J  "		<td width=20><input type=checkbox name=C12 value=ON></td>";
END_IF;
PRINT2 \J  "	</tr>";
PRINT2 \J  "</table>";

      PRINT2 \J  "<table border=1 width=700 cellspacing=0 cellpadding=2 id=table2  ";
      PRINT2    "style=border-collapse:collapse>";
      PRINT2 \J  "</TR>";
      IF (toolno _EQ_ FALSE_) 
      PRINT2 \J  "<td width=45 align=center rowspan=2>编号</td> ";
      ELSE      
      PRINT2 \J  "<td width=45 align=center><font size=2>编 号</td>  ";
      END_IF;
      PRINT2 \J  "<td width=90 align=center rowspan=2>刀名</td>";
*      *PRINT2 \J  "<td width=45 align=center rowspan=2>直径</td>";
*      *PRINT2 \J  "<td width=45 align=center rowspan=2>R角</td>";
      PRINT2 \J  "<td width=45 align=center rowspan=2>余量</td>";
      PRINT2 \J  "<td width=50 align=center><font size=2>降 层</td>";
      PRINT2 \J  "<td width=70 align=center><font size=2>Max_Z</td>";
      PRINT2 \J  "<td width=75 align=center><font size=2>粗略时间</td>";
      PRINT2 \J  "<td align=center width=30 ><font size=2>Spin</td>";
      PRINT2 \J  "<td width=60 align=center rowspan=2>夹头或加长杆</td>";
      PRINT2 \J  "<td width=60 align=center rowspan=2>刀长</td>";
      PRINT2 \J  "<td align=center rowspan=2>注 解</td>";
      PRINT2 \J  "</TR>";
      PRINT2 \J  "<TR>";
      IF (toolno _NE_ FALSE_) 
      PRINT2 \J  "<td width=45 align=center><font size=2>刀 号</td>";
      END_IF;
      PRINT2 \J  "<td width=50 align=center><font size=2>间 距</td>";
      PRINT2 \J  "<td width=70 align=center><font size=2>Min_Z</td>";
      PRINT2 \J  "<td width=75 align=center><font size=2>加工粗细</td>";
      PRINT2 \J  "<td align=center width=30 ><font size=2>Feed</td>";
      PRINT2 \J  "</TR>";
      PRINT2 \J  "<TR>";
   END_IF;
     IF (num < 1)
          IF (toolno _EQ_ FALSE_) 
          PRINT2 \J  "<td width=45 align=center rowspan=2>"PNGra""K"</td> ";
          ELSE
          PRINT2 \J  "<td width=45 align=left><font size=2>"PNGra""K"</td>  ";
          END_IF ;

         PRINT2 \J  "<td width=90 align=center rowspan=2>"TOOL_NAME"</td> ";  
*         *PRINT2 \J  "<td width=45 align=center rowspan=2>"DIAMETER_ "</td> ";
*         *PRINT2 \J  "<td width=45 align=center rowspan=2>"TOOL_RAD"</td> ";  
         PRINT2 \J  "<td width=45 align=center rowspan=2>"ofset" </TD>";
         PRINT2 \J  "<td width=50 align=center ><font size=2>"DOWN_STEP"</td>";
         PRINT2 \J  "<td width=70 align=center ><font size=2 font color=blue>"maxz"</td>";
         PRINT2 \J  "<td width=75 align=center ><font size=2>"TOTAL_TIME"";
         PRINT2 \J  "<td align=center width=30 ><font size=2 font color=red>"SPIN_SPEED"</td>";

         IF (HOLD_TOP01 _GT_ 100)
         PRINT2 \J  "<td width=60 align=center rowspan=2>" "</td>";
         ELSE
         PRINT2 \J  "<td width=60 align=center rowspan=2>"HOLD_TOP01"</td>";
         END_IF ;
         PRINT2 \J  "<td width=60 align=center rowspan=2>"CLEAR_LENG"</td>";

         IF (PROC_COMMENT _EQ_ "No Text" )
         PRINT2 \J  "<td align=center rowspan=2>" "</td>";
         ELSE
         PRINT2 \J  "<td align=center rowspan=2>"PROC_COMMENT "</td>";
         END_IF ;
         PRINT2 \J  "</TR>";
         PRINT2 \J  "<TR>";
         IF (toolno _NE_ FALSE_) 
         PRINT2 \J  "<td width=45 align=right><font size=2>T"TOOL_NUM"</td>";
         END_IF;

        PRINT2 \J  "<td width=50 align=center ><font size=2>"SIDE_STEP"</td>";

        PRINT2 \J  "<td width=70 align=center ><font size=2>"Z_MIN"</td>";
        PRINT2 \J  "<td width=75 align=center ><font size=2>"rorf"</td>";
        PRINT2 \J  "<td align=center width=30 ><font size=2>"outfeed"</td>";

      PRINT2 \J  "</TR>";
    END_IF;
num = num + 1 ;
END_IF;

********************************************************
END OF TAPE:beforecut:

********************************************************
   
END OF TAPE:
IF (mht != 2)
      OUTPUT $ " M05";
      OUTPUT $ " M09";
      OUTPUT $ " G91 G28 Z0" ;
*      OUTPUT $ " G5.1Q0";
      OUTPUT $ " M30";
      OUTPUT \J " %";
END_IF;

   
      PRINT0 \J "@ECHO OFF" ;
      PRINT0 \J "MD \NC\" PART_NAME ; 
      PRINT0 \J "MOVE *.nc \NC\" PART_NAME ;

********************************************************
END OF FILE:
IF (mht >= 2)
      PRINT2 \J  "<table border=1 width=700 cellspacing=0 cellpadding=2 " ;
      PRINT2    "id=table3 style=border-collapse:collapse>" ;
      PRINT2 \J  "<tr>" ;
      PRINT2 \J  "<td rowspan=2 width=73 align=center>操作者及上机时间</td>";
      PRINT2 \J  "<td rowspan=2 width=189 colspan=2> </td>";
      PRINT2 \J  "<td rowspan=2 width=75>";
      PRINT2 \J  "<p align=center>最大外形尺寸</td>";
      PRINT2 \J  "<td width=200 align=center >X*Y*Z</td>";
      PRINT2 \J  "<td width=114 align=center>加工参考时间</td>" ;
      PRINT2 \J  "</tr>";
      PRINT2 \J  "<tr>";
      PRINT2 \J  "<td width=200 align=center >"XYZ"</td>";
      PRINT2 \J "<td width=114 align=center>";
      PRINT2   "<font size=2>"TOTAL_TIME" ";
      PRINT2 \J  "</tr>";
      PRINT2 \J  "<tr>";
      PRINT2 \J  "<td rowspan=2 width=73>";
      PRINT2 \J  "<p align=center >操作者及下机时间</td>";
      PRINT2 \J  "<td rowspan=2 width=189 colspan=2> </td>";
      PRINT2 \J  "<td width=75 align=center>编程者</td>" ;
      PRINT2 \J  "<td>" ;
      PRINT2 \J   "<p align=center><font face=吖文行楷 ";
      PRINT2     "font size=5 font color=blue>"Name"</td>" ;
      PRINT2 \J  "<td width=114 align=center>日&nbsp;&nbsp;&nbsp; 期</td>" ;
      PRINT2 \J  "</tr>";
      PRINT2 \J  "<tr>";
      PRINT2 \J  "<td width=75 align=center>联系号码</td>" ;
      PRINT2 \J  "<td>" ;
      PRINT2 \J   "<p align=center><font face=吖文行楷 ";
      PRINT2     "font size=5 font>"TL"</td>" ;
      PRINT2 \J "<td width=114 align=center>";
      PRINT2   "<font size=2>"DATE_SYY"/"DATE_SMM"/"DATE_SDD" ";

    PRINT3 \J   "@echo off";
      PRINT3 \J   "for /f "DBL_QUOTE"tokens=1,2,* "DBL_QUOTE" %%i in ('REG QUERY  "DBL_QUOTE"HKLM\SOFTWARE\Cimatron\Cimatron E\8.5"DBL_QUOTE" ^|find "DBL_QUOTE"LocalDataDir"DBL_QUOTE" ') DO set pt=%%k";
      PRINT3 \J   "setlocal EnableDelayedExpansion";
      PRINT3 \J   "for /f "DBL_QUOTE"delims="DBL_QUOTE" %%a in ('dir /a-a /b %pt%\NC\Report_Images') do (";
      PRINT3 \J   "                                                                    set name=%%a";
      PRINT3 \J   "                                                                    set name=!name:-=_!";
      PRINT3 \J   "                                                                    set name=!name:#=_!";
      PRINT3 \J   "                                                                    set name=!name: =_!";
      PRINT3 \J   "                                                                    ren %pt%\NC\Report_Images\"DBL_QUOTE"%%a"DBL_QUOTE" "DBL_QUOTE"!name!"DBL_QUOTE"";
      PRINT3 \J   ")";
      PRINT4 \J   "REN *.jpg "PART_NAME".jpg >NUL";
     
*     PRINT3 \J   "COPY %pt%"OUTPUT_DIR"Report_Images\"PART_NAME"\NcReportGeneralImage@ISO.jpg \"PART_NAME">NUL";
*      PRINT3 \J   "RD /s /q  %pt%"OUTPUT_DIR"\Report_Images\"PART_NAME" >NUL";
END_IF;




*      IF (mht != 2)
       PRINT4 \J   "REN *.p01 P01.bat >NUL";
       PRINT4 \J   "REN Print0.txt A.bat >NUL";
       PRINT4 \J   "CALL P01.bat >NUL";
       PRINT4 \J   "CALL A.bat >NUL"; 
*      END_IF;

      IF (mht != 1)
      PRINT4 \J   "REN *.p03 p03.bat >NUL";
      PRINT4 \J   "REN *.p02 "PART_NAME".htm >NUL";
      PRINT4 \J   "call p03.bat>NUL";
      PRINT4 \J   "MOVE "PART_NAME".htm \NC\"PART_NAME">NUL";
      PRINT4 \J   "MOVE "PART_NAME".jpg \NC\"PART_NAME">NUL";

      PRINT4 \J   "DEL /q *.P01 *.P02 *.P03 *P04 *.P05 *.P06 *.P07 *.P08 *.P09 *.P10 >NUL";
      PRINT4 \J   "DEL /q  p02.bat p03.bat p04.bat *.xml *.GPP2  *.msg >NUL";
      ELSE
      PRINT4 \J   "DEL /q *.P01 *.P02 *.P03 *P04 *.P05 *.P06 *.P07 *.P08 *.P09 *.P10 >NUL";
      PRINT4 \J   "DEL /q *."POST_NAME" p03.bat p04.bat *.xml *.GPP2 *.msg >NUL";
      END_IF;
      
 
********************************************************

CUTTER COMPENSATION:
      KEEP  CUTCOM_ON ;

CUTTER COMPENSATION: coff:
      KEEP  CUTCOM_OFF ;

********************************************************

TOOL CHANGE: first: 

id =0 ; K=StNo;

      SET_ON  SPIN_SPEED SPIN_DIR ;
PRINT0 \j " ren " PART_NAME "." TP_NAME "." POST_NAME " " PART_NAME ".*." POST_NAME "._0 " ;      
PRINT0 \j "for /L %%a in (01,1,101) do ";
PRINT0 "if not exist \nc\" PART_NAME "\%%a_*.NC ";
PRINT0  " move/y " PART_NAME ".*." POST_NAME "._0 " " \nc\" PART_NAME "\"PNGra""K"."suffix" >nul " ; 


      

        
TOOL CHANGE: 
id=id+1 ;K=K+1 ;

       SET_ON  SPIN_SPEED SPIN_DIR ;
      OUTPUT $ " M05";
      OUTPUT $ " M09";
      OUTPUT $ " G91 G28 Z0" ;
      OUTPUT $ " G5.1Q0";
      OUTPUT $ " M30";
      OUTPUT \J " %";

       CUT_FILE = TRUE_; 

PRINT0 \j "for /L %%a in (01,1,101) do ";
PRINT0 "if not exist \nc\" PART_NAME "\%%a_*.NC ";
IF (ID < 10 )
PRINT0  " move/y " PART_NAME ".*." POST_NAME "._0"ID  " \nc\" PART_NAME "\"PNGra""K"."suffix" >nul " ; 
 ELSE
PRINT0  " move/y " PART_NAME ".*." POST_NAME "._"ID  " \nc\" PART_NAME "\"PNGra""K"."suffix" >nul " ; 
END_IF;

      

      
TOOL CHANGE: last: 
id=id+1 ;K=K+1 ;

       SET_ON  SPIN_SPEED SPIN_DIR ; 
      OUTPUT $ " M05";
      OUTPUT $ " M09";
      OUTPUT $ " G91 G28 Z0" ;
      OUTPUT $ " G5.1Q0";
      OUTPUT $ " M30";
      OUTPUT \J " %";
       
      CUT_FILE = TRUE_;
      


PRINT0 \j "for /L %%a in (01,1,101) do ";
PRINT0 "if not exist \nc\" PART_NAME "\%%a_*.NC ";
IF (ID < 10 )
PRINT0  " move/y " PART_NAME ".*." POST_NAME "._0"ID  " \nc\" PART_NAME "\"PNGra""K"."suffix" >nul " ; 
 ELSE
PRINT0  " move/y " PART_NAME ".*." POST_NAME "._"ID  " \nc\" PART_NAME "\"PNGra""K"."suffix" >nul " ; 
END_IF;

********************************************************

LINEAR MOTION: fast:
Xnew=(-1)*X_CURPOS;
IF (mht != 2)
      FlagSpin = FALSE_ ;
      IF_SET (SPIN_SPEED) FlagSpin = TRUE_ ; END_IF ;
      IF_SET (SPIN_DIR)   FlagSpin = TRUE_ ; END_IF ;
      IF(FlagSpin _EQ_ TRUE_)
         SET_ON SPIN_SPEED SPIN_DIR ;
         SET_ON X_CURPOS Y_CURPOS ;
              
       
         IF (cxt == 2)
OUTPUT $ "   O1100 "  ; 
         OUTPUT $ " ( TOOL = " TOOL_NAME "  D = "DIAMETER_ " R = "TOOL_RAD  " )";
                  
      OUTPUT $ " G90 G80 G00 G17 G40  G"MacSys ""  ; 
      OUTPUT $ "  G5.1Q1 "  ; 
      END_IF ;
     IF (cxt == 1)
OUTPUT $ "  O1100 "  ; 
       OUTPUT $ " ( TOOL = " TOOL_NAME "  D = "DIAMETER_ " R = "TOOL_RAD  " )";
               
      OUTPUT $ " G90 G80 G00 G17 G40  G"MacSys ""  ; 
      END_IF ;
      IF (cxt == 4)
OUTPUT $ "  O1100 "  ; 
       OUTPUT $ " ( TOOL = " TOOL_NAME "  D = "DIAMETER_ " R = "TOOL_RAD  " )";
                
      OUTPUT $ " G90 G80 G00 G17 G40  G"MacSys ""  ; 
       END_IF ;
               IF (cxt == 3)
OUTPUT $ "  O1100 "  ; 
         OUTPUT $ " ( TOOL = " TOOL_NAME "  D = "DIAMETER_ " R = "TOOL_RAD  " )";
                  
      OUTPUT $ " G90 G80 G00 G17 G40  G"MacSys ""  ; 
      OUTPUT $ "  G5.1Q1 "  ; 
      END_IF ;

        IF_SET (SPIN_SPEED) OUTPUT $ " S"SPIN_SPEED ; END_IF;
        IF_SET (SPIN_DIR) OUTPUT       " " SPIN_DIR ; END_IF;
        OUTPUT $ " X" X_CURPOS " Y" Y_CURPOS ;
      END_IF ;

      OUTPUT $ ;
        IF_SET (MOTION_CODE) OUTPUT " "MOTION_CODE ; END_IF;
      IF (CJ == TRUE_) 
        IF_SET (X_CURPOS) OUTPUT " Z" Xnew   ; END_IF ;
        IF_SET (Y_CURPOS) OUTPUT " Y" Y_CURPOS ; END_IF ; 
        IF_SET (Z_CURPOS) OUTPUT " X" Z_CURPOS ; END_IF ;
      ELSE
        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 ;
      END_IF;
        IF_SET (MCH_COOL) OUTPUT  " " MCH_COOL ; END_IF ;
      SET_ON MCH_FEED ;  
      SET_ON CIRC_MOV ; 
END_IF;

LINEAR MOTION:
IF(outfeed < MCH_FEED)
   outfeed=MCH_FEED;
END_IF;
Xnew=(-1)*X_CURPOS;
IF (mht != 2)
        IF_SET (SPIN_SPEED) OUTPUT $ " S"SPIN_SPEED ; END_IF;
        IF_SET (SPIN_DIR) OUTPUT       " " SPIN_DIR ; END_IF;
      OUTPUT $;
        IF_SET (MOTION_CODE) OUTPUT " "MOTION_CODE ; END_IF; 
        IF_SET (CUTCOM_ON)  OUTPUT " "  CUTCOM_ON " D" TOOL_NUM ; END_IF ; 
        IF_SET (CUTCOM_OFF) OUTPUT " "  CUTCOM_OFF ; END_IF ;  
      IF (CJ == TRUE_)
        IF_SET (X_CURPOS)   OUTPUT " Z" Xnew   ; END_IF ;
        IF_SET (Y_CURPOS)   OUTPUT " Y" Y_CURPOS   ; END_IF ; 
        IF_SET (Z_CURPOS)   OUTPUT " X" Z_CURPOS   ; END_IF ;
      ELSE
        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 ;
      END_IF ;
        IF_SET (MCH_FEED)   OUTPUT " F" MCH_FEED   ; END_IF ; 
        IF_SET (MCH_COOL)   OUTPUT \J " " MCH_COOL   ; END_IF ;
      SET_ON CIRC_MOV ;
END_IF;
        IF (maxz < Z_CURPOS) maxz = Z_CURPOS ; END_IF;
CIRCULAR MOTION:
IF (mht != 2)
        IF_SET (SPIN_SPEED) OUTPUT $ " S"SPIN_SPEED ; END_IF;
        IF_SET (SPIN_DIR) OUTPUT    " "    SPIN_DIR ; END_IF;
      	OUTPUT $;
	IF_SET (MOTION_CODE)	    OUTPUT	MOTION_CODE		" " ;	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 ;
				OUTPUT	"I" X_CENTER	" " ;	
   			    OUTPUT	"J" Y_CENTER	" " ;	



 
        IF_SET (MCH_FEED)         OUTPUT " F" MCH_FEED   ; END_IF ; 
        IF_SET (MCH_COOL)      OUTPUT \J " " MCH_COOL   ; END_IF ;
      SET_ON LIN_MOV ;
      SET_ON CIRC_MOV ;
END_IF;  
CYCLE:
IF (mht != 2)
    IF (QUALIFIER_NAME == "on" || QUALIFIER_NAME == "toinit")
		SET_ON  X_CURPOS Y_CURPOS A_CURPOS B_CURPOS Z_CYC_DEPTH Z_CYC_CLEAR MCH_FEED;
	END_IF;								
	
	OUTPUT $;
	IF_SET (CYC_RETR)		OUTPUT	CYC_RETR " ";			END_IF;
	IF_SET (MOTION_CODE)	OUTPUT	MOTION_CODE " ";		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_CYC_DEPTH)	OUTPUT "Z"	Z_CYC_DEPTH " ";	END_IF;	
	IF_SET (Z_CYC_CLEAR)	OUTPUT "R"	Z_CYC_CLEAR " ";	END_IF;
	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;
	IF_SET (MCH_FEED)		OUTPUT "F"	MCH_FEED " ";    	END_IF;

      SET_ON LIN_MOV ;
      SET_ON CIRC_MOV ;
END_IF;
CYCLE: off:
IF (mht != 2)
      OUTPUT $ " G80 Z" Z_CYC_DZINIT;
END_IF;
********************************************************
ORIGIN CHANGE:

    IF (LLIN == TRUE_)
      ARCS_CTRL_BYPLANE = DEF_NONE ;
    ELSE
      IF (CJ == TRUE_) 
        ARCS_CTRL_BYPLANE = DEF_NONE ;
      END_IF ;
    END_IF ;

*    IF (Sub == FALSE_)
    SUBS_CTRL_BYPLANE = DEF_NONE;
*    END_IF;
SUBROUTINE CALL: 
*
*      CurrSubNum = SUB_NUMBER + StartSubNum ; 
*      OUTPUT $ " M98 P" CurrSubNum  ; 
 
BEGINNING OF SUB: 
*
*      CurrSubNum = SUB_NUMBER + StartSubNum ;
*      SET_ON  MCH_FEED MCH_COOL LIN_MOV CIRC_MOV ; 
*      IF (Sub == TRUE_) 
*      OUTPUT \J " " ; 
*	  OUTPUT \J "O" CurrSubNum ; 
*      ELSE 
*	  OUTPUT \J " O" CurrSubNum ; 
*      END_IF ; 
 
END OF SUB: 
*      OUTPUT $  " M99" ; 
*      Sub = FALSE_ ; 
 
SUBROUTINE RETURN: 
      SET_ON LIN_MOV CIRC_MOV X_CURPOS Y_CURPOS Z_CURPOS;
 
********************************************************
     
POST SCRIPT:
   SYSTEM_CALL "REN *.p04 p04.bat";
   SYSTEM_CALL "call p04.bat";

    SYSTEM_CALL "CALL A.bat";

   SYSTEM_CALL "DEL a.bat ";