NX CAM modifies arc movement and suppress K output
·839 字
1. Full code #
#=============================================================
proc PB_CMD_init_helix { } {
#=============================================================
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_radian"
#
# 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 QUADRANT
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 [expr $mom_helix_pitch / ($PI * 2.0)]}
other {
#
# Place your custom helix pitch code here
#
}
default { set mom_sys_helix_pitch_type "none" }
}
MOM_force once X Y Z
if { [string compare "none" $mom_sys_helix_pitch_type] } {
MOM_force once I J K
switch $mom_pos_arc_plane {
XY { MOM_suppress once K ; MOM_force once I J }
YZ { MOM_suppress once I ; MOM_force once J K }
ZX { MOM_suppress once J ; MOM_force once I 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
} ;# MOM_helix_move
} ;# uplevel
}
2.Diff #
--- 1.tcl
+++ 2.tcl
@@ -30,19 +30,20 @@
#
# The following variable deines the output mode for helical records.
#
-# FULL_CIRCLE -- This mode will output a helix record for each 360
+# 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
+# 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 FULL_CIRCLE
+ set mom_kin_helical_arc_output_mode QUADRANT
MOM_reload_kinematics
+
#=============================================================
proc MOM_helix_move { } {
#=============================================================
@@ -53,7 +54,6 @@
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 }
@@ -66,18 +66,24 @@
rise_radian { set pitch [expr $mom_helix_pitch / ($PI * 2.0)]}
other {
#
-# Place your custom helix pitch code here
+# Place your custom helix pitch code here
#
}
default { set mom_sys_helix_pitch_type "none" }
}
-
+
MOM_force once X Y Z
if { [string compare "none" $mom_sys_helix_pitch_type] } {
MOM_force once I J K
- #<08-01-06 gsl>
+ switch $mom_pos_arc_plane {
+ XY { MOM_suppress once K ; MOM_force once I J }
+ YZ { MOM_suppress once I ; MOM_force once J K }
+ ZX { MOM_suppress once J ; MOM_force once I K }
+ }
+
+#<08-01-06 gsl>
switch $mom_sys_cir_vector {
"Vector - Arc Center to Start" {
set mom_prev_pos($cir_index) $pitch
@@ -94,12 +100,16 @@
}
}
+
#
# 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
-}
+
+
+} ;# MOM_helix_move
+
} ;# uplevel
}