print0 \move/y \part_name \tp_name \post_name \\\nc\\\part_name \tp_name \nc \;
条件1:如果指定的文件夹中有\数字-路径程式名.NC\的文件与新命名的文件名称相同,就覆盖之。 例:假定指定的文件夹中也有1-OK.NC,新命名的文件也为1-OK.NC,那么就覆盖。若新命名的结果可能是1-NO.NC,则转到条件2来判断!
条件2:如果指定的文件夹没有\数字*.NC\的文件,就移动NC文件并改名为\数字-路径程式名.NC\的文件。这里的\数字-路径程式名\是动态且同步判断的!
例:假定指定的文件夹中不存在1-*.NC,同时有需命名的NC文件,就命名为1-*.NC 如果存在,则继续判断有无2-*.NC、3-*.NC...没有则命名之.依次类推!
CMD文件内容参考: @echo off
ren print0.txt print0.bat del print*.*
echo 程式处理完毕!
题外话:数字顺序批量改名文件就是根据上面原理制作:(以批量改名*.nc文件为例) @echo off
for /l %%a in (1,1,50) do (if not exist %%a.tmp if exist *.nc ren *.nc %%a.tmp) ren *.tmp *.nc echo 改名结束!
3: 文件分割
我们有时希望一次性能把程式中所有的后处理搞定,虽然用SET_ON CUT_FILE也可以替我们分割文件,但对在同路径下分离不同的刀具,就有点困难了,这里介绍一种用标记来分割文件的方式:
在EXF文件的后续换刀区块及文件尾写入: TOOL CHANGE: *--先写程序尾内容 output \\j \M05 \ output \\j \M30 \ output \\j \% \*--输出分割标记 output \\j \*--再写程序头内容 output \\j \% \
output \\j \G90 G00 G17 G40 G54 \ ... ... ....
TOOL CHANGE: LAST: 同上
END OF TAPE: ... ... ... output \\j \
print0.txt中的内容参考(作用:改NC文件名为hu.txt,便于CMD文件处理) print0 \\j \off\;
print0 \\j \\part_name \tp_name \post_name \hu.txt \;
*.P01中的内容参考(作用:处理分离后的文件,重新整理并移动到指点文件夹) print1 \\j \off\;
print1 \\j \*.tmp ??-\tp_name \\;
print1 \\j \not exist \\nc\\\part_name \>nul md \\nc\\\part_name \>nul\; print1 \\j \*.nc \\nc\\\part_name \>nul \;
CMD文件参考:关键在于文件处理与程序的分割命名,这里还要用到FOR语句... ::注意!如果程式较多,可修改25值为更大。 @echo off
ren print0.txt print0.bat&&ren *.p01 print1.bat call print0
for /f \delims=,\%%a in (hu.txt) do (if \neq \(echo %%a>>hu.nc)else for /l %%b in (1,1,25) do (if not exist %%b.tmp if exist hu.nc ren hu.nc %%b.tmp)) call print1
del print0.bat&del print00.txt&del print1.bat&del hu.txt echo 全部程式处理完毕!
改前两文件为批处理文件,呼print0改程式名为hu.txt,然后搜索hu.txt文件每行内容,如果不出现CUT标记,则将该内容定向到hu.nc文件中,一但出现,就将hu.nc改名为1-25中没有出现的\数字.tmp\文件!为避免无谓的空循环,后续循环语句中嵌套多重条件语句。处理完后呼叫print1进行改名并移动到指定文件夹。
4:提醒设置(这里需要启动信使服务)
1) 公差过大提醒(这种方法以前的文章有涉及) BEGINNING OF PROC: IF_SET(PART_TOL _GT_ 0.05)
PRINT? \\J \SEND %COMPUTERNAME% 工件计算公差大于0.05 \ END_IF;
2) 刀具长度提示
实际需要计算程式的起始到最深点距离(具体方法以前的文章有涉及),然后与刀具长度比较,大于刀长则提醒之。这里的刀长也需要约定,偶一般用5倍的刀径作为判断标准!其过程就不再列举了....
5: 程序单与NC代码同步输出
有那么多的PRINT?文件够你折腾,如果你的系统够“牛”,你就继续玩下去吧.....偶就不再奉陪到底了!!
以下是引用uqca在2006-12-29 19:28:00的发言:
这个后处理走圆弧是用I J格式的,机床不接受I J格式.只能用后处理走圆弧用半径R格式的.那位大侠有这种格式的后处理.麻烦版主帮忙改一下。小的感激不尽。
偶提供的只要按图操作即可选择园弧输出方式X、Y、I、J或X、Y、R 此主题相关图片如下:
后处理参数改不了!程式名也不能自己命名的!请问要怎样改?多谢了!
本后处理由于已经启动了自动命名及文件组装机制,即后处理的生成位置名称已固定为\\NC\\工件名\\数字&路径.NC,所以参数不能改,否则将丢失程序头及注释内容.你所能决定的只能是文件生成的分区!如果你非要修改,只要按主菜单-NC-DFPOST-后处理名-OUTPUT FILES-RUN SCRIPT FILE AFTER POST-YES改NO即可.但绝对不适合本后处理!
以下是引用ww7525在2007-1-11 17:23:00的发言:
16楼老大如何解决机床最大行号大于99999以后行号又从新开始的问题多谢了
NEW_LINE_IS $ ;
IF_SET (FlagSeq _EQ_ NO) OUTPUT \\J ; ELSE
IF_SET (FlagSub _EQ_ NO) OUTPUT \\J \ Seq = Seq + SeqIncr ;
IF_SET (Seq _EQ_ 99999) Seq = SeqStart ; END_IF ;
ELSE
OUTPUT \\J \
SubSeq = SubSeq + SeqIncr ; END_IF ; END_IF ;
版大能不能教我怎么把圆弧输出的 I.J改成R格式的,真的很需要谢谢 将原:
IF_SET (DXcenter _NE_ 0.0) OUTPUT \I\DXcenter ; END_IF ; IF_SET (DYcenter _NE_ 0.0) OUTPUT \J\DYcenter ; END_IF ;
改为:
IF_SET (ARC_ANG _LT_ 0.0) ARC_ANG = 0.0 - ARC_ANG ; END_IF ; IF_SET (ARC_ANG _EQ_ 360.0) ARC_ANG = 0.0 ; END_IF ; IF_SET (ARC_ANG _LE_ 180.0) OUTPUT \R\RADIUS_ ; ELSE
OUTPUT \R-\RADIUS_ ; END_IF ;
感谢sjhxs老大,你真的是太牛了,小弟还有一点不明白OUTPUT \R-\RADIUS_ ; 是输出负R的意思吗,不是有G2G3吗,程序处理出来也没有负R,不知道是不是那个意思,还请老大指点
无论是G02还是G03,因为 通过2点及半径可以绘制出两个园,所以必须通过输出R与负R来区别,即当弧度张角小于等于180度时输出正R,而大于180度时输出负R。否则...有一天,你就准备抹眼泪吧...........
如图所示:R与负R输出的轨迹区别 此主题相关图片如下:
sjhxs老大 程序头这样的应该 怎么 改后 处理 是 SM802D的系统
%_N_H_MPF H 代表 名字 随便什么 字母 都 可以 G54 G64 G90 G17
sjhxs老大 程序头这样的应该 怎么 改后 处理 是 SM802D的系统
%_N_H_MPF H 代表 名字 随便什么 字母 都 可以 G54 G64 G90 G17
建议先翻前面的帖子查看。 你的程序头可写在下面区块下