destiny0515 发表于 2020-7-9 20:03:41

[后处理下载][案例分析]按组批处理并生成主程序调用子程序

本帖最后由 destiny0515 于 2020-7-9 20:05 编辑

上期分享了以工序为单位批处理的思路:
后处理中的实用技巧——以工序(OPERATION)为单位的批处理http://www.ugsnx.com/thread-288149-1-1.html(出处: UG爱好者)
只需简单几个步骤,实现主程序对子程序的调用,输出M98PXXXXhttp://www.ugsnx.com/thread-288190-1-1.html(出处: UG爱好者)
蜗牛很高兴,收到了很多的反馈,其中有非常多的声音在问能否按组输出——
当然是可以的
实际上构造器是包含这样的功能 不过也因种种原因,许多人不喜欢这种方式
本文以一个新的角度解析,如何以程序组为单位生成子程序,并通过主程序调用
思路分析既然要按组输出,那么有两个过程是要重点关注的——MOM_start_of_groupMOM_end_of_group见名知意,它们参与了组的开始与结束。这两个过程必须要经过一番修改才能符合题目的需求。不过问题来了,PB(PostBuilder)不直接提供它们的修改方式。怎么解决呢?不妨将思路展开一点途径一.可以直接改写后处理的tcl文件,缺点很明显,后期无法再用PB维护。途径二.改写ugpost_base.tcl文件,比第一种方法还要笨重。途径三.写外部脚本,覆盖原有的过程。经过对比发现,途径三虽然会多一个脚本文件,但是灵活性和稳定性是最高的。
动手实践PB中提供外部脚本的功能勾选选框需要手动建立脚本文件,输入代码proc MOM_start_of_group {} {

global mom_group_name group_level mom_sys_output_file_suffix
global mom_sequence_number mom_sequence_increment mom_sequence_frequency
global pb_start_of_program_flag ptp_file_name
global group_list mom_output_file_directory

   if { ! } {
      set group_level 0
          MOM_close_output_file $ptp_file_name
      return
   }


   if { } {
      incr group_level
   } else {
      set group_level 1
   }

   if { $group_level > 1 } {
      return
   }

   lappend group_list $mom_group_name
   
   SEQNO_RESET ; #<4133654>
   MOM_reset_sequence $mom_sequence_number $mom_sequence_increment $mom_sequence_frequency

      MOM_start_of_program
      MOM_remove_file $mom_output_file_directory$mom_group_name.$mom_sys_output_file_suffix
      MOM_open_output_file $mom_group_name.$mom_sys_output_file_suffix
   
   PB_start_of_program
   
   set pb_start_of_program_flag 1
}


proc MOM_end_of_group {} {

global group_level mom_group_name mom_sys_output_file_suffix
global mom_current_oper_is_last_oper_in_program

if {} {
    if {$group_level == 0} {
      return
    } else {
      if {$group_level == 1} {
      MOM_end_of_program
      
      MOM_close_output_file $mom_group_name.$mom_sys_output_file_suffix
               
                if {$mom_current_oper_is_last_oper_in_program == "YES"} {
                        global mom_operation_name group_list
                        global mom_sequence_number mom_sequence_increment mom_sequence_frequency
                        global ptp_file_name

                        SEQNO_RESET ; #<4133654>
                        MOM_reset_sequence $mom_sequence_number $mom_sequence_increment $mom_sequence_frequency

                        MOM_close_output_file $ptp_file_name
                        MOM_remove_file $ptp_file_name
                        MOM_open_output_file $ptp_file_name
                        MOM_output_literal "%"
                        MOM_set_seq_on
                        MOM_output_literal "O1234"
                        foreach i $group_list {
                              MOM_output_literal "M98 P$i"
                        }
                        MOM_output_literal "M30"
                        MOM_set_seq_off
                        MOM_output_literal "%"
                        MOM_close_output_file $ptp_file_name
                }
      
      }
      incr group_level -1
    }
} else {return}
}保存
结果展示
附后处理下载,仅供学习与交流

做一件对行业有贡献的事情。

destiny0515 发表于 2020-7-22 08:56:32

Bridge_︻︻︻︻ 发表于 2020-7-22 07:45
谢谢,这个真好,但主程序能不能像如下方式实现,核心就是主程序光输出换刀指令+坐标系(G54)+子程序号,而 ...

你说的方式是能够实现的

需要在现有的框架下,做一些调整

我将会在新帖中分享这个思路,到时我们再做讨论

destiny0515 发表于 2020-7-10 15:27:46

邵阳_新邵_一刀 发表于 2020-7-10 15:26
牛哥,空的程序组不知怎么判断不输出

下期分享就它了
关注蜗牛{:tongue:}

.|°太傻ヤ 发表于 2020-7-10 19:57:08

destiny0515 发表于 2020-7-10 14:51
可以
有构思 能动手,就能实现很多目的

牛哥你这个按组程序后处理单条程序,怎么搞也可以包含总程序一样出来出来。不调用子程序直接总程序一个文件单个按组的程序按组单独生成出来。

fswbvip* 发表于 2020-7-9 20:47:51

牛哥,出手定江山啊。牛逼啊。。。。

菲非尔 发表于 2020-7-9 23:04:49

一如既往的厉害!!!

q918970957 发表于 2020-7-9 23:07:46

{:lol:}谢谢大师分享。。。。。。

树欲静而风不止* 发表于 2020-7-9 23:36:47

师傅,收下我的膝盖{:titter:}

YANQH80 发表于 2020-7-10 08:45:45

相互学习,共同进步!

wei02285432 发表于 2020-7-10 11:15:18

致敬乐于分享奉献的楼主,

~卖女孩的小火柴~ 发表于 2020-7-10 11:32:12

蜗牛哥哥真棒

.|°太傻ヤ 发表于 2020-7-10 12:49:54

谢谢牛哥,支持下。

.|°太傻ヤ 发表于 2020-7-10 13:56:39

第三种方法是不是还可以做那个刀具清单之类(牛逼)
页: [1] 2 3 4 5 6
查看完整版本: [后处理下载][案例分析]按组批处理并生成主程序调用子程序