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>日 期</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 ";