向前冲,不退缩* 发表于 2022-3-30 08:39:25

孔铣宏程序制作方法

资料来源于闪光蜗牛
现在给大家分享一下,孔铣命令宏后处理制作方法,只说方法教程,请见谅!
1.新建一个后处理
2.在N/C数据定义模块 →文字→找到“Z”
3.右键→创建“Z_1”
4.新建选择“文本”格式
5.在N/C数据定义模块 →块→找到“circular_move”
6.右键→创建“circular_move_1”右键→创建→“circular_move_helix”
7.删除“circular_move_1”中的“Z”并添加“Z-1”表达式“#26”
8.删除“circular_move_helix”中的“Z”并添加“Z-1”表达式“#18”
9.在   程序和刀轨 模块→定制命令→导入→在文件夹中选择“pb_cmd_helix.tcl”
10.在   程序和刀轨 模块→程序→程序起始序列→添加块右侧选择“PB-CMD-init_helix”→添加块→“%”后即可
11.在   程序和刀轨 模块→定制命令→选择“pb_cmd_helix.tcl”用下面代码替换原代码
12.保存后处理文件,好了,来试一下你的宏程序后处理吧{:biggrin:}
uplevel #0 {

#

# This ommand will be executed automatically at the start of program and

# anytime it is loaded as a slave post of a linked post.

#

# This procedure can be used to enable your post to output helix.

# You can choose from the following options to format the circle

# block template to output the helix parameters.

#



   set mom_sys_helix_pitch_type    "rise_revolution"



#

# The default setting for mom_sys_helix_pitch_type is "rise_radian".

# This is the most common.Other choices are:

#

#    "rise_radian"            Measures the rise over one radian.

#    "rise_revolution"          Measures the rise over 360 degrees.

#    "none"                     Will suppress the output of pitch.

#    "other"                  Allows you to calculate the pitch

#                               using your own formula.

#

# This custom command uses the block template circular_move to output

# the helix block.If your post uses a block template with a different

# name, you must edit the line that outputs the helix block.



#

#The following variable deines the output mode for helical records.

#

#FULL_CIRCLE-- This mode will output a helix record for each 360

#                  degrees of the helix.

#QUADRANT--    This mode will output a helix record for each 90

#                  degrees of the helix.

#LINEAR--      This mode will output the entire helix as linear gotos.

#END_POINT --    This mode will assume the control can define an entire

#                  helix in a single block.



   set mom_kin_helical_arc_output_mode END_POINT



   MOM_reload_kinematics





#=============================================================

proc MOM_helix_move { } {

#=============================================================

   global mom_pos_arc_plane

   global mom_sys_cir_vector

   global mom_sys_helix_pitch_type

   global mom_helix_pitch

   global mom_prev_pos mom_pos_arc_center

   global PI





   switch $mom_pos_arc_plane {

      XY { MOM_suppress once K ; set cir_index 2 }

      YZ { MOM_suppress once I ; set cir_index 0 }

      ZX { MOM_suppress once J ; set cir_index 1 }

   }



   switch $mom_sys_helix_pitch_type {

      none { }

      rise_revolution { set pitch $mom_helix_pitch }

      rise_radian { set pitch }

      other {

#

#    Place your custom helix pitch code here

#

      }

      default { set mom_sys_helix_pitch_type "none" }

   }



   MOM_force once X Y Z



   if { } {

      MOM_force once I J K



   #<08-01-06 gsl>

      switch $mom_sys_cir_vector {

         "Vector - Arc Center to Start" {

            set mom_prev_pos($cir_index) $pitch

            set mom_pos_arc_center($cir_index) 0.0

         }

         "Vector - Arc Start to Center" -

         "Unsigned Vector - Arc Start to Center" {

            set mom_prev_pos($cir_index) 0.0

            set mom_pos_arc_center($cir_index) $pitch

         }

         "Vector - Absolute Arc Center" {

            set mom_pos_arc_center($cir_index) $pitch

         }

      }

   }



#

# You may need to edit this line if you output more than one block

# or if you have changed the name of your circular_move block template

#

#   MOM_do_template circular_move

global mom_pos mom_last_pos

set dep ]

set pit

set val .0]

set val_int

set z_rem

if {$mom_pos($cir_index)<$mom_last_pos($cir_index)} {

    set sym GE

} else {

    set sym LE

}

if {$val<1} {

MOM_do_template circular_move

} else {

    MOM_output_literal "(R)#18=]
(Z)#26=
WHILE \[#18 $sym #26\] DO1"

    set last_cycle(0) $mom_pos(0)

    set last_cycle(1) $mom_pos(1)

    set mom_pos(0) $mom_last_pos(0)

    set mom_pos(1) $mom_last_pos(1)

    MOM_do_template circular_move_helix

    MOM_output_literal "#18=#18+\[\]
END1"

    if {} {

    set mom_pos(0) $last_cycle(0)

    set mom_pos(1) $last_cycle(1)

      MOM_force once X Y ZI J Z_1

      MOM_do_template circular_move_1

    }

}

}



} ;# uplevel

LWQ101120981 发表于 2022-4-6 12:04:18

感谢大佬,解了我多年的困惑,如果面铣,深度铣也能用宏就好了

liweixu51 发表于 2022-3-30 10:04:35

非常详细,多谢楼主分享!

xiang030506 发表于 2022-3-30 10:12:56

谢谢分享

〝尘℡醉彡 发表于 2022-3-30 11:18:25

多谢楼主分享

lixuejin 发表于 2022-3-30 14:07:53

感谢分享 已经成功了

LWQ101120981 发表于 2022-4-6 12:08:27

谢谢分享

jbcf2006 发表于 2022-4-6 15:04:52

谢谢大神分享

dfdwj12 发表于 2022-5-25 18:57:06

厉害,谢谢

q918970957 发表于 2022-5-25 19:49:34

{:lol:} 谢谢大师分享.......
页: [1] 2
查看完整版本: 孔铣宏程序制作方法