QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 14167|回复: 48
打印 上一主题 下一主题

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

  [复制链接]

版主

闪光的蜗牛

Rank: 10Rank: 10Rank: 10

18

主题

511

帖子

1万

积分

论坛元老

跳转到指定楼层
楼主
发表于 2020-7-9 20:03:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 destiny0515 于 2020-7-9 20:05 编辑

上期分享了以工序为单位批处理的思路:

后处理中的实用技巧——以工序(OPERATION)为单位的批处理
(出处: UG爱好者)

只需简单几个步骤,实现主程序对子程序的调用,输出M98PXXXX
(出处: UG爱好者)

蜗牛很高兴,收到了很多的反馈,其中有非常多的声音在问能否按组输出——

当然是可以的

实际上构造器是包含这样的功能
不过也因种种原因,许多人不喜欢这种方式

本文以一个新的角度解析,如何以程序组为单位生成子程序,并通过主程序调用

思路分析
既然要按组输出,那么有两个过程是要重点关注的——
MOM_start_of_group
MOM_end_of_group
见名知意,它们参与了组的开始与结束。这两个过程必须要经过一番修改才能符合题目的需求。
不过问题来了,PB(PostBuilder)不直接提供它们的修改方式。
怎么解决呢?不妨将思路展开一点
途径一.可以直接改写后处理的tcl文件,缺点很明显,后期无法再用PB维护。
途径二.改写ugpost_base.tcl文件,比第一种方法还要笨重。
途径三.写外部脚本,覆盖原有的过程。
经过对比发现,途径三虽然会多一个脚本文件,但是灵活性和稳定性是最高的。

动手实践
PB中提供外部脚本的功能
勾选选框
需要手动建立脚本文件,输入代码
  1. proc MOM_start_of_group {} {

  2.   global mom_group_name group_level mom_sys_output_file_suffix
  3.   global mom_sequence_number mom_sequence_increment mom_sequence_frequency
  4.   global pb_start_of_program_flag ptp_file_name
  5.   global group_list mom_output_file_directory

  6.    if { ![hiset group_level] } {
  7.       set group_level 0
  8.           MOM_close_output_file $ptp_file_name
  9.       return
  10.    }


  11.    if { [hiset group_level] } {
  12.       incr group_level
  13.    } else {
  14.       set group_level 1
  15.    }

  16.    if { $group_level > 1 } {
  17.       return
  18.    }

  19.    lappend group_list $mom_group_name
  20.    
  21.    SEQNO_RESET ; #<4133654>
  22.    MOM_reset_sequence $mom_sequence_number $mom_sequence_increment $mom_sequence_frequency

  23.       MOM_start_of_program
  24.       MOM_remove_file $mom_output_file_directory$mom_group_name.$mom_sys_output_file_suffix
  25.       MOM_open_output_file $mom_group_name.$mom_sys_output_file_suffix
  26.      
  27.    PB_start_of_program
  28.    
  29.    set pb_start_of_program_flag 1
  30. }


  31. proc MOM_end_of_group {} {

  32.   global group_level mom_group_name mom_sys_output_file_suffix
  33.   global mom_current_oper_is_last_oper_in_program

  34.   if {[hiset group_level]} {
  35.     if {$group_level == 0} {
  36.       return
  37.     } else {
  38.       if {$group_level == 1} {
  39.         MOM_end_of_program
  40.         
  41.         MOM_close_output_file $mom_group_name.$mom_sys_output_file_suffix
  42.                
  43.                 if {$mom_current_oper_is_last_oper_in_program == "YES"} {
  44.                         global mom_operation_name group_list
  45.                         global mom_sequence_number mom_sequence_increment mom_sequence_frequency
  46.                         global ptp_file_name

  47.                         SEQNO_RESET ; #<4133654>
  48.                         MOM_reset_sequence $mom_sequence_number $mom_sequence_increment $mom_sequence_frequency

  49.                         MOM_close_output_file $ptp_file_name
  50.                         MOM_remove_file $ptp_file_name
  51.                         MOM_open_output_file $ptp_file_name
  52.                         MOM_output_literal "%"
  53.                         MOM_set_seq_on
  54.                         MOM_output_literal "O1234"
  55.                         foreach i $group_list {
  56.                                 MOM_output_literal "M98 P$i"
  57.                         }
  58.                         MOM_output_literal "M30"
  59.                         MOM_set_seq_off
  60.                         MOM_output_literal "%"
  61.                         MOM_close_output_file $ptp_file_name
  62.                 }
  63.         
  64.       }
  65.       incr group_level -1
  66.     }
  67.   } else {return}
  68. }
复制代码
保存

结果展示

附后处理下载,仅供学习与交流
Output_Subprog_by_Group.rar (52.81 KB, 下载次数: 739)


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

评分

参与人数 5G币 +48 收起 理由
偽袮ジ痴鈊 + 10 原创加分!
472751863 + 5 分享加分!
zb1997* + 3 不错,支持你!
安周 + 20 蜗牛也是牛
树欲静而风不止* + 10 楼主是大神!膜拜!

查看全部评分

有奖推广贴子: 

闪光的蜗牛
回复

使用道具 举报

版主

闪光的蜗牛

Rank: 10Rank: 10Rank: 10

18

主题

511

帖子

1万

积分

论坛元老

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

你说的方式是能够实现的

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

我将会在新帖中分享这个思路,到时我们再做讨论
闪光的蜗牛
回复 支持 2 反对 0

使用道具 举报

版主

闪光的蜗牛

Rank: 10Rank: 10Rank: 10

18

主题

511

帖子

1万

积分

论坛元老

推荐
 楼主| 发表于 2020-7-10 15:27:46 | 只看该作者
邵阳_新邵_一刀 发表于 2020-7-10 15:26
牛哥,空的程序组不知怎么判断不输出

下期分享就它了
关注蜗牛
闪光的蜗牛
回复 支持 2 反对 0

使用道具 举报

大校

Rank: 8Rank: 8

3

主题

921

帖子

1万

积分
推荐
发表于 2020-7-10 19:57:08 | 只看该作者
destiny0515 发表于 2020-7-10 14:51
可以
有构思 能动手,就能实现很多目的

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

使用道具 举报

上尉

Rank: 6Rank: 6

6

主题

377

帖子

5250

积分
沙发
发表于 2020-7-9 20:47:51 | 只看该作者
牛哥,出手定江山啊。牛逼啊。。。。
回复 支持 反对

使用道具 举报

少将

Rank: 8Rank: 8

29

主题

1353

帖子

2万

积分
板凳
发表于 2020-7-9 23:04:49 | 只看该作者
一如既往的厉害!!!
回复 支持 反对

使用道具 举报

少校

Rank: 6Rank: 6

0

主题

446

帖子

8680

积分
地板
发表于 2020-7-9 23:07:46 | 只看该作者
谢谢大师分享。。。。。。
回复 支持 反对

使用道具 举报

中校

Rank: 7Rank: 7Rank: 7

28

主题

664

帖子

1万

积分
5#
发表于 2020-7-9 23:36:47 | 只看该作者
师傅,收下我的膝盖
QQ:365337895
回复 支持 反对

使用道具 举报

上校

Rank: 7Rank: 7Rank: 7

1

主题

1468

帖子

1万

积分
6#
发表于 2020-7-10 08:45:45 | 只看该作者
相互学习,共同进步!
回复 支持 反对

使用道具 举报

少尉

Rank: 5Rank: 5

7

主题

67

帖子

2781

积分
7#
发表于 2020-7-10 11:15:18 | 只看该作者
致敬乐于分享奉献的楼主,
回复 支持 反对

使用道具 举报

爱好者终身VIP

Rank: 11Rank: 11Rank: 11Rank: 11

7

主题

1263

帖子

1万

积分

灌水王VIP会员可爱天使论坛元老

8#
发表于 2020-7-10 11:32:12 | 只看该作者
蜗牛哥哥真棒
回复 支持 反对

使用道具 举报

大校

Rank: 8Rank: 8

3

主题

921

帖子

1万

积分
9#
发表于 2020-7-10 12:49:54 | 只看该作者
谢谢牛哥,支持下。
回复 支持 反对

使用道具 举报

大校

Rank: 8Rank: 8

3

主题

921

帖子

1万

积分
10#
发表于 2020-7-10 13:56:39 | 只看该作者
第三种方法是不是还可以做那个刀具清单之类(牛逼)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-4-28 12:13

返回顶部