|
本帖最后由 Deaton 于 2011-6-22 00:59 编辑 7 W- ]( J& B3 b* V" l$ O8 z
: V7 a9 V, _) j6 o7 O
非常详细实用,谢谢!/ w7 L+ j! f9 A& n) \' {( T
8 Y3 ~- P+ l8 u& b) d
附一个 Sodick 的后处理,已实现上下异形,子程序调用,供各位同学参考。
' l" \, F% l: ^7 V* X0 ]! l2 c
: r) L: G; e2 h* X4 A* x########################## TCL Event Handlers ##########################
0 C" r" Z8 ?( ?$ L" I#3 W+ P A6 F6 G' }- r
# Created by Supervisor @ Mon Oct 09 15:07:32 2005 中国标准时间5 g) w1 \ E k. x( R6 L
# with Post Builder version 3.4.1.8 k. ], f2 `# T5 ]8 X/ q
#5 _. B9 L" h' h5 |8 g( V% r) s& U
########################################################################9 h K( c& J/ e' D4 L
+ t0 g) W& \; {6 _; }
set cam_post_dir [MOM_ask_env_var UGII_CAM_POST_DIR]* L6 M a$ d; [ j/ P- N5 ^& G, f
% C2 J7 ]+ n- x
& {. u( V- d+ \' [. `) A9 _
if { ![info exists mom_sys_post_initialized] } {
* C; T; P3 `+ C: I, u' L
2 O( k* ?* q" w source ${cam_post_dir}ugpost_base.tcl% r5 i& D5 J9 \ |$ _( l" @
8 I' h" R/ t( q; @* d% u e: V1 ^ proc MOM_before_each_add_var {} {}. S/ N9 S7 q/ l" m. ]; m* n
proc MOM_before_each_event {} {}: Z7 }$ K- q0 w' Y. Q
* ^: A- ] D! N: v( r
# set cam_debug_dir [MOM_ask_env_var UGII_CAM_DEBUG_DIR]
# q+ }0 u# M; T6 d4 z# source ${cam_debug_dir}mom_review.tcl D# Z; {1 r9 G! Z' y
( q0 r$ k2 N- `5 ~0 S+ X9 I
MOM_set_debug_mode OFF+ h/ N) n: n% r; g# @
( ?' B4 c& s2 Z+ Y4 N8 j
8 a0 C8 c. P* I" h& k #### Listing File variables
) E" m8 k. N% h) d! @ set mom_sys_list_output "OFF"
0 K0 s$ W+ A: a& d: g2 h9 u) E0 ? set mom_sys_header_output "OFF"
5 y9 j: k+ d& k3 t set mom_sys_list_file_rows "40"
, M% C2 L \. }6 b# n+ _0 l set mom_sys_list_file_columns "30" . ~9 N, I: `0 k
set mom_sys_warning_output "OFF"
' F' {9 ^( t# ?7 J' |1 U set mom_sys_group_output "OFF"
, q* q0 W' A* e( i: S* X, P set mom_sys_list_file_suffix "lpt"
6 K. j6 D. l# K1 O D/ [ set mom_sys_output_file_suffix "NC" + K4 X9 G, E- k ~
set mom_sys_commentary_output "ON"
6 o0 r. N( m- H# S2 k6 w set mom_sys_commentary_list "x y z 4axis 5axis feed speed"
2 }$ R ^# u+ z- S! }; C& e1 c- r( e' r, v3 y7 }# M6 f
set mom_sys_control_out "("
1 r) t; b& V: p: P set mom_sys_control_in ")"
4 c9 i9 v% [# J- b& B7 }" D/ R8 ~9 ]; g$ K- u3 H/ y% l
set mom_sys_post_initialized 14 W3 w$ X8 E8 Z I- ]- m
}6 |- D E( W+ b
9 s5 V( k' Q$ K, N% ~0 N
& F9 f) M! B" x; B+ a/ v5 ]########## SYSTEM VARIABLE DECLARATIONS ##############+ n$ ~% Z" o; c7 O
set mom_sys_rapid_code "0" - ~$ V$ C7 B( }+ ^/ [
set mom_sys_linear_code "1" u0 v4 a) S. H
set mom_sys_circle_code(CLW) "2"
' k) i: C+ [9 c, @3 P# N, X) q0 Q* p set mom_sys_circle_code(CCLW) "3"
* t- U5 C, l' K9 G" ?( ]& r9 Y+ p set mom_sys_delay_code(SECONDS) "4"
3 e5 W, G* e/ I" G Q& q set mom_sys_cutcom_code(OFF) "40"
9 }: O# `, g! ?- f% D set mom_sys_cutcom_code(LEFT) "41" ! x$ {) ?2 _+ g* Y, `/ b+ m
set mom_sys_cutcom_code(RIGHT) "42"
! x9 [# c- {5 w3 y set mom_sys_unit_code(IN) "70" . ~7 a6 T7 h, q C& [
set mom_sys_unit_code(MM) "71"
, N& o9 P; G! g. O set mom_sys_output_code(ABSOLUTE) "90"
: p! m& n( x2 N# o x% ~4 s% y set mom_sys_output_code(INCREMENTAL) "91" ! F U: s* a4 }- \9 J, H
set mom_sys_reset_code "92" K7 h) X( s9 D/ x
set mom_sys_program_stop_code "0"
8 i5 `) l& f% T+ B2 } set mom_sys_optional_stop_code "1" 1 s7 V, ?0 P. ]1 c$ a
set mom_sys_end_of_program_code "2"
6 i' P2 N4 [, O' }5 K set mom_sys_rewind_code "30" ) t, x) s M( ?# V# q0 X
set mom_sys_thread_wire "20"
' ~& @6 x& i8 [! x; c: V set mom_sys_cut_wire "21" ' l+ y0 j0 U. K9 d
set mom_sys_flushing_on "80" 9 D/ m3 X# j& d( Y
set mom_sys_flushing_off "81" & L. n+ V5 ]' f# m6 ~: Q, p' o1 g
set mom_sys_power_on "84"
; ]0 V' w: O" G8 p, v3 x$ v set mom_sys_power_off "85"
5 M! d, o; |2 |/ q( D4 L set mom_sys_wire_on "82" " y- G% R6 U" O9 |/ u
set mom_sys_wire_off "83" 2 [# y( L# ? S5 J/ h# D+ h1 [
set mom_sys_cir_vector "Vector - Arc Start to Center"
7 ? \: H% k. Y' \ set mom_sys_rewind_stop_code "\#"
, I0 R2 u* a2 o" f: a( c set mom_sys_home_pos(0) "0"
3 n% b9 ?" S+ N" {2 v6 C set mom_sys_home_pos(1) "0"
' f$ e5 _7 @. M% f set mom_sys_home_pos(2) "0"
; u- B9 G' S, q1 ~% p set mom_sys_zero "0" 6 o5 J+ s0 o" ?) W( G$ R
set mom_sys_opskip_block_leader "/"
4 L! z7 t% q9 V) v% V6 | set mom_sys_seqnum_start "10" . Z9 {8 O/ N+ m) B
set mom_sys_seqnum_incr "10" ; N1 Z7 v+ n; }& O" d) F5 l
set mom_sys_seqnum_freq "1"
1 ^8 G: y) R- C& U2 s set mom_sys_seqnum_max "9999"
, J3 E5 k" n2 T) F/ P* B set mom_sys_leader(N) "N"
4 ~7 q- a' j2 K" i/ I6 a* X" F# R& H set mom_sys_leader(X) "X"
" c0 g1 n+ Q4 v/ o" L set mom_sys_leader(Y) "Y" ( W! l( M6 j, N3 ]
set mom_sys_leader(Z) "Z" + }+ A) H# a! O
set mom_sys_leader(U) "U"
! ^% h( y3 l0 t& V' x( D& f9 d5 f set mom_sys_leader(V) "V" " z4 E: d9 \* h+ F% b9 t
set mom_sys_contour_feed_mode(LINEAR) "MMPM"1 ]0 c+ x& r. E) X1 o% M
set mom_sys_rapid_feed_mode(LINEAR) "MMPM"& `* m% m9 k2 t S# O2 _
set mom_sys_cycle_feed_mode "MMPM"
' |+ W8 ?1 G/ U. {- z set mom_sys_feed_param(IPM,format) "Feed_IPM"
1 E; u3 ~1 c1 H set mom_sys_feed_param(MMPM,format) "Feed_MMPM"
* M# A- g! Y, O J. S) ?# t set mom_sys_feed_param(MMPR,format) "Feed_MMPR"
5 ^; s* U. O/ g/ E J0 Y( v2 U set mom_sys_post_description "Unigraphics NX 4.0 WireCut Poster for Sodick.\n\
2 b1 j2 b6 E2 L, P. m' }$ R Version: 2.0\n\2 y- Y1 ^$ j0 Q7 m% y& a9 g
Date: 2006/03/15\n\: j. u/ M: D. }5 e: k. S" g
By Deaton, Cheewah Toys Ltd., Co.\n\
& i1 v) C& ]+ O# V! A% x' j) L# _+ j Email:deaton@21cn.com\n\
2 N8 r2 `8 h0 I" R' D, k& V( l Tel:0756-8277824, 13802674804\n\
5 @3 S+ t ?1 X9 S7 K Rule and Conic are both supported."
" R, u; t6 x8 l! y+ @' Y set mom_sys_ugpadvkins_used "0"9 m. m" z0 M( r) I
; _- ^4 v& Q- J+ m" F####### KINEMATIC VARIABLE DECLARATIONS ##############
4 n' Q$ @$ [8 e! Y) ^4 k' w set mom_kin_arc_output_mode "FULL_CIRCLE"
% N7 H+ ~' E7 Y4 v4 A. ~5 R( K set mom_kin_arc_valid_plane "XY" - D% v' }" c. b8 M/ y5 y: O
set mom_kin_clamp_time "2.0") K) ^4 w9 ?' q1 p
set mom_kin_flush_time "2.0"- D" A. Q0 ^ J, D( G* E- E
set mom_kin_linearization_flag "1"
& C' S5 l. G+ P: K+ \% M& x4 V; e set mom_kin_linearization_tol "0.001"; I6 C% [5 L% {, J
set mom_kin_machine_resolution ".001"
* @9 `( ?# r7 H, X E set mom_kin_machine_type "4_axis_wedm"4 i# a6 I8 b8 o1 U) f( x9 `
set mom_kin_max_arc_radius "99999.999"
: p/ _( K* W0 [( T. B* J6 j set mom_kin_max_fpm "10000"
) ]' R* q9 i" _; W8 R set mom_kin_min_arc_length "0.001"2 o1 K8 p2 [! v. C, |
set mom_kin_min_arc_radius "0.001"$ z; F1 x- Y" M% y; s8 _
set mom_kin_min_fpm "0.01"
" \0 b+ ?7 u7 V- }! S set mom_kin_output_unit "MM"
4 r. W7 h G/ N! ^! d set mom_kin_post_data_unit "MM"
3 J$ v O) {: {, f% `- h( b set mom_kin_rapid_feed_rate "15000"
. f% p7 n3 G! ~- r8 C6 H set mom_kin_tool_change_time "12.0"
& m7 F7 j- C { set mom_kin_wire_tilt_output_type "COORDINATES"" S3 ?1 n/ N' R9 {" c
set mom_kin_x_axis_limit "1000"
- S4 y4 p- _, | set mom_kin_y_axis_limit "1000" y/ w: b! G( ] n2 e# \2 W
set mom_kin_z_axis_limit "1000"
9 F" ]. F$ B# a! {) p5 @/ D6 }: n* z3 z. V5 b! o/ C) @" \3 A
1 t7 j% d; h A F* @7 |1 G2 T) W" H# @2 n1 h
; |0 i5 C: W8 d5 D; L. Oif [llength [info commands MOM_SYS_do_template] ] {$ G8 I4 n2 F9 \
if [llength [info commands MOM_do_template] ] {! W; Q: A! u* Z: f8 r) U
rename MOM_do_template ""7 k/ E* p+ z g! s
}
0 A/ [% t& A0 ^; ?2 } x) l rename MOM_SYS_do_template MOM_do_template
5 O' R( Z; z" ~5 R% m8 s}
) q3 O' q5 `' q1 h ]; W$ q c I) Y( I; I$ ?# G: T
/ J6 V3 f& T2 f0 g1 }5 ~; t
/ j% u, w( N1 [3 r. L2 a) w# a0 X
3 ?4 G! ?1 b6 ^! E* u#=============================================================
% e8 A d. g' @. ]2 iproc MOM_start_of_program { } {
1 ` K. r- L7 N0 e5 L5 W#=============================================================% e5 i. L3 }1 K
global mom_logname mom_date is_from
" F1 @- F9 E5 u5 Z; @( A global mom_coolant_status mom_cutcom_status
6 f5 j$ m( g. s+ T5 `. r$ I3 H3 H global mom_clamp_status mom_cycle_status: b2 B( S) b* j- y8 ?0 r
global mom_spindle_status mom_cutcom_plane pb_start_of_program_flag6 N+ }) l. `2 y
global mom_cutcom_adjust_register mom_tool_adjust_register% Y$ n" b' y ]- u I) a
global mom_tool_length_adjust_register mom_length_comp_register
) i, g: y. V$ R I( @ global mom_flush_register mom_wire_cutcom_adjust_register
" |# E/ g' e' S4 D4 h5 c global mom_wire_cutcom_status) N2 c# a/ W, f3 g) C, k' e
' K. I! O8 A* c* l set pb_start_of_program_flag 08 \1 V2 Z( V% B
set mom_coolant_status UNDEFINED5 |# S" T# m% Q, Y- W" l: O
set mom_cutcom_status UNDEFINED0 q3 Z# c- p5 y
set mom_clamp_status UNDEFINED$ `6 p7 j+ k; M* u
set mom_cycle_status UNDEFINED
0 l6 u) d) V7 u. |5 k; p8 e& Y set mom_spindle_status UNDEFINED) x* x% S3 `8 U7 `# k" @
set mom_cutcom_plane UNDEFINED$ a$ G: ?9 `3 Q Z0 ?; D( L
set mom_wire_cutcom_status UNDEFINED
+ I: m6 U( ?$ ?
5 A9 f" s: z, c" b: K catch {unset mom_cutcom_adjust_register}7 ?- W3 a7 i, U0 y. x' Z
catch {unset mom_tool_adjust_register}
+ ^- @) o$ Q, A$ t# o3 ? catch {unset mom_tool_length_adjust_register}
0 q6 Y, W1 H7 d2 E7 F! y1 b# N catch {unset mom_length_comp_register}
0 O. H \- n! J/ L, I( P# |: M catch {unset mom_flush_register}
; k5 t. s0 }$ w u# g catch {unset mom_wire_cutcom_adjust_register}3 p* G% ~* w* a, k
" C1 b) g) e1 [ set is_from ""
0 Z; _8 [) l4 ]
; }% l2 o. w6 F( \ catch { OPEN_files } ; #open warning and listing files. b( M2 H9 q; _# |
LIST_FILE_HEADER ; #list header in commentary listing
* m7 s6 r! X. Y
1 X1 Y$ w1 F% Y4 j0 j7 ^
! u- K" ?$ n2 j* s! O. H
1 V' R& c$ ?, O2 N- o global mom_sys_post_initialized
W% h3 X, E# \" D6 C! j if { $mom_sys_post_initialized > 1 } { return }
|9 ^0 K' K0 v7 O$ ?( v2 ~5 ?. Y; U& u( j$ j
( ?- ?0 B7 T( E1 l0 o- m#************6 \2 ]% v% X- Y
uplevel #0 {
1 z& A! H& g$ W7 i5 j" Q
: m+ n/ ^6 B) f a5 m9 v9 c7 i9 o, O6 I) s
#=============================================================
( u/ |0 b! G: \& o( F. Uproc MOM_sync {} {
3 l; [/ O& X i8 @; k! U#=============================================================" O+ u, e! L: v0 P
if [llength [info commands PB_CMD_kin_handle_sync_event] ] {
- y( ^! H* }" r' R PB_CMD_kin_handle_sync_event b2 k2 } m2 u
}
, z p6 r( c! G6 `# s, U}
2 F2 q3 F ]* c
4 a" |" ^' n( f, Z% f- U& r" ~
h+ j; q. @3 w3 p" P( j. w#=============================================================/ q. Y. y1 b Q2 C; c/ F! q
proc MOM_set_csys {} {- P# _7 r) {/ ~1 f) q$ M: ~
#=============================================================$ ^% w+ N" @* P9 a( Z+ m$ W+ N
if [llength [info commands PB_CMD_kin_set_csys] ] {( a; N4 f8 w* ^2 z$ q" L( @
PB_CMD_kin_set_csys
* [' h& P+ a- ?5 c' i+ B$ \ }
8 O2 l2 D) R8 h}( L( ?' Y4 ]3 M8 p
9 ^6 X9 b: s3 ~ B- T" R
/ U9 a h3 \, ]6 A#=============================================================
4 L1 y5 ^# X. N. aproc MOM_msys {} {
8 s& v8 t+ F# S#=============================================================( p8 Y0 L& o' }
}7 U+ k2 X! M% f" a. q, q
3 i8 \/ x) ^( Y9 v1 i( v! J' w: ?5 H% S
$ x9 L! L0 m: i h7 T2 J#=============================================================
; q, ]% z& D& F* I) pproc MOM_end_of_program { } {# c2 T U/ z' B3 k) |
#=============================================================
, H# b# Z$ Y/ D9 k) w- b( } PB_CMD_end_of_file
z8 n3 o) M' \' ]- C4 k PB_CMD_calc_machine_time
- ]0 q: ^: G, K; r! a) U1 |! b' o0 j# H$ |) y, H8 `* k) u$ @$ h" v
#**** The following procedure lists the tool list with time in commentary data+ D6 p. K) g: q- J
LIST_FILE_TRAILER
- v3 s6 s2 p# F- u* Z* Y4 `, i1 h& w) M' M
#**** The following procedure closes the warning and listing files- ?$ K- t& W1 T" w2 h: h1 ?) j$ u
CLOSE_files
; Z7 i. b7 s a f3 @}4 l+ Z7 L5 J9 Y4 l
* Z$ C* e. b! ~. D: E; M
- J/ x- i) W8 x6 X+ l, z4 G incr mom_sys_post_initialized. g3 f# M$ R4 y' |: E
" L8 X( z% Q6 m' u9 H
?' J! `# C& d6 p0 \1 Y} ;# uplevel
0 Z0 N0 V" O1 v1 t% L& x; Y#***********
% m7 B3 A# @9 V" m w, h
( u# W: f; k1 |0 W' o& o" @3 D8 E
}
7 o/ W! Z% }3 E7 m; C4 d
; h2 b* O3 G4 C. I/ J9 U! o4 ^
( Y3 v* U1 `' g9 B3 R#=============================================================
9 \3 |/ B! \" G9 ~proc PB_DELAY_TIME_SET { } {9 @3 R- J, Y! w2 m2 m5 d3 X8 X
#=============================================================
2 @, w- O& M1 m0 i+ N+ V global mom_sys_delay_param mom_delay_value5 _ X- C& T9 y1 u' a* e M$ {
global mom_delay_revs mom_delay_mode delay_time
8 D, _/ `" H# J. X8 g( Y; H# k7 t: K
# post builder provided format for the current mode:5 v! J& Z ^4 o) D, l, w, r, J
if {[info exists mom_sys_delay_param(${mom_delay_mode},format)] != 0} {
5 u5 S0 }1 V+ x' Q6 [" J& c3 ~ MOM_set_address_format dwell $mom_sys_delay_param(${mom_delay_mode},format)
+ t7 ^# a" U4 g m1 e) [* C }
2 s; b: _* X! B' U+ K O1 E
( T; ?8 c x( X. } switch $mom_delay_mode {
e! F) P( B; m3 K2 g SECONDS {set delay_time $mom_delay_value}
, C- y6 D7 A# y$ k default {set delay_time $mom_delay_revs}
/ S7 \1 [1 L0 ]: T }
5 z6 c4 i: K$ u: e9 ^& y3 c+ ^. g% O}
( e5 D" [. h3 z# z- v) \& \
. }2 ?5 [- _- [5 d+ k& Y. s7 y8 X9 E/ L) s
#=============================================================6 ~" A) ?" `1 @! H
proc MOM_before_motion { } {
3 D, x3 v/ V7 |7 s, N1 h4 K#=============================================================1 a/ A k: h; W
global mom_motion_event mom_motion_type
% Q( g. l5 p# o3 S5 W5 J' n# k' S7 f& F" D$ z& G
FEEDRATE_SET
+ ?# W3 \ T: z* ~. l+ L) |+ @( j4 `" `! ^" r) d
6 f* {4 c3 H' E, H. M! q) D switch $mom_motion_type {( C% y, v4 m4 m8 {+ ?- B
ENGAGE {PB_CMD_kin_wedm_engage_move}4 k' }+ n* Z) Q9 s8 B8 t) @1 M- j
APPROACH {PB_approach_move}- k. |& z9 D. u" P+ A
FIRSTCUT {PB_first_cut}
: y V9 g, D O2 [ RETURN {PB_return_move}
% D) k) @1 T3 { t }4 o6 J/ b* A* o2 M2 u. R$ h
/ N8 w/ j- g( r5 ]) L+ C4 n if [llength [info commands PB_CMD_kin_before_motion] ] { PB_CMD_kin_before_motion }% i3 ~) {+ I5 j: k7 K0 }/ D' Z
if [llength [info commands PB_CMD_before_motion] ] { PB_CMD_before_motion }$ J0 V' Q4 B2 @" n& D2 Z& Y, s
}
7 V5 M' Q# r: |6 b* L5 B9 g# \" X& c4 b7 [9 i3 ]+ m
3 O! A- r+ G, q! E8 c#=============================================================
4 d- x% d8 ^/ ?+ A; R# Hproc MOM_start_of_group {} {
# F% o O; Y; m9 k, v#=============================================================+ {8 @8 k0 R# W6 h
global mom_sys_group_output mom_group_name group_level ptp_file_name0 L% x) s7 ~* o! h# f: Q
global mom_sequence_number mom_sequence_increment mom_sequence_frequency
& y5 t, ]* Q- Q2 T global mom_sys_ptp_output pb_start_of_program_flag& @' P8 d7 I4 M( _6 w% |5 c$ h
# |; `- R5 Q; D. I
if {![hiset group_level]} {set group_level 0 ; return}
* ]3 K' t6 q; N3 C T
7 k. _2 @7 A' }; r! A0 s9 p: E if {[hiset mom_sys_group_output]} {if {$mom_sys_group_output == "OFF"} {set group_level 0 ; return}}
1 s! P3 u+ v2 B+ X# M# O1 M" D$ Z
; Z7 a: e5 |$ R% p" d" b) F if {[hiset group_level]} {incr group_level} else {set group_level 1}9 r4 v4 C6 G2 O9 j
if {$group_level > 1} {return}5 B. O2 L) E* h+ }% O6 m/ O% B
- H' ` r5 g9 z, o9 \* X% N SEQNO_RESET ; #<4133654>% i( @$ y5 I1 d# q
MOM_reset_sequence $mom_sequence_number $mom_sequence_increment $mom_sequence_frequency
1 z v5 W, c. S# d1 P d4 O. I1 ~3 r- Q8 l3 N
if {[info exists ptp_file_name]} {
- m( g8 [, ~; g MOM_close_output_file $ptp_file_name ; MOM_start_of_program* w* d8 U; z9 d; i, g
if {$mom_sys_ptp_output == "ON"} {MOM_open_output_file $ptp_file_name }: a i( R8 g$ z' l
} else {
7 |1 i2 g) ]3 Z4 a MOM_start_of_program
. a* S2 @: w7 y8 P1 J }: r* s, E- ]0 \9 D; K7 A/ O
" s' t0 z5 X" P: T A+ G" _ PB_start_of_program ; set pb_start_of_program_flag 1& h: G4 Y, J! n
}
+ Y6 t5 H) _: R7 c8 V& ^6 h$ f7 D8 a8 ^+ B
' E8 ~. d4 C3 |
#=============================================================9 H, z( R" ~6 Z: Y$ p/ ^
proc MOM_machine_mode {} {
! C/ p7 p& z: l#============================================================= N; o5 Z6 J; e2 Q% v* }
global pb_start_of_program_flag# ]& g- z8 w6 Z6 O8 _# q
global mom_operation_name mom_sys_change_mach_operation_name+ \2 v: a# e8 R1 j
6 q2 @; T0 x/ |& Y9 O set mom_sys_change_mach_operation_name $mom_operation_name
: W1 f7 p' l. ?1 h3 G2 s h) V' A
& b8 u: p, K% G. E4 q' W. | if {$pb_start_of_program_flag == 0} {PB_start_of_program ; set pb_start_of_program_flag 1}
1 h' @, w j: A: q1 j. Y# }: q* K# j
if [llength [info commands PB_machine_mode] ] {
|1 F7 h& T4 E; u* ?/ _ if [catch {PB_machine_mode} res] {* S( t- I; i0 C2 ~5 G$ |+ @
global mom_warning_info
: Q+ j t4 Z& M4 A+ K7 { set mom_warning_info "$res"
0 q8 ]+ m7 J, U- b/ l) ~8 x& e MOM_catch_warning
8 |9 f5 L+ Q% n) j( H! a }2 C' O6 M! ^4 F
}
% y, C/ D) _% p0 `- h}
) V. C0 @/ s! J! ^) `/ f/ d7 ~$ C# R# Z3 W- W
1 K5 }' E; J, ~" F w3 }#=============================================================
; |* a+ W8 K4 F/ Y+ P6 hproc PB_FORCE { option args } {* V5 b# U# S, A8 f( _
#=============================================================. z3 C5 i/ P, j, w6 Q3 K1 h
set adds [join $args]
" ]! p A6 n" T1 m% n5 ]2 U if { [info exists option] && [llength $adds] } {& R9 {/ _: k2 e) G5 n4 O
lappend cmd MOM_force2 z: r% h4 t) p# C
lappend cmd $option
. T4 _2 d1 ?; i7 v1 G lappend cmd [join $adds]
( x3 B4 ^% k2 b3 e3 ~' k( m eval [join $cmd]: H) }6 C$ [; m, A8 l! b% ]. Z
}
& P& k, H# ^, o3 s7 O% O; X}' X0 r/ b* | ^2 M$ s
! b1 a( C) W' f$ d$ q) ~9 j( A4 P0 p" O8 h. s
#=============================================================
. R: T3 V- S8 b2 nproc PB_SET_RAPID_MOD { mod_list blk_list ADDR NEW_MOD_LIST } {4 D X d% i7 G7 Q* x" [9 s: i, j' _
#=============================================================( ]! a. M% m: N% b# \6 k0 A4 ~
upvar $ADDR addr$ V- I/ A' g s! a
upvar $NEW_MOD_LIST new_mod_list. M1 m( b! d) O6 p4 G( z4 C: J" T
global mom_cycle_spindle_axis traverse_axis1 traverse_axis2
4 e# q ^4 _8 B1 C% C" e$ F0 j" A2 Z/ p. V0 v9 Y/ ?6 R6 U
0 Z4 i7 A+ {+ ], x
set new_mod_list ! }) T. Q. B8 q
4 p1 E% C/ }1 L4 T$ A1 l7 T, h% I
foreach mod $mod_list {
- I: S' {; o, F5 C switch $mod {! Y6 v/ r8 P( S' ?1 z) S0 w
"rapid1" {8 C/ i$ O2 _1 c4 x1 w! q/ w
set elem $addr($traverse_axis1), S0 y+ R/ w9 W
if { [lsearch $blk_list $elem] >= 0 } {
9 \% z+ V: o, b* ^4 x2 Y lappend new_mod_list $elem
3 E: E$ c: t+ p6 {" g/ U }
% _# _8 ^$ Y0 N0 C' G }3 R+ r0 G1 b9 S+ H u: ?6 x7 a
"rapid2" {
- V; J9 v3 i5 q set elem $addr($traverse_axis2)4 {, v( O/ q8 o. z# W0 p5 q# L
if { [lsearch $blk_list $elem] >= 0 } {
5 h0 s& t& O5 w0 B) p6 m* u# J& _ O lappend new_mod_list $elem
% x9 a# s; y. U4 m, v) h }
7 x/ `& F* Q1 l/ W }
7 w0 O, I( s e( C "rapid3" {
1 ?% n N* O, x5 Z$ X set elem $addr($mom_cycle_spindle_axis)! e T# @* j! o, m
if { [lsearch $blk_list $elem] >= 0 } {2 O1 }+ f7 T9 \- F1 @
lappend new_mod_list $elem
O9 @. c% X6 g( E* M% D }
6 j4 A1 ^/ f; s! i, ` }! n4 M& A2 g; K% R
default {
# f- ]! m, A# D+ h$ V7 M' z set elem $mod! g/ _) e. I6 O _2 N4 H' p2 s# C
if { [lsearch $blk_list $elem] >= 0 } {" j9 q2 Q N: m( u! }. {8 H
lappend new_mod_list $elem
) p1 v; c6 w; n4 N# S }
% T/ I. j& C! k7 A7 a }0 c7 @9 g; b% S2 l
}
( `6 `) |9 `, {* S; ? j }
+ O" y- k1 h0 L) A}" ]! ?+ q7 t, {) U6 k; O7 o6 E
5 q% ~, d/ O. I0 d4 {0 P2 e, o2 T/ r% c2 n8 B
########################5 c0 e# h% d, j* P6 C0 U# r
# Redefine FEEDRATE_SET
$ y: B! {: A) ]1 D* m1 c3 m########################
4 S+ z0 ~& v4 G/ bif [llength [info commands ugpost_FEEDRATE_SET] ] {- L& J) W, E: t. {; X" b
rename ugpost_FEEDRATE_SET ""% N+ w. w# Q0 k& Y2 B
}, y) O" W* N, `3 J, W! J- p
+ ], s) ]) O5 @3 wif [llength [info commands FEEDRATE_SET] ] {
' \6 f8 T& i+ ~& f$ S7 u5 J rename FEEDRATE_SET ugpost_FEEDRATE_SET7 ~: P; b8 l7 _: F% j5 M* j
} else {3 c1 N# c$ h o7 K) j( x( ]
proc ugpost_FEEDRATE_SET {} {}
! c, Z& ~0 u1 p6 a}' ?! `, H0 U' T/ e/ ^ o
. C. H. N6 l7 T
/ R {, u& Y- N; x' z- ?9 t P1 Z O
#=============================================================
K- U f- P, z! y' v3 N: hproc FEEDRATE_SET {} {
_: l/ @3 w( o, ^( c8 A8 A" J#=============================================================. w; q9 J, E% }3 l* D' X7 D
if [llength [info commands PB_CMD_kin_feedrate_set] ] {
4 ? f+ y4 S% O% H& M" d PB_CMD_kin_feedrate_set
- r# W/ j+ j! j/ w } else {
8 I, T3 x' A- K5 }/ k$ u9 S ugpost_FEEDRATE_SET
' m2 e) p7 v2 {2 l) X' E4 S- S9 Q }* L- {% b2 W) E! Y' z. e
}
* R9 g1 p- d1 S/ b
) Q8 F" L: X* }. R. d6 _
! S1 f% y; N3 y$ y$ [3 _#=============================================================% D. s: t' r( n: @7 g; X
proc MOM_wire_cutcom { } {
2 _6 R+ d4 U% X6 J, T/ q3 L, |#=============================================================0 ~" D9 ~8 [$ ]$ l/ ^1 B+ i
global mom_wire_cutcom_status mom_wire_cutcom_mode1 m4 H. @* n4 S1 S
global mom_cutcom_status mom_cutcom_mode
/ N& L) Y& ^/ J/ j: y- k6 n0 C) c5 k9 X. r6 b
set mom_cutcom_status $mom_wire_cutcom_status0 ^* d7 |! T- e$ a
set mom_cutcom_mode $mom_wire_cutcom_mode
# z* p! n2 H7 r0 g" _' t( d. ]" H5 D( h6 [
switch $mom_wire_cutcom_status {
% D% d% b: Y7 }8 a7 V ON { MOM_cutcom_on }, k. t& m6 R# p$ s2 A0 ]
OFF { MOM_cutcom_off }& ?, e2 C i5 Z; z' U0 U
}8 W$ ~# r7 {( R C' ^& Q) m% v' u
}
8 y; |3 }5 [2 y7 _, j& | ?" m" ], [6 r
; l7 {% t9 P0 L3 w! T& b4 o############## EVENT HANDLING SECTION ################: ?2 N6 \1 A) d+ `6 c6 [) J, J; k
% R! n" Z" N4 W* L
D, Y9 V! [; d f#=============================================================
9 {. T; W6 L$ [1 o9 Dproc PB_start_of_program { } {+ f5 r" E+ q. Y) M3 ]+ U
#=============================================================+ ~( z7 g v: H. O, m
3 |$ w* U4 ?% }( i) D, I
if [llength [info commands PB_CMD_kin_start_of_program] ] {
5 W" V- s5 @7 S" H PB_CMD_kin_start_of_program1 l6 F* s8 N: z4 d& s1 C
}" E+ b1 Z! U( k% e# ^. h
( Y1 m# {. y0 i PB_CMD_start_of_file
1 N; X* k, a8 m: D+ M1 }+ b( T PB_CMD_start_of_program
, u5 N" q4 D8 v9 v5 k T" A; B8 T/ l, [ PB_CMD_start_of_conic
( y6 U6 j: l: @+ u$ b, r: B/ E PB_CMD_first_move0 W' a2 A. \, U& C& s
PB_CMD_drill
( s4 l4 y! f* X7 f9 r( v1 y} y4 k' l) Y( j1 f
8 [3 ?2 q: p! A/ a" ~, O
9 U/ ^6 X7 d" K& p* G% d' ]. W
#=============================================================4 W/ N1 @0 H& ~3 \9 B; C; m
proc MOM_start_of_path { } {- j% V7 Q( J3 Y6 n+ c! l% E; E
#=============================================================
& ]0 M4 e$ S6 v8 P4 w: x global mom_sys_in_operation5 M. X8 d! p4 Q% J
set mom_sys_in_operation 12 I$ U8 `2 m! l7 ~5 ~
! f$ r" q3 r. G6 r8 n! U
global first_linear_move ; set first_linear_move 0
( X9 B) F5 n: i TOOL_SET MOM_start_of_path
- t6 m2 J$ J4 o: I7 v9 D6 o7 N( Z( r8 y' O5 X% j9 Z
if [llength [info commands PB_CMD_kin_start_of_path] ] {8 h7 |: x R P* w! w/ e# d2 Y) n
PB_CMD_kin_start_of_path; D, \. a3 ^# W& x1 [6 U7 J9 b4 C
}' a6 H0 Y# U6 Q, u
8 B5 U% m0 Z' o1 A2 E
PB_CMD_start_of_program
/ C5 p" N+ v: _) v4 l+ p: j0 M}
+ n# A2 U& i3 B' L
5 B s8 U F5 z8 ~4 ~
4 v+ n1 X: r9 y$ p( y x#=============================================================
) q6 U! ^9 o; N9 y5 `+ L, M9 nproc MOM_from_move { } {
6 s# ?: z7 v9 x% ?7 `+ J! ~#=============================================================; V) V V! h2 D* v$ T% W
global mom_feed_rate mom_feed_rate_per_rev mom_motion_type mom_kin_max_fpm; y. Y5 |7 i9 A0 N( U
COOLANT_SET ; CUTCOM_SET ; SPINDLE_SET ; RAPID_SET4 x6 r0 [( J9 C
}9 Y: o- x3 p: [$ o( N1 p
6 v5 v8 W$ y/ f& K
1 n( l" d7 u$ z! A; b2 ?) L- K( T#=============================================================% d9 i1 k {0 d: Y; O5 p
proc PB_approach_move { } {
; A7 ]( `: W9 b# m6 q#=============================================================1 u# l& b4 y8 l# Y" W9 S
}7 Z( L& {1 ^5 E0 }! j% h- u
% ?& c4 F1 d& O, R% d8 d( M2 l
9 T. I, n/ S; h6 U/ b- b9 S3 c" k#=============================================================
6 J* l4 W N y) I+ Z6 mproc MOM_start_of_pass { } {
" ]# l) n+ r8 Y5 a8 s3 {& o' m#=============================================================
D8 X8 Z1 i0 t5 X global mom_sys_start_of_pass. F+ o+ w9 b2 N3 F6 d0 l% G
set mom_sys_start_of_pass 1; @, _8 ?9 S# K
PB_CMD_start_of_pass
) c0 {- G4 H. y/ t1 ~}
& ]0 f5 z2 Q; q1 v) ^8 c) _
! O5 ^9 G0 p2 C
& q$ L4 u7 k+ s- `/ _1 Q5 u# V#=============================================================# Q7 g8 C( |3 ]- r4 Q* g9 s" c
proc PB_cutcom_move { } {
# |7 @/ S& z. G+ y! K+ w#=============================================================
0 U) ?, l1 H: u% [3 M% u}
7 D. W/ G1 c7 q/ o5 ?* c2 s# K8 U" P1 m P/ ?. t8 x8 e$ Z9 }7 H
+ g7 I; B) }0 H' b# W
#=============================================================
0 X3 s3 q9 Y X9 Fproc PB_lead_in_move { } {
2 X. D w! q1 k, R4 f* _#=============================================================4 }$ X8 a' n' T! t" u5 f
}
$ n5 x* |2 H! g; B- |/ j6 T- H: `$ p' w3 d5 E6 Z% x
9 c# o0 N. H' |9 ^5 K
#=============================================================1 z+ e. \$ ?0 v8 o8 H6 O6 F, {3 N
proc PB_lead_out_move { } {
2 n* ^. |, ~/ o- _1 B#=============================================================1 U" P: \* Z" H4 D! \# R
}# v# U* G( f8 r. r6 \
- _1 C( O+ r0 l0 Q, E' h
4 B6 l# N: V. b+ V) r& o#=============================================================
; i1 r9 k5 a8 f$ m. [proc MOM_end_of_pass { } {
% v1 R+ u( ]! E#=============================================================4 ^0 \% t6 L& `8 V
PB_lead_out_move
* n9 H# C" d" L" V PB_CMD_cutcom_off, t f* }' Z9 L
}
# O7 t1 N# J1 r" y y
$ W, g& E$ y# ^. H$ T. w* [% ?; L" r
#=============================================================6 w! R; i6 x* ~! ^
proc MOM_gohome_move { } {1 e- R1 \8 s$ L5 `1 B* K
#=============================================================
4 Z! X& u% @% q) Y4 ~7 w+ ] MOM_rapid_move& `, z3 H' O* U9 o, m0 }9 ]
}! E: E( z9 P5 d. R- Z. t
, W- Q: J3 s1 Q
, [; q h, T! ^: J7 i
#=============================================================& T: e% l# o/ L9 l8 X- t
proc MOM_end_of_path { } {
9 p5 J. C. U8 z4 d! d#=============================================================' V7 ` F$ @3 z( Q3 G# Y3 S
! P1 _1 ]/ R* n* r- t if [llength [info commands PB_CMD_kin_end_of_path] ] {
$ n9 C7 v! ]# v5 z1 z4 z2 ^ PB_CMD_kin_end_of_path
; H* A8 C* A. p1 o x! I# V }1 Y& k h" F1 N; U$ B( V
. m/ w( [ p y7 x# w2 F ?2 ] global mom_sys_in_operation" D, l( N& f" _! t' l" Z9 N; ?& `" M
set mom_sys_in_operation 0
' D3 A' r3 J3 Q- b}
* q0 O4 d, i5 X- ~# Y
/ `1 [3 a; ]5 S( F( c
; r# K0 P" \5 \3 N#=============================================================& [# ?' M* X8 }9 l2 ^9 ^( ^* C
proc MOM_thread_wire { } {' h4 A r2 c4 b# [- O/ l/ _" v4 l. C; S
#=============================================================
: I9 ^) }3 d/ r2 r! g8 L}1 {8 r9 f& _, [2 k
- j% w' d2 g' R I8 N" [5 u$ `/ E a* O8 K
#=============================================================
0 l1 M/ B& W, Y7 Q; fproc MOM_cut_wire { } {* U% a2 q$ x8 {& J( P2 N2 i) n8 ?5 g
#=============================================================. n, z3 p1 k3 X
}- R. Y7 \' m3 H4 _' M
7 g- U. S0 H( n( ~# b
4 D P2 T( C' L2 G3 I# z#=============================================================
8 W( Y' J0 H" y1 O" qproc MOM_wire_guides { } {5 D. [* n b' Z, X
#=============================================================1 Y0 U) G. e0 c G; ~% O
PB_CMD_work_coordinate O: o1 {, a& S: o" {
}3 A8 z9 \* b# s @, a/ o
- v- n2 t1 C, p) R8 |% U/ W
$ K: h8 O/ B. k0 r& r#=============================================================
! Z: D: e: V$ q7 x8 \7 ?, rproc MOM_set_mode { } {3 I! I- n+ `; L; }8 U9 L
#=============================================================
6 [* |6 Q% {) K! G7 }) G% E}/ l- x8 r u5 N1 L) Z/ j
5 W) E5 N- v2 _/ E; x% C% J5 ^
#=============================================================
$ {( x8 Q5 R& Y* A5 q; M( p" vproc MOM_cutcom_on { } {
2 D4 Z, f7 j. z5 E Q6 V( d, i#=============================================================
u3 a! W: k8 ?6 v7 Z0 ]6 T CUTCOM_SET! H( W/ e, R1 k
PB_CMD_cutcom_on; ~/ w2 g6 i( x3 y/ w9 \. ?
}
( r. y0 e: n' o. Z U. U0 I) D. U4 ] m, Q* a
+ i: ]+ l+ }& ]- t7 K3 Q9 k
#=============================================================
; D* U% Q) N* E8 E$ ]. `proc MOM_cutcom_off { } {
2 p8 H/ L6 ^0 c& X/ z8 x; e#=============================================================
. b% N9 F/ A# m; V CUTCOM_SET
) V, E6 T2 C& j9 O" o% q9 w6 R PB_CMD_cutcom_preoff! |: W5 c- K1 b$ G; u, ]$ U4 p
}0 \+ t, e% B+ G
/ Q' b$ u" j( z' s$ h2 ]: D% Y
4 G0 B; @! m; u A2 q#=============================================================0 [; |( A' O( k# R) Y5 B
proc MOM_feedrates { } {# b: `/ f1 C) j9 w4 v+ l- D$ o( I3 c
#=============================================================- d$ k3 e& H" ]2 G2 X) s
}
) f8 o5 O" T3 W7 i, a8 B
7 |3 L( ^& g/ s, E& D; l, ^& C' c4 C( b7 c5 w i* _1 c& g% ^
#=============================================================) d+ Q, }+ B4 J4 t
proc MOM_delay { } {- i8 E4 ~9 y& @. y! Q+ F# l# W
#=============================================================# n- Y# ], X/ h- N* ?& e, R
PB_DELAY_TIME_SET7 V4 Z! t% I% M& ~
MOM_do_template delay" Z) a. g, w/ w3 j
}! e; M+ z" l: a( I, j4 ^8 k
* O* X% w5 j( k& d! v
% G1 O0 S6 m! S `8 O/ |, e1 i
#=============================================================
# K1 z8 U, E ^( V9 Rproc MOM_auxfun { } {! x! N( N) v; X" l7 w5 x8 Y A+ X
#=============================================================
* j2 |* V& N1 g- L$ q+ v}6 I8 T' O6 y8 ]6 W% J
4 l& w4 a1 j4 r$ z! b
2 m/ g* o0 _7 R3 [
#=============================================================
+ y$ X W2 ~# N- eproc MOM_prefun { } {2 I) P4 h, a# ^0 w5 e2 Z
#=============================================================
5 f% e& m0 ?# ]) z1 ?}
$ B( C- }& E" x+ W. Z. m7 C
0 `* B) L" V& h& ~& l4 a
. ^5 K3 s+ }+ I& b4 i' Y#=============================================================5 l' a4 T3 R# B3 E" i
proc MOM_stop { } {
0 ]/ k0 y6 \& s, [) I. O#=============================================================3 e/ U0 S6 B- i* r5 `
MOM_force Once M7 p- W0 g& h) O7 s
MOM_do_template stop
: P1 y1 q2 x% A% Q4 @3 H9 k}
6 v! B, S- x( X. [+ g
( D/ s1 d, E0 e: m8 @6 n6 x* Y; n @0 G0 J% j
#=============================================================
: s# [- r% H' `; l+ Pproc MOM_opstop { } {' G. n2 H. a8 }8 f! y
#=============================================================0 t) k _. J- w
MOM_do_template opstop) {0 W7 W+ s8 r) m5 t9 q
}4 _0 P# K: z9 }- B5 `6 `+ S
7 E. P/ F$ b' F* P" Y
2 P, S q5 b: Q* e J* ~4 N
#=============================================================; }) D; j) ]: V' {# k. l2 U9 x( j
proc MOM_linear_move { } {
7 k4 F% u/ j) x! B" K+ g, |8 B D#=============================================================4 I, p2 P% h7 m: K3 x) A. A, E$ e
global feed_mode mom_feed_rate mom_kin_rapid_feed_rate
2 m t" w3 o2 F( S/ A5 w" z; v$ s! n1 L9 }9 y1 k/ W
if { $feed_mode == "IPM" || $feed_mode == "MMPM" } {
$ p# S/ ?& S3 O" O& a; G if { [EQ_is_ge $mom_feed_rate $mom_kin_rapid_feed_rate] } {& T9 R+ w3 p' f ?
MOM_rapid_move! A, q4 s; h- Z5 B3 p7 G' C
return
* V( f' j X/ j. E* w }3 u7 T/ ~4 L/ u; u
}3 C4 {* ]" n( O. G, X
) W* J, Y3 h, v4 b4 p6 ~ PB_CMD_linear4 H3 s# D8 N# S
}
5 A$ [3 H5 e& @$ i' G0 O% s% W0 l, `) X% q% C) m
. ~+ ]/ M4 b3 u1 n
#=============================================================: v; p- c" a5 ~( N- A' }0 R9 p! D
proc MOM_circular_move { } {/ C5 } b) J1 I; i; r
#=============================================================$ G4 T3 K2 F! w, u ?) w
PB_CMD_circular
3 B! F' r& m: F7 F8 D' J$ J5 Z}
4 w# o! i# o) A8 e
Y( ]+ b0 g6 t5 |4 s% T2 Z) i: N/ Y& e
#=============================================================
! q- Y6 I, a) w9 E* ~9 L3 nproc MOM_rapid_move { } {) D3 K4 v+ G/ n/ ~
#=============================================================: w7 D; X: ~4 v2 }
global rapid_spindle_inhibit rapid_traverse_inhibit
8 I) y4 k" r$ ^, b- z; u( m global spindle_first is_from
/ Z+ \* N; t! ^) D0 F! F global mom_cycle_spindle_axis traverse_axis1 traverse_axis2
, V% p8 P: p1 I# U8 G8 ~0 e2 ]; A global mom_motion_event
) _* X0 {2 }: N' @
" @/ ?+ c! h, V2 a set aa(0) X ; set aa(1) Y ; set aa(2) Z
4 r* H p6 @4 z; p$ B, f RAPID_SET
9 u% z% b# g$ d5 i) d MOM_do_template rapid_move
5 N& i2 x2 }2 [}
# Q( v4 j" V* D3 z. S, J5 Y$ c8 `: v8 C i/ T' c
; M- w6 X4 h: S#=============================================================
( Q0 d7 M" X- ^6 m' Iproc MOM_cycle_parameters { } {5 N; d4 N) g$ T; \; t- F# ]4 W7 i" Y
#=============================================================
- }2 k1 x! y! |% x5 c}
( E- U$ l6 X+ A7 [. d: C+ B9 f% I, u. F3 e. w
# y) e1 I) P: {7 F' z4 `#=============================================================2 ~& f. P; T2 }. U; f2 K5 K
proc MOM_sequence_number { } {7 G' X7 m& y6 {" P& X: x
#=============================================================' t2 f; d6 }6 [; n
SEQNO_SET9 l( ?) s- z5 g7 L7 a, P7 u# ^
}
& {8 p, B; i% D% Y* i. G
' x' l1 k) z$ { }' {0 H- [$ S U0 g( g+ p7 r7 }( J
#=============================================================
* A7 T+ W, b% u4 R" l- m. o7 U, [proc PB_CMD_before_motion { } {
- k# |: w7 s" e. y#=============================================================2 z$ A5 M6 |2 ]- `+ F& Q
global mom_motion_type
; m1 Y% H0 \/ ?2 m! n! J' yglobal mom_current_motion
# X5 \1 R1 L( ~2 e% o8 Vglobal mom_motion_distance
, b1 S' N% m7 h2 _ }7 Q; hglobal momPathLength
0 L; {+ H/ V% [( p; p2 P+ z) T8 ^/ Y
MOM_reload_variable mom_motion_type
/ _. W- e% G" M: dMOM_reload_variable mom_current_motion
$ R6 C0 a1 Y# [
- h+ t2 M4 b1 b3 Kif { ($mom_current_motion == "first_move") && ($mom_motion_type == "RAPID") } {" R5 s ]( K' m0 f$ h' }
## Set location point befor First Move:# j. x% ^' c9 i
MOM_output_literal "/G05"
: c; f3 w1 X9 z ^, y4 [ MOM_output_literal "/G06"
$ I1 j/ C. O7 f& L* \% w MOM_output_literal "/G08"4 Y+ s5 {; ]/ E3 y
MOM_do_template rapid_move
0 A8 V6 @/ q& H2 _5 Z MOM_do_template location_start_point
! }: O3 E x I' j4 J return' X/ ~1 l c q+ J1 C( o* ^% o1 E; \
} elseif { $mom_motion_type == "RAPID" } {
1 G a$ G' ~2 U' f! [7 m4 J ## When rapid move, insert and append pause activation:: `) c" Y, E; s# s, B
MOM_output_text " "0 u; U+ P' j d9 g* p& _1 p0 E
MOM_output_literal "M00"
6 k/ K- r: o% r$ \$ l MOM_do_template rapid_move$ \, b. B1 M9 S. Q4 e
MOM_output_literal "M00"
: i# [7 X- ?- L MOM_output_text " "! K* P7 |2 p* ? W8 y
return' b* e! ~/ b2 Y% B6 X
} elseif { $mom_motion_type == "CUT" } {
% F! X( d% f; o) X5 f set momPathLength [expr $momPathLength + $mom_motion_distance]3 X- M# a6 E( k4 {1 ?% E
}
" F: v7 u! b' i0 E}5 G$ W9 E5 M9 H9 }1 O: Z) j5 {
$ h* | [- p+ h8 x6 X& U7 e
" M! [0 L6 b# I* S& j/ a0 E#=============================================================
0 F! v1 L$ c0 p" q2 f" r) W3 iproc PB_CMD_calc_file_size { } {# s6 U4 ^) f0 d/ F5 n! @% a5 @
#=============================================================4 J4 P; ?/ x' l6 a! K0 o
global ptp_file_name: W' W) [* U/ i X6 ]
' O$ `5 F) e9 y
MOM_close_output_file $ptp_file_name( R0 P( m8 @9 Y
set ptp_size [file size $ptp_file_name]! i$ C$ u0 M6 {/ y3 W* N( i
MOM_open_output_file $ptp_file_name3 s3 o0 a& q7 W- [
g& F% @* M/ y3 S- C
MOM_output_literal "( NC file size = $ptp_size bytes )"9 Z0 ?* r9 F6 m! t: B' u
}& ~0 w, X# a6 @) v+ d" J4 N
9 k+ C8 v- x) M6 X
) I, I+ u* w2 \% z5 j#============================================================= x& e- ?" t+ u; Q
proc PB_CMD_calc_machine_time { } {
- B: c2 m6 x. I: X#=============================================================
. }0 w N* K2 i& q- G/ ` ]( G5 \! W$ qglobal momPathLength/ g+ ^, H0 \5 k& P6 p2 v$ I. M
global mom_wire_guides_lower_plane1 k2 O/ }/ ~2 } I
global mom_wire_guides_upper_plane4 E8 s, ?. }$ i' v7 g( \
global mom_feed_rate
2 H/ k% t' q6 d& l% X+ ?# ~9 Yglobal mom_wire_feed_rate
8 w7 n# V/ C* O# c7 S. @. H" F0 U1 P8 n1 o6 I. S, r
global mom_kin_machine_type( X+ t2 o: X: z1 D" U; K4 F
global mom_machine_mode
" E& V5 S( u1 j- z: S: v+ v3 z8 D
8 O& Q2 U* a& r& p: d: U: t% {5 g' x8 {: s% r% l$ D
if {$mom_machine_mode == "WIRE" } {( m# n& B) W6 X% @; k: w! a4 g. ?
MOM_output_literal "( Toolpath Length = [format "%6.2f" $momPathLength] mm )"8 f, |8 P% V) H! P
set momMachineTime [expr $momPathLength * ($mom_wire_guides_upper_plane - $mom_wire_guides_lower_plane) / $mom_wire_feed_rate ]9 ]" S. B U' Q: S0 Y
MOM_output_literal "( Machine Time = [format "%4.0f" $momMachineTime] min. )"6 d- F# ~0 ]6 H$ B7 a% P6 I2 B
4 h4 [/ X) p8 q2 I9 d( L8 e PB_CMD_calc_file_size! X4 P' j4 ]. t# o9 S
}
: M/ N5 F7 n; m6 G} P; f/ f: [ F9 m X5 n
! J: `7 J- u8 h/ \& O
3 K' M; o/ u. t. K" X8 e#=============================================================
. `! p! ]9 m7 f; F, {! A1 Yproc PB_CMD_circular { } {; a' Y- }, D! R# K3 X% A
#=============================================================/ A3 O3 V5 B8 P# ?" M+ r
global mom_tape_status4 Y4 M- r% s5 M, X; {
if { ($mom_tape_status == "ANGLE") || ($mom_tape_status == "NONE") } {4 {7 B+ E/ f1 ~ u% b6 c
MOM_force Once G_motion X Y I J7 ]5 h) c+ F" w$ P
MOM_do_template circular_move+ z! v( f9 U- y& L* ?/ d: T" a
} elseif { $mom_tape_status == "CONIC" } {
: M. `6 V7 M- A! p5 j/ ~ MOM_force Once G_motion X Y I J
5 K* R$ S& P( Z1 C MOM_do_template circular_move_conic& ?" ]* v5 T3 g
} else {
* d/ v. e4 E) x: C/ n5 e MOM_force Once G_motion X Y I J Text G_motion_upper X_upper Y_upper I_upper J_upper" x1 I( z) a8 q4 l9 r$ k+ n+ v, s
MOM_do_template circular_move_complex
$ M* P, a. \4 n}/ S1 c' \6 M! }
}
" o3 E, M" k# R- b" ?8 h2 J1 y- D2 B( e+ P% o$ P0 S
L' p. { [6 f) e: U+ J#=============================================================
0 _0 [; F6 ]" L) v- J& b( ?) {& hproc PB_CMD_cutcom_off { } {5 N+ {" H% v# D& A* Z* a
#=============================================================
; Y' |8 B0 V8 X8 [) @1 }global mom_wire_guides_lower_plane8 M) T% Y; a7 p2 ~
global mom_wire_guides_upper_plane. Z1 @2 _9 a, M6 G7 o( Y
global mom_tape_status
" j% B. U/ r5 N Qglobal mom_sys_cutcom_code(OFF). S9 \1 M+ j3 v; X' ?+ v" i
global momComplex
% E/ @+ I, t! h0 j& g+ P* y( J' q+ O# Y/ r2 u6 j3 L2 }* y
if { $mom_tape_status == "CONIC" } {
: E3 k+ W/ w9 A6 N! r1 F( B9 [9 N MOM_output_literal "G75"
; P: J) E( u1 H R& Q6 @% A}
0 ~0 [7 A' @7 {# j3 O' f; T) o( c+ T# _8 Z* p8 P8 P! `! D
if { $mom_tape_status == "COMPLEX" } {
4 |( _4 f, }' \1 ? if [info exists momComplex] { unset momComplex }& q c- J2 A6 q1 s
} else {
+ T# {+ t! X5 V5 B if { $mom_tape_status == "ANGLE" } {* g+ t7 t6 R' a+ J% n2 k* z# a
MOM_output_literal "G40"4 B7 U: ], R" A; O! [) d6 Z
MOM_output_literal "G50"
. F$ ^: }1 w; P, }$ m( D$ w } else {1 e, j9 ^/ n8 w/ h, P
MOM_output_literal "G40"
# h4 G% ]$ {7 m) Q }2 t% n7 C# m1 Y: Q, x9 T2 F
}) v( b6 w- j; Z$ ?3 ?6 a. X$ Q9 g' o
}/ z! j6 j* |5 y8 [9 D3 P3 b' |
7 \0 R& L7 m5 N' p
; H1 d) l( f" `5 {6 k$ M% V$ a+ W0 e% u2 h#=============================================================
; l, X! H4 y r( @ K4 j& U3 b% Pproc PB_CMD_cutcom_on { } {
: }) z2 Y! g% p1 X1 S; H9 U8 X3 B#=============================================================
5 V2 f5 }3 ~$ z$ m/ W1 iglobal mom_wire_guides_lower_plane
- p0 Z2 q$ T* e; F. ]global mom_wire_guides_upper_plane
% u9 e+ t& r' q5 f$ M Hglobal mom_tape_status' O- t2 j) M% _; y
global mom_sys_cutcom_code* s) t+ {4 m" D( G- ?# `7 z
global momComplex
3 f# ]0 }' O) X; T( q5 O: [global momConic
* z8 M5 v2 }3 p k3 U: |; @! O% Nglobal mom_wire_angle_command+ b- a+ Q) |5 r1 Q( _: Z0 W- x
+ l8 K: m7 Q7 ~) {- V' F2 gglobal mom_sys_cutcom_code(LEFT)3 A) r" {- l8 x
global mom_sys_cutcom_code(RIGHT)3 Y( \# ~7 R# _5 z' L
global mom_sys_cutcom_code(OFF)
* f/ G9 x+ k+ E; d, P( Sglobal mom_wire_cutcom_mode
) ?$ w8 |* X8 t4 U1 C) e7 sglobal mom_wire_cutcom_status
5 G! Q6 A6 f2 W: j# n; mglobal mom_wire_cutcom_adjust_register
# r, z, ]1 `6 u5 l. kglobal mom_wire_cutcom_user_register7 p6 L+ ^5 O, o( c) V
. C5 A+ {- e0 ]( X! X6 hMOM_reload_variable mom_wire_cutcom_user_register
( @% H' n8 h& j0 M5 a/ tMOM_reload_variable mom_wire_angle_command+ k, ~; l5 g$ w5 ?8 w% @' r
MOM_reload_variable mom_wire_cutcom_adjust_register k7 o$ L7 S' g) p9 ^! {8 T7 B' C& h6 C
MOM_reload_variable mom_tape_status' e R6 u( b2 T+ q7 a1 r, j
: d/ J) X: q7 @
if { $mom_wire_cutcom_user_register != $mom_wire_cutcom_adjust_register } {0 v0 ?- M6 s1 `7 g( E2 r) h
set mom_wire_cutcom_adjust_register $mom_wire_cutcom_user_register
+ D4 N+ e* q9 E2 z$ K8 P}. E- ?4 O* Y* z' u2 [! V. f* Q
4 H& X, B4 C1 Pif { $mom_tape_status == "COMPLEX" } {
, z \+ v, @4 X$ y! t MOM_do_template cutcom_on_complex
) g% f' m* {/ J" g J$ W+ b: V set momComplex 1
3 q3 y: v/ T, b} else {' V+ q, p5 |- P
if { $mom_tape_status == "ANGLE" } {# Q/ L& d% P5 h; u+ Y: o$ F9 |4 V
if { ![info exist mom_wire_angle_command]} { set mom_wire_angle_command "G551 A0" }
% ]. Z+ k+ B8 k" B* v' m! H2 E MOM_output_literal $mom_wire_angle_command
4 k: _6 @8 L4 e$ f. |6 j }
, |- z/ C: M8 f if { $mom_tape_status == "CONIC" } {
) b" \3 i4 d6 ?" H$ O/ P# D set momConic 11 f. S% W- P+ ?. x
}9 `3 K8 I' T. h5 d
MOM_do_template cutcom_on, x" x' r' q; R6 }1 I* b! u
}6 p5 y/ F1 h; @
}! _) T- I- n# a% T
3 b8 v- L% P$ H6 M: n
$ D4 x) t/ G+ |1 {; B B! K
#=============================================================+ H. o# Z& _0 b5 e/ G" }
proc PB_CMD_cutcom_preoff { } {& U" Z8 i' J% B( q( i
#=============================================================
7 H/ a/ J5 T, |" P2 |global mom_wire_guides_lower_plane
( R. V3 {) Y+ P8 Cglobal mom_wire_guides_upper_plane J/ H( G- m+ a0 G3 J) \; M
global mom_tape_status9 \/ _5 Z8 A4 i, k4 Z8 G
global mom_sys_cutcom_code(OFF)1 X$ R' l2 c# B. T
( d* @( m) h& s0 \$ M0 wMOM_output_literal "M00"
! F( i8 d" P% K- iif { $mom_tape_status == "ANGLE" } { MOM_output_literal "A0" }
# N8 k. @/ N2 qif { $mom_tape_status != "COMPLEX" } { MOM_output_literal "D000" }
4 }0 @- h+ d; b7 k) H! H( [! M; M/ J& @}) s/ A) c! Q' \& F$ ^ `
8 _8 m7 u5 u1 ?4 P8 Q
H" I# s; o0 @8 @$ y#=============================================================9 H F- z1 [! E" l( l
proc PB_CMD_drill { } {$ `1 Y9 ~' {8 ]' }3 A, p, g& ~
#=============================================================
" o9 |/ d" ?6 `uplevel #0 {
6 e( G% [8 v9 C5 C0 @2 h- Y' g% s2 d$ M0 |3 W7 c/ Z
set mom_kin_wire_tilt_output_type "COORDINATES"
! Q' j4 H7 U9 Z% h. {; S #MOM_reload_kinematics. R2 S0 m: q* V5 Y D( p
1 R F; R! K$ W7 { } proc MOM_drill_move {} {' f4 C# R5 t3 p: X
global mom_pos
/ ^( a" e2 G5 _2 C
/ k9 a! {2 r, ^* T! A) L4 [ MOM_output_text " ": j0 r* \' l2 Y2 }* J
MOM_do_template rapid_move4 N$ Z8 w8 [2 K! P/ C& n
MOM_output_literal "M00"
7 @& V' n5 f" k* Y$ B MOM_output_literal "M98 P8888") k& {2 X/ Q! u
} V4 c$ g) z9 d! ~$ M! \: v
# x% ]( d3 R# w0 s9 ~/ G' t
}" l, Y7 M( H f, Z
}
. I: \% s1 r* i9 j8 }$ ~* b% W' d4 R5 t" K) F: J
0 `2 L. D& \ ^4 e#=============================================================
1 l( r: ]8 Z7 E5 g* {' G8 cproc PB_CMD_end_of_file { } {
) p: w. X) @& m#=============================================================+ r: W U1 R+ l4 H1 x* E
MOM_output_text " "
8 t% \/ E% o# [- F3 J, M1 ?MOM_output_literal "G40 G50 G75"
; `$ C* y1 @9 @! S6 v$ D1 [MOM_output_literal "G90 G09"
* k. l" P" Q9 C5 CMOM_output_literal "T81"- `# u' r& L0 s3 K" T5 S
MOM_output_literal "T97"
$ n5 r, j3 {+ A2 Z% J6 UMOM_output_literal "M00"( S q, Y9 N, ?4 W
MOM_output_literal "M02") k4 d5 Z" j- B
MOM_output_literal "%"
! Y; v) t0 I1 M* R8 |MOM_output_text " "
* A4 K6 V8 q& B; \3 e! O0 b}
+ S) K" Z( j, }4 o! J6 a2 ]6 |% `$ t! x: M3 m
' V. }- S3 M7 @2 p. Q( y3 A
#=============================================================
$ n3 l& w4 x( f Aproc PB_CMD_first_move { } {
- h. Y$ i; X' |$ ]. }#=============================================================
( N. s% V% d% }- j) I, tuplevel #0 {
3 h3 z* _ S0 r/ U proc MOM_first_move { } {
3 _5 A6 f7 a% C! ~) f B+ E MOM_output_text " "
( X: z( L k: ^) L MOM_abort_event1 h! }2 G8 g# w+ ?; e/ v
return
8 J1 x, e+ f9 v0 x. [ } T) }" v; z. h! ~" k
}
5 d1 K. t6 p) p! W2 [" s5 ?}) W* B( @ G8 @2 l3 a3 X9 r
* Q, X+ ?7 \; F# C4 J
, y, L ~' e/ `# H2 [% e' J
#=============================================================, |* P$ J) k" }0 R5 B8 b C" o* _
proc PB_CMD_kin_before_motion { } {: _- t) j$ [( g2 v
#=============================================================
. L; `, s2 }3 A# I}- M% O' Q: l& U" R& }" O
4 q2 x9 K! j; [* p" t- i9 |3 \+ J1 s( \. C* v2 f
#=============================================================6 p/ g2 i9 @% s% |$ Z& X
proc PB_CMD_kin_feedrate_set { } {
. ^2 j9 |. k' w5 u5 n! h8 \7 V#=============================================================
2 ]4 k0 q. x1 O `1 G# This procedure supercedes the functionalites provided by the
; }0 k/ B0 ~( ?9 F5 C- L, M# FEEDRATE_SET in ugpost_base.tcl. Post Builder automatically8 k. U0 ]5 X/ l. C5 E0 Z
# generates proper call sequences to this procedure in the
9 N9 g4 Z) A/ k9 ^5 w [2 H# Event handlers.
! b$ c/ N( T+ k8 A7 q8 w: u8 @4 p#
! i7 V$ n6 P( s# This procedure must be used in conjunction with ugpost_base.tcl.9 B! V! {' Z5 |' [0 x
#% m- A8 a9 Z/ Q# b" e3 i
global feed com_feed_rate- f& d. F" S- s) T' N% @7 d& r( d
global mom_feed_rate_output_mode super_feed_mode feed_mode R( L c1 B. h! \! K
global mom_cycle_feed_rate_mode mom_cycle_feed_rate3 U- \' d+ G7 a* y' }
global mom_cycle_feed_rate_per_rev' N- R4 G& |/ F/ I
global mom_motion_type
; l/ t; \3 T$ b/ L! j, }3 V9 m1 M global mom_warning_info* L! x/ I* k, P8 N0 \- L6 ?
global Feed_IPM Feed_IPR Feed_MMPM Feed_MMPR Feed_INV
( ~' x1 y+ q: D: _9 t$ a/ j/ e global mom_sys_feed_param" C& X4 ^" M& Z3 I" J( n, l+ e4 R
global mom_sys_cycle_feed_mode
# H/ p% s* c. H8 n2 Y/ t7 h k4 F9 t. y$ @: C4 B+ c* p) ]
0 i9 W. t! G( e+ \! Q# ^
set super_feed_mode $mom_feed_rate_output_mode
5 n2 O; [; w3 r* u2 n
% X/ M/ E/ V, e' m set f_pm [ASK_FEEDRATE_FPM] ; set f_pr [ASK_FEEDRATE_FPR]: a/ H1 E: m% a5 }" h3 t
3 ]9 c. X6 @3 \. F* K
switch $mom_motion_type {7 P( t6 `1 u2 }2 W$ u; J8 ^
" A1 j% N! U0 p& t
CYCLE {/ \" ]/ D4 K' y$ q
if [info exists mom_sys_cycle_feed_mode] { u5 n3 b* ?, Q: @1 w. \0 ^0 I! v- y
if { $mom_sys_cycle_feed_mode != "Auto" } {: m+ {; ?6 B8 X W
set mom_cycle_feed_rate_mode $mom_sys_cycle_feed_mode4 W' E' C$ F! K: H
}
$ L: |7 j4 I9 K; L* F8 p }) r' Q6 K6 H" j+ K6 O4 x6 p5 q, ~
if {[hiset mom_cycle_feed_rate_mode]} { set super_feed_mode $mom_cycle_feed_rate_mode }6 w$ E/ }: G/ @% J- g
if {[hiset mom_cycle_feed_rate]} { set f_pm $mom_cycle_feed_rate }: m: `5 s. G& q, m
if {[hiset mom_cycle_feed_rate_per_rev]} { set f_pr $mom_cycle_feed_rate_per_rev }
- I F& [0 R: N' W. i& m& ^( L# M1 v" q }8 o% b+ G J9 G2 u4 _
- g4 e) u8 R- t+ M& r
FROM -+ W5 W# s. U3 j( }5 i
RETRACT -
* H6 d* n; C- [! _$ C' ?/ L RETURN -
% p2 b& ]( H) u7 @. V8 k. ? LIFT -1 R/ r! j: s# G; F. o& o
TRAVERSAL -
2 U! l. O, D: h6 c& X GOHOME -+ ? U$ q# H0 Z/ K1 X" D( s. ~
GOHOME_DEFAULT -
1 g& u& }7 I1 h' Y! I. a, T RAPID {- `1 ~9 u- E+ V s2 T
SUPER_FEED_MODE_SET RAPID
* r' y. N, Q& J3 r5 A }7 u1 Q% d; d( y( ~/ x J$ W
) ~0 b, Y3 ^% G2 A2 |; i Y
default {
" `; C8 F" _: n" P if {[EQ_is_zero $f_pm] && [EQ_is_zero $f_pr]} {
# L; L9 K9 z1 O' }3 ~+ l SUPER_FEED_MODE_SET RAPID
1 p: j7 u3 w' l/ [1 c. m K } else {
8 r2 m9 |4 z! Y( ?9 o6 c SUPER_FEED_MODE_SET CONTOUR4 i$ G. W- D: [) D% D1 L2 {: w
}4 j3 A) k/ U2 m( y
}$ D) t, m2 x' c! [
}
' S u% i, Y+ N3 R+ W( Z$ @9 ^; f
5 u: c3 t$ h9 Q/ f/ {9 Y. y7 K i8 \0 S# A2 \, r2 J
set feed_mode $super_feed_mode
; y' Y. @# O+ d! b: ?3 S+ z& e' c& ^. Z
8 [+ o& Z6 @8 e s+ ^# Adjust feedrate format per Post output unit again.
. n' g$ F3 R4 D( u: g/ B* T' I global mom_kin_output_unit
. N) S) L: `. E2 X7 j$ F- ^- J; W* _ if { $mom_kin_output_unit == "IN" } {9 d6 {& I. R9 I) T# j0 V
switch $feed_mode {3 z4 f" q& n/ ~. s) L: Q* M
MMPM {
) C5 P- V) ^9 J set feed_mode "IPM"
+ p, W/ [: u- c" S CATCH_WARNING "Feedrate mode MMPM changed to IPM"8 \- C3 d6 {& V
}
3 T9 V$ w7 s- ~8 h- j MMPR {% v- N! M5 s$ @, _- G- k
set feed_mode "IPR"+ Y& v: D9 e$ R$ k
CATCH_WARNING "Feedrate mode MMPR changed to IPR"9 r7 t0 V$ G; t6 ~5 n/ K5 |$ K
}9 y( R: x6 R8 K, j, N
}
" l+ t3 y6 V# ~0 z2 g8 ?& D4 O! w; j } else {# a* C! M0 V* H+ g% I- N& e
switch $feed_mode {
4 D; K; p" u: i! i( i, g- z5 L4 z IPM {$ w9 C2 ^* L* R2 c2 n
set feed_mode "MMPM"* T8 v' I( z7 D, [& o! Z
CATCH_WARNING "Feedrate mode IPM changed to MMPM"- f7 _1 V+ ^- u- z3 H
}
; q) k$ M6 ^( \" `4 v z0 H3 v IPR {" _, C$ O t; w+ ~% b
set feed_mode "MMPR"
t2 n7 b. j6 u- q7 D8 @% r; _ CATCH_WARNING "Feedrate mode IPR changed to MMPR"
6 X- f6 `& }7 t1 ^3 y. f+ [$ N }
- C" ^# |0 c7 X- g: A3 |. ], ~7 u }1 _* d5 J& w+ \3 O+ K# Q
}
}$ B, W3 v3 ^: L+ t- j0 O# A; @& m7 c' Q& u* n" e9 i% y, C
2 d0 b) v2 V. w3 [7 a' W0 O J switch $feed_mode {8 [% E5 R) U' a4 r9 G" m
IPM -
1 Q) k5 _% Y8 `( |. j" g! z1 Y6 c. F I* B MMPM { set feed $f_pm }2 D' B' q3 j( v- W, b) n
IPR -
: I' C0 z) f3 g* T; e MMPR { set feed $f_pr }
5 `* v$ t' a7 X/ \# b* M DPM { set feed [PB_CMD_FEEDRATE_DPM] }1 l" U- i! y& N
FRN -1 {' l+ p) I) p# }% I0 ?
INVERSE { set feed [PB_CMD_FEEDRATE_NUMBER] }: x% h4 }8 g. c6 F( n* x
default { set mom_warning_info "INVALID FEED RATE MODE" ; MOM_catch_warning ; return }
1 `8 ?- q# ^/ z/ Q/ V3 Q" n0 V" N }: B; h" m, a0 U8 S3 N' D
, K# b) P5 e; [9 x' k4 q- i) ?) |
* \" N5 R: `8 n. z4 n# Post Builder provided format for the current mode:
. |) j$ t3 B+ v# W0 @9 A if [info exists mom_sys_feed_param(${feed_mode},format)] {- c" h% k. M2 u; d8 J: b
MOM_set_address_format F $mom_sys_feed_param(${feed_mode},format) j+ R5 c4 V( S; A7 @+ n
} else {. ~+ R* h4 p+ W5 B- d) Y( J
switch $feed_mode {
5 [. H, K. y, p# S IPM -# a: ]0 C/ |9 ? d- G% K0 V
MMPM -6 P$ w6 ~1 K; e5 V+ M! I3 i" ?
IPR -
0 A' c- P, J2 a! m' g5 ^ MMPR -
5 k+ H* j5 A9 y0 x, K DPM -& ^6 ?8 p2 s9 W5 `0 t8 V9 ?6 E. f
FRN { MOM_set_address_format F Feed_${feed_mode} }
7 A* q/ h3 ^: S/ j$ \" ]6 W INVERSE { MOM_set_address_format F Feed_INV }
1 c- | E0 z, p9 X/ |( M5 Q }% U& ]! _) l/ }
}7 w4 A; r# E% l' I
$ v I4 ?( h; R: X/ a9 i9 w# Commentary output9 p8 b; m. \+ F. X3 V
set com_feed_rate $f_pm) h) D% L$ ]# Q: A; {+ r
9 K9 S+ y- a" _: g
9 N9 W, k( D/ Z: b# Execute user's commnad, if any.4 R) q B: D% f% W2 `# n( d
if [llength [info commands "PB_CMD_FEEDRATE_SET"]] {! G1 e$ J& H- r7 l" r0 P+ m
PB_CMD_FEEDRATE_SET6 e3 j+ k4 J; ]+ H! e. N
}
; y$ V# g6 @8 ?& ?}
: n% s# h' _% Z% ~
7 O3 ^) V! k" n; A0 U, Q6 c
" h3 |* x" O6 n- w( `( `#=============================================================
" t; p& P4 N( _$ cproc PB_CMD_kin_init_mill_turn { } {( I) {; l! j v `
#============================================================= O- b& P& Z* l7 d5 T
}" y6 k1 c$ ^! K, H( F
: V/ U% P0 y9 z$ z/ N& o9 R1 x7 O
" @8 g+ Y) p" S% i9 R/ I Y#=============================================================
) E; x T& q3 d: i/ j. @2 Y$ ?proc PB_CMD_kin_init_mill_xzc { } {
0 {. f: E# A( d4 z7 Y; s#=============================================================
% k! `& p7 W" V& c( W' [, \5 i5 L: N}8 A M( `6 N, G ~8 l* S
% k0 b8 O2 N( ?7 R C
8 V: P/ q: i: A; T. G+ x, H
#=============================================================
5 g5 I; ^& N5 s4 O: `proc PB_CMD_kin_init_rotary { } {
; }% x& Y9 [5 L#=============================================================; X+ v6 a9 I+ F
}
; @4 T" [% g$ N! S1 i! ]1 O- H' h0 t( F* p/ q* [
5 i0 v3 V; v$ b! o) D
#=============================================================
- L: e; d0 q, k" f9 \proc PB_CMD_kin_linearize_motion { } {6 T1 N; |! A2 i+ `8 o7 m
#=============================================================
( Z _5 I k+ V}
4 B+ S6 r+ c0 f- @: T" h2 P' K M/ I
) y c8 `% x+ O ~8 p% q: w+ O
#=============================================================; m4 L6 f# \4 U+ N o
proc PB_CMD_kin_mill_turn_initialize { } {6 x9 \ \- t6 C# T! ?
#=============================================================) O/ y h8 o7 t% R* w6 j9 q* ]
}1 n$ f5 Y: X2 v% ?) [3 i1 X
/ }0 D* W4 Q, E8 _; N$ I
, n: C! z. E- g( Y/ o' H$ e
#=============================================================
% j7 }2 o' E& { {4 }* ]proc PB_CMD_kin_mill_xzc_init { } {
: D2 z1 z& n! `2 J# x2 `' _#=============================================================
& E9 k, M: x8 H! j: |" b( g/ q}0 ^" J7 X5 K( V6 z5 B; Q
; L* i8 f3 q/ o4 B1 O9 b1 D# ^: B8 x3 t/ E
#=============================================================
' ~) c M! M/ s- {0 _! P% o4 Eproc PB_CMD_kin_set_csys { } {/ }' @' Z$ Q* ?
#=============================================================) r: b h$ x m. p4 _) e$ p
if [llength [info commands PB_CMD_set_csys] ] {
9 b$ v8 y- L. {# R4 G' P( _6 C PB_CMD_set_csys5 P/ {% H3 ~2 O
}+ m/ J/ e4 L& G) }$ x1 D
}
3 N" d6 v! W% m1 m) L% E- z1 z$ h$ E' l9 d
/ E6 S2 w: B' n# |6 g- a2 T$ Z
#=============================================================$ h) J& f2 @" P ?: m/ D
proc PB_CMD_kin_start_of_path { } {' |3 u2 G n/ Y) K( L2 A
#=============================================================
6 ?+ Q% q, H' ^! n) l% v#
. O( Y; R2 _4 m5 v# This procedure is executed at the start of every operation.
o4 p2 [) p9 q; `: Q5 t( ^# It will check to see if a new head (post) was loaded and
' m S0 ~0 W3 p' B- A+ F/ a# will then initialize any functionality specific to that post.9 |0 X" |; @; d- z2 T* ]. F
#' s" u2 @( t! S
# It will also restore the initial Start of Program or End
7 X& M+ \6 s. Z$ F7 A6 d0 \: B# of program event procedures.2 ?8 D1 h) l3 T6 ?8 K6 |0 H
#, F: P. t( p# U2 N- v: U
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING.9 o5 C! W7 \6 ^2 g n1 v2 ^( K9 o
# DO NOT CALL THIS PROCEDURE FROM ANY OTHER CUSTOM COMMAND.8 h9 c/ e/ p8 ?7 h& l
#
2 r8 P$ U1 `, Y* ^5 e4 N- w global mom_sys_head_change_init_program
3 k* P$ q, |. w+ s2 G b
: t6 Z3 p3 N4 F if [info exists mom_sys_head_change_init_program] {$ \( \* b$ y( b( I2 A4 {
/ F$ \9 ~2 Y( a5 a# E, z PB_CMD_kin_start_of_program) x* u4 K4 W; J9 p5 @# O$ G' \ m' @ Y
unset mom_sys_head_change_init_program
8 \: |! V* M' p2 s N! [
# P [7 _& i1 w0 \- d. Q2 o& Y( l # Restore master start & end of program handlers' h$ Z! D5 w- S5 V a
if [llength [info commands "MOM_start_of_program_save"]] {
: h! Y2 ]5 y! r2 U4 v if [llength [info commands "MOM_start_of_program"]] {: X( _1 V2 P, J( \/ ]
rename MOM_start_of_program "": Q& n/ r4 F& X% s% m8 w$ k4 s
}4 `% X0 D9 I7 |" ?/ z
rename MOM_start_of_program_save MOM_start_of_program
1 ~; }( W# F: x: u4 U }; K# u# X F; N! L
if [llength [info commands "MOM_end_of_program_save"]] {" `+ K' Z$ M3 X
if [llength [info commands "MOM_end_of_program"]] {& y E4 r4 B6 a3 \& m5 U
rename MOM_end_of_program ""2 K( w2 @9 _1 U2 ]
}- x: Q# A: S. z, b. I
rename MOM_end_of_program_save MOM_end_of_program
$ A' G2 ]) l. y5 M; L( v }
- z$ }! ?& l. G) ]2 l; |
; k% V8 e' K" p9 U9 T # Restore master head change event handler
, ~! S4 g# o1 E l7 m7 o) A if [llength [info commands "MOM_head_save"]] {0 N% j2 P6 p9 R
if [llength [info commands "MOM_head"]] {
2 ?$ w! A: ]$ y1 n rename MOM_head ""+ A- v3 C# f9 @$ Q/ ~% e
}4 v6 t9 R5 I" k* L
rename MOM_head_save MOM_head: K4 o' i: {: g$ X5 c
}
& g) Q8 z% y8 b; @6 z* ^4 F# |% N }: S9 l4 t9 Y1 O: Y
}
- W: \8 H. I' T$ R4 s3 x" L+ Y2 l. F, w5 @7 V- M2 W8 P) F
* N3 f4 l# N) P#=============================================================
9 E1 ?: B4 z5 @proc PB_CMD_kin_start_of_program { } {
_0 S; ?" Z+ R. m3 x#=============================================================
3 w" j2 k; s4 N5 v( b#
4 E$ S% D3 g$ x; R. R! X+ w: q# This procedure will execute the following custom commands for$ B' p1 } l/ X" R' x# z5 R
# initialization. They will be executed once at the start of ; o; `/ H( o8 V0 E9 I
# program and again each time they are loaded as a linked post.
u$ j$ R6 D9 H7 z6 s- g+ S# After execution they will be deleted so that they are not 9 R9 T( M1 T& B& [5 ]
# present when a different post is loaded. You may add a call 2 C) F" X) h. s+ q/ k6 Y/ j
# to a procedure that you want executed when a linked post is ! y: n) p2 u$ n% E$ X
# loaded.
6 t5 k7 r. C, }7 `% Y#4 `9 ]2 ~% H3 n1 I, P9 p# z3 D- e" c4 t
# Note that when a linked post is called in, the Start of Program, E3 e$ L) N- s D' u1 H5 B
# event marker is not executed again, only this procedure.
; n* c( T& K+ j* S5 {#
4 ^0 y6 v9 j* ~# A5 I9 y5 B# DO NOT REMOVE ANY LINES FROM THIS PROCEDURE UNLESS YOU KNOW! d" I$ m7 c7 w8 ^5 M$ S6 a5 ~9 X
# WHAT YOU ARE DOING. DO NOT CALL THIS PROCEDURE FROM ANY! W8 m* g: P Z- G. v
# OTHER CUSTOM COMMAND.# Z6 M& f: M. Z7 n( f1 Q5 @
#
6 K: d+ P) [# [7 D4 ~8 @
& e9 `$ U: b/ h global mom_kin_machine_type
7 x+ g6 V: P3 v o/ U# e& d; F
/ {: R& U1 }, U9 V9 s9 ~ set command_list , T3 \2 j" Q. e
9 E X2 o- F5 M# p$ K+ j
if [info exists mom_kin_machine_type] {- }$ v! b. m1 d( W) D. |
if { ![string match "*3_axis_mill*" $mom_kin_machine_type] && ![string match "*lathe*" $mom_kin_machine_type] } {+ y7 y9 N$ @, m$ @
, D9 f( q/ A& k' x lappend command_list PB_CMD_kin_init_rotary
, o; X5 t3 S' w6 {1 n }8 B4 k4 }- {; _8 l0 W
}
, k2 l9 M3 c# x4 z v& _
/ h: p6 g f: u, ?8 ?+ [: @9 u4 w lappend command_list PB_CMD_init_auto_retract! K! v% \! v' u, S- A" G1 T: E
lappend command_list PB_CMD_initialize_parallel_zw_mode
8 b/ i( o2 ~9 n. U lappend command_list PB_CMD_init_parallel_zw_mode
6 b# W( i! s& U1 w2 ^3 k9 u! L7 I lappend command_list PB_CMD_initialize_tool_list
' }. m/ @7 y) w7 W/ E lappend command_list PB_CMD_init_tool_list
' L. \; D6 M: z8 i5 B* T lappend command_list PB_CMD_init_tape_break# {, S8 r; l: Z1 O' }# W
lappend command_list PB_CMD_initialize_spindle_axis# W# f& W5 s( ^3 i+ ]
lappend command_list PB_CMD_init_spindle_axis
% q; K1 q( h9 I* O/ W0 H. p) {4 D6 l lappend command_list PB_CMD_initialize_helix
% q' o" z `7 U7 s4 S lappend command_list PB_CMD_init_helix9 h0 Y% p0 C3 {! v# g; ^
lappend command_list PB_CMD_pq_cutcom_initialize( F! E5 D6 i; Q) Q
lappend command_list PB_CMD_init_pq_cutcom
7 \6 u8 p$ t) _, g
0 {( P, D" C- M if [info exists mom_kin_machine_type] {4 |/ [, e: T$ t5 v% I' X. w9 t
if { [string match "*3_axis_mill_turn*" $mom_kin_machine_type] } {
4 L) P0 w2 X4 `8 ^
7 t( t, \6 v& P7 z3 I0 ^ lappend command_list PB_CMD_kin_init_mill_xzc; ?) ] O% O b- [4 h; F# j
lappend command_list PB_CMD_kin_mill_xzc_init, S2 v. w3 S7 f" l u4 }
lappend command_list PB_CMD_kin_init_mill_turn
* ^ W6 [3 o% r! I) H m6 m/ s: F. e lappend command_list PB_CMD_kin_mill_turn_initialize
7 M" M* }! i$ a6 n! J }; l; X' ~% Z* H& b2 R9 r4 h, D: e( i
}
$ V8 A, P- l, V, a& z% _ h% ^7 k" g3 C5 @8 e
foreach cmd $command_list {: E% c& N& T9 l$ m
# c/ I: P8 I1 K& R' M
if [llength [info commands "$cmd"]] {% C8 @* r H, b, Z; f( a
# Skip execution of commands that exist in v2 mill-turn posts.% c1 {# ^6 {, B
switch $cmd {
- L6 m) X' B' ]& F7 \, b "PB_CMD_kin_mill_xzc_init" -
$ W4 G" J+ K: t3 l, t "PB_CMD_kin_mill_turn_initialize" {}
7 W% U+ y/ X3 N3 z, W6 \ default { $cmd }3 f5 P8 q4 y( G6 Z( x8 q" I
}/ C4 N( ]) L. e, K' U
rename $cmd ""( q8 a( B9 A4 \0 h
proc $cmd { args } {} & H/ {8 ~2 i0 m
}
1 T4 E3 U! `# E; A7 U: E# W9 [ }
- @- K0 q1 m$ \& i) h}
& t# @( v& S X1 n! @. j* r9 v( X6 e2 _! n& Y( r- c
# {! s% y* Y( J9 H8 ~/ C% e1 l
#=============================================================- Y4 C' q: g3 [ A* `; |8 F# }
proc PB_CMD_kin_wedm_engage_move { } {) j5 t' q% `/ t1 p% o, c' n
#=============================================================# B5 j% D/ i& r! w/ n) b
#3 a' Z$ g5 S1 f7 u$ Z' x
# This procedure is called automatically in MOM_before_motion: K( j2 L" v) x) q0 _$ k
# to handle the Engage move for Wire EDM operations.9 @- r! \' r) S4 K3 F5 i" |7 w5 i8 G
#
$ j2 [/ q* V9 d& K: K! P( T global mom_sys_start_of_pass
' r; U8 V6 l- ?- G9 j$ `1 a* b2 |9 e! X$ |" p p
if { [info exists mom_sys_start_of_pass] && $mom_sys_start_of_pass } {
. O6 v" l% I0 Z2 I global mom_lead_in_cutcom_distance
) C: b8 a% c3 ~. `, R global mom_lead_in_method
" u) B" \+ d7 V2 V global mom_lead_in_cutcom_angle& G' Z! j3 F2 U x+ @
if { $mom_lead_in_cutcom_distance == 0 || ($mom_lead_in_cutcom_angle == 0 && $mom_lead_in_method == 1) || $mom_lead_in_method == 0} { 2 |) k. a# Z8 @# A: g1 q
PB_lead_in_move
" `- E5 }% i3 ~5 Y } else {
& b o( K, G7 [( \ PB_cutcom_move
* E. s$ c2 q9 z& Q' v/ A }. E+ S- U8 O! G( C4 d3 O2 w! s
unset mom_sys_start_of_pass
# L) L0 o% t. l3 @9 L9 L8 Q) U; v } else {
{( T2 ?) N2 F d& _3 j PB_lead_in_move4 {2 W$ h, D& H0 U( I' }! V
}; m! f, E( W$ ]/ V% G
}
' r* I& y5 w @8 V: H6 A3 P$ {/ j, F: ?: y; _
% c1 H2 |6 b* _6 s8 R `" i#=============================================================
J' o* c& s% {/ a' b$ T( rproc PB_CMD_linear { } {
* F2 A/ E, e3 Z) Q2 |#=============================================================) C( ~4 Y2 j* o! |
global feed_mode mom_feed_rate
. t0 w( A; c2 G% G, ]( u$ g- ^global mom_kin_rapid_feed_rate
6 ~ }2 U+ s8 {global mom_tape_status! ]/ ?. r/ d# G% Z2 J t! d
global suppress_output 7 T. H0 z# D. x' d
global mom_motion_type
3 r* @2 W* N# \8 \! Nglobal mom_current_motion
+ \) i8 q% q6 s, r' dglobal mom_pos% ?/ ^8 j1 p" Q8 U$ j
global momComplex$ z2 `+ F8 S/ [( g+ T
global momConic& m) B! L# r, H5 t
4 V$ D2 l6 ]( g. E; A) Q
if { $feed_mode == "IPM" || $feed_mode == "MMPM" } {1 o1 f3 x8 F/ O$ X- t# H
if { [EQ_is_ge $mom_feed_rate $mom_kin_rapid_feed_rate] } {
7 u7 o3 f8 P9 J MOM_rapid_move* G2 S" ?* v3 t* h, v4 M( C* R
return! h; b* [5 Q0 E/ [# `
}5 c4 Z4 g- ?- O, w8 X# s0 K
}
( |) |# C- _0 g7 u9 e4 a* d; o! L9 `4 o9 y+ u
if { $mom_tape_status == "ANGLE" } {
8 ]# z ^; ` l* u( C g5 m MOM_force Once G_motion X Y # @2 G8 f% a6 r' P1 E% i) M7 T
MOM_do_template linear_move* r& b$ s) A% b% F$ ]
return8 k: Q, W) ?, o1 u' p* E& g' m
} elseif { $mom_tape_status == "CONIC" } {
. Z- y1 P" _5 V MOM_force Once G_motion X Y/ Z: d/ P `6 Q; M
if { $mom_motion_type != "CUT" } {
2 A% n$ n( V& V set mom_pos(3) 05 n ~6 v& z0 h, f
set mom_pos(4) 0* y4 T. S$ R$ z
}
. D3 c0 s ]6 ^+ Y- M MOM_do_template linear_move_conic
* u1 e1 ?0 {9 i7 l6 C, o* M& i return
2 N$ Z d1 J! u7 b, l( t+ {} elseif { $mom_tape_status == "COMPLEX" } { v& z: m: f S* Y
if [info exists suppress_output] {MOM_abort_event}9 s) \/ n' ~; u; R# @4 ~; n
if ![info exists momComplex] {
7 l; ~! l* e0 D+ N0 e# K MOM_force Once G_motion X Y
8 n7 D" ~% ^' s9 M5 w if { $mom_motion_type == "RETRACT" } {
! e; m* N/ ?5 I) ^& r set mom_pos(3) 0
+ b: C8 f" N8 y L R* \ set mom_pos(4) 0: c; L- P2 @! c7 Y* P! p
MOM_do_template linear_move_complex6 w& q: a, ^ g: k+ s+ {
MOM_output_literal "G140"- c5 u: D# l1 j# q$ P
} else {
% J3 n4 V+ N" R3 j c* ^( p MOM_do_template linear_move% U8 T# F! M* ], W& {
}
" y) Q. b6 Q8 ^5 k7 x6 b4 ]' n( Y* | } else {1 V$ N# l y& D/ P( D, t5 v
MOM_force Once G_motion X Y Text G_motion_upper X_upper Y_upper
* W4 p' r: L8 ]" ~. p' h. _ MOM_do_template linear_move_complex. g& P3 u$ T1 u0 S& n/ \1 C
}8 i; U1 I e/ Q. {2 P( d
return3 q+ |+ p, i9 B( O$ N! |' _9 D' v& `
} elseif { $mom_tape_status == "NONE" } {6 f, `7 x* p/ s" z- j
MOM_force Once G_motion X Y # ^. S$ ?$ N9 q) U9 S: d% T
MOM_do_template linear_move8 m- h- h" Z9 U
return
- L7 o$ G& I9 Z5 ?5 s* O' u! I}: Q8 x: |3 L/ g( \/ H. v ]4 p. M
}
. z5 j6 O+ |) J3 `
4 M, r3 v% }9 L+ _4 h7 u+ w% H7 J; b: J7 G8 v$ G
#=============================================================
0 }) A+ J! _( l6 o& T+ q3 Aproc PB_CMD_output_tape_per_operation { } {+ ?: n& j7 z9 e- A
#=============================================================
: I# T; {* x+ D3 t2 l. ~#, e4 _2 D* i0 h" U
# This procedure can be used to output an N/C tape with each operation.
6 k! U5 ~1 ~- u/ G& l, @# Place this custom command at the VERY begining of the Start of Operation
5 U1 `, U$ t, G# event marker.' X( A" p0 w+ T w% }' F5 {# O
#7 _' |7 ?4 q9 a( h( l3 k$ q( E$ c
# This proc will also delete the initial program tape and rename it to 9 \/ ~& I; T' c% ?0 Z* y5 f, _* |
# {operation_name}{sequence number}{extension}.
0 p7 G* ]! [6 J* Z; G# Any N/C code output with the Program Start sequence will be lost.
: B% X( {( v. S8 C; W#
d- ?2 D9 U0 r& h global ptp_file_name
! }% u, f0 u% m6 K6 f global mom_output_file_directory7 P: Z) H! e* A- `/ S6 i
global mom_operation_name
1 o- e" {- O' V global mom_output_file_basename; i7 P! l$ E* o. w. W" y
global mom_sys_output_file_suffix
4 h" y$ I2 v. u
* O. @7 H0 _8 W: L# R#5 J( |# P2 u2 [& A
# Remove next two lines of code if you don't want the original nc tape" L4 k" G1 X) t0 W' j
# with the start of program info to be deleted.- d5 y9 R: d9 M. J" x/ g* V1 a
#
. Y( ?5 u% T; z( A/ k set fn ${mom_output_file_directory}${mom_output_file_basename}.${mom_sys_output_file_suffix}
; F8 i w' E- [ if [file exists $fn] {MOM_remove_file $fn}
8 A S' L, z2 s3 O5 J/ P( Z" Z% M- Y- D+ O$ x5 P6 r: `
MOM_close_output_file $ptp_file_name
( i5 j! K, Z1 T* e) L5 {
/ S( D: {5 R1 h set ptp_file_name "${mom_output_file_directory}${mom_operation_name}.${mom_sys_output_file_suffix}"- m" z9 v- i$ o5 E% _2 U/ B( H
MOM_remove_file $ptp_file_name9 ~9 d5 R) |8 W$ M
MOM_open_output_file $ptp_file_name8 { T1 v8 P1 ]0 Q& x
}9 Y9 f- f3 [+ e* t7 F+ _
3 n6 |; `( W$ U% l% q, [: f @+ \0 |
#=============================================================
& j% h: [1 }- ^3 ~" n/ o& Yproc PB_CMD_pause { } { \& B+ a! r+ J2 N
#=============================================================
0 H& l; c# l9 |* n/ u$ r& Q# This command enables you to pause the UG/Post processing.
. E. W& _9 [! D5 S0 o# { S3 ?, B/ S7 R5 y
PAUSE
k6 f! I- J8 u( c2 ?}
! a$ Z. j# C# U" \" l" t M2 q) O! z6 b& u' y9 U2 q/ L
* s. P; w+ h: R! o- [/ p#=============================================================
# f$ F5 d# M; c( n5 ?- ~6 Vproc PB_CMD_start_of_conic { } {0 T: f7 j: }2 Z8 [
#=============================================================4 w( W* K3 k% S, _: U* n
uplevel #0 {
% _3 |5 x1 q# k/ {! d set mom_kin_wire_tilt_output_type "COORDINATES"
( Q0 j; f" k! | z6 n: C$ J/ Q4 Y% M. B4 T8 K7 z1 @
MOM_reload_kinematics
" j: k& s' { |/ I5 A+ ^1 n# g
0 R& M8 b3 q8 W5 l0 ^ proc MOM_start_of_conic {} {
/ G+ _; V. Q2 l0 r* Y" C: S) {( _ global mom_upper_arc_direction
5 O/ R6 r( W2 x global mom_arc_direction
1 B K2 a% w! x2 v global suppress_output
9 t! {, S! u- J* O' T3 O global mom_prev_pos6 S4 H7 d5 U5 {' R+ c
global mom_conic_motion_type
% y! p8 K1 M2 p* l# ~+ g+ T& h global mom_tape_status
' P: f3 O: @& T3 x" h: w; K& ~8 E
8 ^0 D) q! N/ q, w- T set suppress_output 1: g+ ?# E4 S1 m' |
if ![info exist mom_upper_arc_direction] {set mom_upper_arc_direction CLW}
% R" v" r' l' v+ \% |8 D2 C5 d9 i& h2 C7 c' q
if { $mom_conic_motion_type == "LINEAR" } {
- U0 z$ I% a2 u0 e5 i #if { $mom_tape_status != "COMPLEX" } { ( H; z7 I, v& B' H6 P$ g6 Q+ O. B+ x1 l
PB_CMD_linear3 X! _! w* @$ n- Q- F: n5 e8 {
#} else {
. h5 K" f; ?/ T3 i, v # if [info exists suppress_output] {MOM_abort_event}# A3 m k. B5 O! z c9 O% M
# MOM_do_template linear_move_complex
8 U) n1 k3 t% A! S #}$ W, f$ [* r7 _
} else {
8 q! P. x; A1 B+ A' t% Y' n% J PB_CMD_circular
; o/ ?$ A/ ?( ?( [ # MOM_do_template circular_move_complex
5 Z$ \+ V- b# w }
" r r9 W8 @) [$ P; k; D, ~ }
, r# ?+ y, K" }2 p" a! |2 t' s# l9 W7 ?+ @% B, z# k
proc MOM_end_of_conic {} {
& o2 ^* ~2 D2 w3 R: b$ e9 _ global suppress_output
9 N! P4 r- g4 t5 g8 q if [info exists suppress_output] { unset suppress_output }
% P: y5 G/ e9 t, t8 `/ T( M }9 d [# Y' j v7 O
}
5 d6 s9 R9 W5 S% X5 A}
{/ m) L, A! ]- k0 f, O
: o0 P# U: Z; C& s5 L U1 b) i
* p. ~8 k9 B6 _& E9 e#=============================================================; W7 u+ j9 d3 x! E
proc PB_CMD_start_of_file { } {- C7 b- ` u; i* q3 @
#=============================================================! [+ I% V$ I7 X( y% U1 Y
global mom_ug_version
0 N4 O# {' k1 J4 Jglobal mom_event_handler_file_name; v# ` [9 @( X, z x
global mom_path_name- p4 \! c( `% }& E4 R R! C% a
global mom_part_name
, g6 h; ]! P- I' \& _) y' _7 rglobal mom_output_file_basename8 C* i6 [% w- G/ e/ {; v
global mom_output_file_directory) p; {( m, t; `* O4 z( s
global mom_output_file_suffix
2 F7 G( i* K1 c4 S7 wglobal mom_logname, k0 w7 Q6 ~8 J2 Q1 H
global mom_date9 S8 r" e; V3 e: T! K# A U) a5 E* A, n
global mom_machine_mode$ ~$ A" K+ _- K6 J
global mom_power_value @2 h# V0 U( }0 ~6 [
global mom_auxfun5 k4 S' @- h; W: O _3 w1 S
global mom_wire_guides_lower_plane
9 f; F" [% A4 w/ N- O/ Eglobal mom_wire_guides_upper_plane
2 e1 E* l! Q& x1 x3 }% xglobal momPathLength
. D' ?! L" R. K* P7 `' c4 Xglobal momPoster
% E8 D& v6 A5 \8 [3 v. U- Kglobal mom_cut_type
7 x+ O! g( a( X+ O, Pglobal momWorkstation3 I0 P" ^$ q( n" j; b
global momLogonDomain. U: O$ V/ y: v$ l+ E
global momPathNext& `' s) { W& @# ~! C9 @, O; ]9 S
global mom_kin_machine_type$ X3 b' J5 y8 o1 Z5 j/ Q5 P& M' a
global momComplex
; [! |8 h5 B1 Y H3 o
6 R+ P+ P& r' J7 P' e+ M. h& aMOM_set_seq_off( J& @+ z# m. U5 f4 p( K
+ A/ A, J9 w5 I( j2 Gset momPathNext 100
! t# V9 b8 D$ A/ y- ?6 m% k/ G8 tMOM_output_literal "( Unigraphics WirePost for Cheewah, Ver 1.1 )"4 {3 O+ ~/ v# ?* h: _4 r2 |% v
MOM_output_literal "( Design by Deaton, 2005/09/19. )"
, v# Z' N1 T: s/ r3 J- `: q: {7 PMOM_output_literal "( Email: deaton@21cn.com, Tel: 13923361400 )"4 {; U" W( @- Z: w; Q) r9 I
set momPoster "CMDEATON"4 P: @7 F+ F4 k5 ^ D; e
set momWorkstation [MOM_ask_env_var ComputerName]
& x! M! [1 z6 n6 V" Fset momLogonDomain [MOM_ask_env_var UserDomain]
; J- H: ?0 i+ U( n3 V5 |MOM_output_literal "(================================================================)"
- f1 z# x3 N# d% [8 T. kMOM_output_text "( Activate Version: $mom_ug_version )"
6 c3 r6 _ z2 @5 z* X5 oMOM_output_text "( PostFile: $mom_event_handler_file_name )"
# W' d5 c% d% n- ?2 }4 Y$ ZMOM_output_literal "(================================================================)"( x4 `( y; T5 v S
MOM_output_text " "5 `/ `3 ]8 P1 G' b8 L2 ~5 r
MOM_output_text "( Current Part File: $mom_part_name )"8 r$ o" i5 `9 A2 i+ @! T2 L' h
MOM_output_text "( Toolpath: $mom_path_name )"
' i. J7 L1 D; s" j* R6 k7 oMOM_output_text "( NC Output Directory: $mom_output_file_directory )"$ u/ Z2 |; D1 ~+ ]
MOM_output_text "( NC Filename: $mom_output_file_basename.$mom_output_file_suffix )"
, |2 ]3 e4 r$ c. JMOM_output_text "( DNC Machinical: $mom_machine_mode )"( r1 K- T$ t, `; Z; x) Q+ L
MOM_output_text "( DNC Machine Tool: $mom_kin_machine_type )"
+ k, Q& q- K6 M/ h- @8 \0 ?
# j" B& f' Q' G; B* ?if [info exists mom_cut_type] {
! R |; F: J" G' O7 Q( X% ^% L switch $mom_cut_type {. Q1 j; e) y6 N
0 { MOM_output_text "( Toolpath method: External Trim )" }
0 l9 z# B8 W# y' r0 D 1 { MOM_output_text "( Toolpath method: Internal Trim )" }8 R( L8 X0 r) {' m5 d
3 { MOM_output_text "( Toolpath method: Open Profile )" } 2 S+ ]9 g/ q4 `$ O
}
$ n% Y2 ^& @2 r}' Z- h3 V4 y' U' `! f9 S3 \- }* |
2 f* g' s- k0 M6 _: X
MOM_output_literal "(================================================================)"3 j* m5 P: m1 z5 o& W8 n9 f: N+ ^
MOM_output_text " "
% j6 q4 z4 h* J/ O' I2 V( LMOM_output_text "( CAM Workstation: $momWorkstation )"7 Z- w4 B0 L5 s5 H7 S
MOM_output_text "( NC Programmer: $mom_logname )"3 O8 n( k% V+ U! k+ l0 U- m4 P
MOM_output_text "( Logon Domain: $momLogonDomain )"
* x7 ^. J( {; ~2 F6 i' vMOM_output_text "( Post Date: $mom_date )"; i, {# a0 B4 C1 H6 k0 N2 ~! z W
MOM_output_literal "(================================================================)"
3 l* O% Q) ~. }4 ?: u: KMOM_output_text " "
0 ~, C- b( w3 t1 y8 A* D' z/ |( \4 i; w" g
MOM_output_literal "(NO = ON OFF IP HP MA SV V SF C WT WS WP WC)"- ?8 p% }, k8 U$ y+ L1 ?% u
MOM_output_literal "C001 = 005 010 017 001 14 05 02 0004 00 000 000 000 000"9 r: t! ]6 r* U
MOM_output_literal "C991 = 004 015 017 001 17 06 02 0005 00 000 000 000 000"
' N6 E$ b8 G0 h' vMOM_output_literal "C992 = 000 019 017 001 19 05 03 0006 00 000 000 000 000"
* M# ?) X' I% A9 M# n% P/ `% wMOM_output_literal "C993 = 003 016 017 001 17 03 03 0005 00 000 000 000 000"6 F$ K8 d4 r4 A+ d3 d) {
MOM_output_literal "C997 = 005 010 016 003 12 08 01 2004 00 000 000 000 000"1 t# o3 w3 G ^% I
MOM_output_literal "C998 = 002 002 015 000 00 04 00 2004 02 000 000 000 000"
' v2 R, X- j1 g6 b$ gMOM_output_literal "C999 = 005 012 016 003 12 05 01 2004 02 000 000 000 000"/ P% n2 w! F& Z, \+ W
MOM_output_literal "(================================================================)"/ D, U. Y, V6 [6 p
MOM_output_text " "1 O4 ~$ B) b$ I- N
7 T5 r+ f' e! T1 \: A! i
set momPathLength 09 z$ F p. E2 R0 w+ ~, T
4 n1 W; V. d! V& {& q7 p9 ~MOM_output_literal "G40 G50 G09 G75"
$ _: s& ~. l7 |4 J @: mMOM_output_literal "G90 G11 G21"
7 N9 f% z5 X7 B+ Z& m1 M% [1 ZMOM_output_literal "G958"
: R3 M. O/ r- \7 @MOM_output_literal "G04 X+2500" f# X( A. |5 e6 Y- K8 B/ S
MOM_output_literal "G92 X0 Y0"; b3 W( s$ o# ?2 c3 S6 y0 s
MOM_output_literal "G54"6 s( c+ G0 W: E, T3 [! ]) M) p& Y+ A
MOM_output_literal "C890". z7 j* u- y) V7 k% ^( C- V
MOM_output_literal "(================================================================)"- k5 V8 w- h. i, N6 c
MOM_output_text " "5 e A7 Y, c" m, r3 I# a4 l
}
# X1 }9 z% c/ V h7 s D* ]) P( H# u" N3 L. i* h6 ~
. O: [; ?' o. b- W#=============================================================, o3 t m0 Q: Y5 ?
proc PB_CMD_start_of_pass { } {
0 U6 o, N2 ~! X2 p3 X7 H3 F0 P#=============================================================# L6 D1 c) v' Q( ~- M0 L0 w
global mom_wire_guides_lower_gap! l" H% }; r* L
global mom_wire_guides_upper_gap
3 j/ o4 h, ?2 T8 x9 \" G0 yglobal mom_wire_guides_lower_plane
* M j9 o3 W# M! M1 e* O5 `3 gglobal mom_wire_guides_upper_plane7 d' e. O) @3 O: t9 o' r
global momPathNext
# z3 p) Z( x* ~# s" Mglobal mom_tape_status& l) y/ z% W P" Q
global mom_wire_angle_text
# b% }& g0 o l& ~' _. h; Dglobal mom_flush_pressure
% K, D- M# t! u$ ]2 [* x9 x' |global mom_power_value
' c& D' _: g c7 iglobal momWorkstation
- R- z0 c( q: n& d X+ E2 gglobal momLogonDomain3 D7 Z* y6 j1 l8 U7 [0 P
global momPoster* L' i% @. ^- b# E
global mom_sys_cutcom_code(LEFT)% L+ t6 L5 p+ n5 B# g% I
global mom_sys_cutcom_code(RIGHT)
0 g: k' S1 u: b1 ^# r! l) Vglobal mom_sys_cutcom_code(OFF)
\* [, ]9 c0 ^/ w0 O3 l+ x; x" q$ |global mom_kin_arc_output_mode% C/ {- R" b$ D" A7 Q& ^
global mom_kin_wire_tilt_output_type
9 E: e' a0 ]6 c* R3 k0 sglobal mom_wire_cutcom_adjust_register/ Y2 J8 w3 b" L, W# b2 E" E
global mom_wire_cutcom_user_register/ x% J% y( f/ G) ]7 x7 e0 a+ [
+ N2 ^" q2 \6 S4 f" Y! Lif { $momWorkstation != $momPoster } {
0 H- |2 d: B4 U! v/ m% L7 w) j( b MOM_abort "Error occurred. No workgroup can be access, Postprocessing has been aborted"
; H% K8 x) G6 n; N+ u9 l) Z}) Z8 W! ?0 A' L
if { $momLogonDomain != $momPoster } {
( E2 W" i4 X( F& p8 `4 k- a+ r! b7 f MOM_abort "Error occurred. Post server isn't supported, Postprocessing has been aborted"6 h; r+ e4 W: W! B( }( a
}
" H. b3 W* q$ a, m% i9 |. |2 {if { ($momWorkstation != $momPoster) | ($momLogonDomain != $momPoster) } {7 g$ j9 K- }$ S( |
MOM_abort "Error occurred. Postprocessing has been aborted"
9 N5 A) b! }5 A& M0 O, N0 x}0 a* L9 n3 ~+ F9 p! ?
8 R/ c$ N9 @3 X) g
MOM_reload_variable mom_wire_guides_lower_plane. U, U8 n* A/ V( g5 k* I: C
MOM_reload_variable mom_wire_guides_upper_plane
3 g3 ]/ a1 r/ `* r) mMOM_reload_variable mom_wire_guides_lower_gap
* x- f4 A& o) I& m6 yMOM_reload_variable mom_wire_guides_upper_gap& b: \1 F2 [3 I$ C
MOM_reload_variable mom_tape_status* x) R9 Y; w0 p. c' L
MOM_reload_variable mom_wire_angle_text4 q; R) q9 |( n1 s, r; D. Q% C
MOM_reload_variable mom_flush_pressure
0 O6 v7 }- h$ _ H: F: q# \( P- YMOM_reload_variable mom_power_value' c( e( I6 g- q6 y( K
MOM_reload_variable mom_wire_cutcom_user_register
& a Z; q, m" W7 D* h: a8 ~1 E8 k( C. }8 r5 B4 s4 n
MOM_output_text " "
6 g/ R* W+ z2 z; P% L3 ~" x
& x# Q% D" Y0 ^& ]* hif { [info exist mom_tape_status] } {: _6 |. Q8 T& O3 J" y8 L! {
switch $mom_tape_status {
7 x) b4 }0 L ^ W( l "NONE" { 5 R6 [: v4 ]/ D8 j6 S/ J) T8 v
set mom_kin_wire_tilt_output_type "COORDINATES"' `: O3 n4 ^; P' u' N. r
set mom_kin_arc_output_mode "FULL_CIRCLE"+ f# E) c- Y y( o
}
) W3 f4 m$ Y2 s l. w5 J "ANGLE" {) [) q5 p# O( h9 v/ ?4 k
set mom_kin_wire_tilt_output_type "ANGLES"
# x! E, A, [7 F) d7 ]; g' j2 t7 w set momPathNext [expr $mom_wire_guides_upper_plane - $mom_wire_guides_upper_gap]6 v$ [8 u) J( F: C6 X
set mom_kin_arc_output_mode "FULL_CIRCLE"9 C, x9 C8 e% [# c9 \8 [4 I! j
MOM_do_template tpset
7 } Q0 _ V- Z) ^, j MOM_do_template tnset+ S- X0 M' b) ]2 Q5 s
MOM_output_text " "
7 v+ ~! x1 r; l6 W$ j9 b( F1 N }' i4 B4 @& Z5 v
"CONIC" {
+ Z) z0 C" p4 D. u- D3 _; M5 l set mom_kin_wire_tilt_output_type "COORDINATES", o1 H- O2 S# ~5 N0 o; ]2 z% _. H
set mom_kin_arc_output_mode "LINEAR". k. D$ q. i( e+ B3 Q3 G
# set mom_kin_arc_output_mode "FULL_CIRCLE"$ [1 x8 H* H% n; d) p
set momPathNext $mom_wire_guides_upper_plane+ x, S2 z5 r+ V% K
MOM_do_template tpset& G u" k( T$ r9 r1 [: s" h
MOM_do_template tnset
; _; w, w3 v1 P/ k/ F, f4 o MOM_do_template tuset
* P/ r7 Q) v1 d- g1 k" D MOM_output_text " "
$ { h8 ~, q- { } i/ {" R' Z' x& s! b A" B
"COMPLEX" {! e/ N' c5 a5 |# W
set mom_kin_wire_tilt_output_type "COORDINATES". s& f6 u/ I: L+ j$ @
set mom_kin_arc_output_mode "FULL_CIRCLE"6 M4 D. q2 _0 [: j4 z% q: o6 d) j8 R! z
set momPathNext $mom_wire_guides_upper_plane# b/ i3 S3 C5 B8 G
MOM_do_template tpset0 W! Q6 w5 s1 {, k/ `6 a- B
MOM_do_template tnset( X1 }1 [2 ?8 r3 I$ j7 J
MOM_output_text " "
/ b- d6 }: R3 Q1 q- v9 Y ]+ f+ q set mom_sys_cutcom_code(LEFT) 141$ |* l2 b! h( P7 K( S* x- \, ]9 ^
set mom_sys_cutcom_code(RIGHT) 142) K) h7 J! H% z; G! Y) Z6 h
set mom_sys_cutcom_code(OFF) 140
- {1 M" L' O0 R7 F }
5 z# v' O! h* p }2 y) t, E' ^2 d* J. ^/ Z/ ?6 ^
}- {! {; w& u9 G" Z3 k: Y
! r2 Q6 K I! O$ m0 }/ X8 m
if { [info exist mom_flush_pressure] } {
! |& k" k! M7 W$ f+ t if { $mom_flush_pressure == "LOW" } {0 b6 S% q6 P3 K3 Q9 ]
## Flush off # \1 L. t* C2 j8 A) x
MOM_output_literal "T89"3 C7 I/ u' i/ o
MOM_output_literal "M00"6 B4 c" y! h- p* f
MOM_output_literal "T85"
+ \3 H# ]. b& w; \% P) q4 z } elseif { $mom_flush_pressure == "MEDIUM" } {5 ?2 j$ X% h( X$ q& j! q8 h
## Flush Low with tank+ t7 \2 C* l. G: ]1 Y$ B
MOM_output_literal "T94"
; V- v5 c! E: J% Q- M MOM_output_literal "T96"- u, p# V/ s& f% \( ~: b* J
MOM_output_literal "M00"2 R9 C; x4 l% W- C
MOM_output_literal "T85"
# p: |* A6 k4 O9 C& x3 `; Y" I0 \2 j } elseif { $mom_flush_pressure == "HIGH" } {
* g: Q3 Y/ l/ C1 w$ G ## Flush Low with tank
% k5 G5 T$ ]$ } MOM_output_literal "T94"
1 V: W4 x' J: s- C% d MOM_output_literal "T96"
* r8 f; Q8 i) W+ P MOM_output_literal "M00"
M; M+ _- g0 F" @ MOM_output_literal "T84": e R7 I( F6 Q- d1 k
}
" P% p- a, x: i" X7 a) K# D}
6 [9 P" @2 q+ F$ T, W* |5 C6 m N, y( D6 J) I. X! ~
MOM_output_text " "
: R) R7 ~4 @( j% {MOM_do_template condition& X, y1 V1 Q: Y8 |9 I
# l4 C; r! _* E) r: I+ o
if { [info exist mom_tape_status ]} {
' k6 t, s3 ]$ n k e% r& R# q if { $mom_tape_status == "CONIC" } {( e& R% V k0 \% E
MOM_output_literal "G74"0 o" Z# O4 D) T
} elseif { $mom_tape_status == "ANGLE" } {
" @4 s5 {/ M2 S8 K6 t/ [9 f& h MOM_output_literal "G51 A0"0 w7 g: Y. B$ u) G, Q. {
} 4 @8 \% D5 i& I
if { $mom_tape_status != "COMPLEX" } { MOM_output_literal "G41 D000" }
; ^9 G' n) H% t7 ?}' V* t5 e$ e6 z5 b- |" K( ?
}
7 `$ S2 y p I X& l3 d$ S- v; Q) T6 [2 K8 b) Q6 M- D3 _; }
. f1 `* Y, q5 b3 M6 m( v
#=============================================================+ h4 J' W/ b3 I. y6 p! _! m
proc PB_CMD_start_of_program { } {
) X1 C+ L% s/ E, G#=============================================================* y& ?9 |) ]5 H' m; K) e
global momWorkstation
0 {& `2 Z5 ~; f6 j9 Gglobal momLogonDomain
2 t) @0 f1 {8 d" hglobal momPoster) v* Q$ @* i$ D2 z7 _
global mom_wire_guides_lower_plane
7 U5 [# q% g8 [2 Gglobal mom_wire_guides_upper_plane
7 z( I/ U% H6 V8 ]( s3 v, N2 R, D
if { $momWorkstation != $momPoster } {0 B, Y4 O, i6 Y5 P
MOM_abort "Error occurred. No workgroup can be access, Postprocessing has been aborted"8 T9 [2 @ T) @+ A: Y
}
, @8 x. [, n% ^+ W) y. L
) a& Y1 ]/ G8 {: j5 Xif { $momLogonDomain != $momPoster } {
, M# {8 X* r# i3 H MOM_abort "Error occurred. Post server isn't supported, Postprocessing has been aborted"
- Q4 J" [, ]$ [4 K. D, j3 a, `0 l}+ T1 E' t* ~6 ~* p+ ]
% Z1 d9 _9 x* C$ v' x#PB_CMD_start_of_conic' p5 d2 S2 V7 u( d: P8 Y! S; o
2 \) ]. o& k7 k! P! m4 M* }! Y
if { ($momWorkstation != $momPoster) | ($momLogonDomain != $momPoster) } {
( n" C( D9 j+ C$ J, O3 G. p4 _ MOM_abort "Error occurred. Postprocessing has been aborted"
% F) @, n. k- A9 o' V( [* q}
' f9 r8 p% U/ N) Q3 p}
7 Y7 F J6 c" [# Z9 k' l3 t* u
, v% _ @5 S2 e$ ~0 _2 H) T) L6 S, a- p6 ]4 L8 s- `& x
#=============================================================
6 o d+ g& k! @; H( e4 C" @proc PB_CMD_suppress_output { } {
* U' |. k: M0 P6 Z, j# H9 K) c#=============================================================
, G: v8 e1 p% J. B! p- @; @; t& b1 l! l1 a. |
global suppress_output
, }6 E) }6 |$ p6 o% l" d" i% h8 m3 b& ~
if [info exists suppress_output] {MOM_abort_event}
6 \7 N, n# f& [0 J0 h}
! s! C s& q- @0 P1 p2 v! l- @! }
3 b4 c% M n( s; o2 t
& u k3 D+ r1 X8 d% N4 Z$ {#=============================================================
' J3 x; L8 m" Q+ }/ Bproc PB_CMD_work_coordinate { } {
/ p/ g& }- k- A8 n: B#=============================================================$ M1 [, H2 p/ G$ Y! K
global mom_work_coordinate_number7 v% m" S+ v( U7 K& X: S7 B
9 R9 B8 j& l$ J0 e+ b$ y1 NMOM_reload_variable mom_work_coordinate_number. C' l4 Y5 K4 n+ p" G. V- z; T, S0 W
MOM_output_literal "G90 G$mom_work_coordinate_number"
, t+ B B5 t$ d8 J" {- T}3 B6 r0 Y$ G, \* Y
# k2 y1 W; a: \. A% H( R0 G( [5 i, e& ]# `
#=============================================================3 h8 A0 L2 X, ], ?2 S# b6 u
proc PAUSE { args } {6 r% R7 Q5 E3 _) v [# L
#=============================================================
! r. `; ^5 t: X8 }( j. l- l4 E global env
: d2 V$ I* `* H1 E$ ]8 d/ i \. @! X5 X# E
if { [info exists env(PB_SUPPRESS_UGPOST_DEBUG)] && $env(PB_SUPPRESS_UGPOST_DEBUG) == 1 } {& B6 T7 ]% X5 n
return
5 y* g; o1 j+ z }1 o, y6 F5 Q: m6 T: P# {
' P1 {* w, W) M# i \4 `1 n$ ~
9 U& B, Z c, u: Y1 | set cam_aux_dir [MOM_ask_env_var UGII_CAM_AUXILIARY_DIR]
2 @' I( |, S) x8 n- t& V$ J9 G8 Q6 D
global tcl_platform1 z: n# Z" u9 ^
8 ?+ L. c) R8 F9 g0 r. v3 C
if [string match "*windows*" $tcl_platform(platform)] {
. f; l5 T; C, q9 z1 L set ug_wish "ugwish.exe"4 Y) H2 {' V- `
} else {- Y! u% k. [5 s% u. N7 s
set ug_wish ugwish+ p% J& y# `3 c! _
}+ e) i6 i6 X6 }4 d
8 j: E q/ N) V' ^6 N0 x$ R
if { [file exists ${cam_aux_dir}$ug_wish] && [file exists ${cam_aux_dir}mom_pause.tcl] } {
& H Q- r6 }4 p8 q7 k a
" D" ]/ E9 p: n. i set title ""* e) Z6 K1 L5 j( A
set msg ""
& |2 x+ D0 j9 F$ E! A6 c! [& b3 K# S3 i% _: v0 M3 a! d/ R p9 k" E
if { [llength $args] == 1 } {
- p# \# k+ H6 d1 ?+ W U set msg [lindex $args 0]
7 }" {" O( ? T% A3 `3 x }
( N7 ~, t l9 h$ [
9 Y3 B7 u3 S* T2 }7 N7 C2 |. b8 R if { [llength $args] > 1 } {. u3 E; G) q& y4 X+ \
set title [lindex $args 0]
. b* a/ S8 l0 g5 l1 P, b+ m8 F set msg [lindex $args 1]$ Q6 `! U( q4 L4 d* D' ]4 G2 f6 n y5 ^
}1 U+ V. G4 k2 |3 n' g( d3 X
7 F. a+ n" \, I exec ${cam_aux_dir}$ug_wish ${cam_aux_dir}mom_pause.tcl $title $msg# d2 j" g" T3 g
}/ D! t! A4 a1 F2 M
}0 c; R3 d3 G# @8 n& D; A
+ [* h+ a- [4 P G, Q6 n
5 {1 ~0 K5 Z% q; ~ M% m#=============================================================
: q6 l* G' A1 J7 t+ @proc EQ_is_zero { s } {2 T8 _/ P# E2 ^6 K& j6 L3 R
#=============================================================6 T# X2 |4 o" }* R: N- m# \: |
global mom_system_tolerance% c) d* Y8 E2 n
6 p1 G8 c9 e- M! b8 ?: b2 N4 ?
if [info exists mom_system_tolerance] {$ M0 r$ v6 N: s+ i; @- \' y
if { [expr abs($s)] <= $mom_system_tolerance } { return 1 } else { return 0 }
* W- y" C5 l/ H } else {
6 U" E- ]- F1 { ~1 R. E( s+ e return 0! R& ?" _' [/ }8 }2 @
}
; r1 A; Q/ c" D7 Z z7 q}9 V9 ~2 A2 _1 Y2 Q- l
- K5 v' f9 R" C! Q' _ L/ I7 v" X6 _$ e
1 M* L' S1 h! ?! |8 p
#=============================================================
) ^" L, N8 A! X2 l7 u( L2 qproc CATCH_WARNING { msg } {3 g. I6 y% ^& a% ?1 p
#=============================================================: Z' f4 B v, ~* N; ]# d3 P+ e
global mom_warning_info% ]8 j+ S) F2 s
global mom_motion_event
3 r! @- k7 p% ]. s& ? global mom_event_number! e, w) N1 ]" \1 K b% w/ D
) c1 m$ |/ g+ q, _4 B! Y4 h set level [info level]
5 }4 [/ f! s7 J) U set call_stack ""
4 x& O% O, S/ W" N6 f2 A. }2 { for {set i 1} {$i < $level} {incr i} {
1 ?1 L( v8 H* W) o, j3 z$ } set call_stack "$call_stack\[ [lindex [info level $i] 0] \]"
6 k6 B. m& w! g7 e8 f# e2 p }) K0 ]9 X: i y- Q/ d! C3 W K
set mom_warning_info "$msg ($mom_motion_event $mom_event_number) $call_stack"
6 i5 m% l" y- M' ^, j* }# x" | MOM_catch_warning. p( B, h5 w3 z/ [2 _
}
+ x. S: [% e( a/ s/ V N+ n1 l' _4 O4 b& ^) J0 h9 m
4 z, G e( ~. _. H7 g
#=============================================================5 }5 j- `2 Y/ n
proc WORKPLANE_SET { } {3 x+ W' p: A0 G$ r1 g( ]! @. L1 @
#=============================================================
6 D) D6 k2 ^" \$ Z' Y9 r( X: B- x global mom_cycle_spindle_axis- ^8 V" D4 \0 K) U) v3 a7 t2 J
global mom_sys_spindle_axis
- y! k; T% V% A9 Z8 e global traverse_axis1 traverse_axis2
, ^$ I: W0 ^5 n2 s! z' L+ e6 R' U; {
if { ![info exists mom_sys_spindle_axis] } {
$ k7 }/ w4 V/ K0 d5 Q C! Q* e set mom_sys_spindle_axis(0) 0.0
7 {4 L; f# ~3 x set mom_sys_spindle_axis(1) 0.0
+ C. c3 D& o* {/ S: W set mom_sys_spindle_axis(2) 1.0
7 h7 R7 }' `/ h p' b }
4 d$ O# ~4 Z: E& F) T( m; |; s# ]" f) s9 H) b
if { ![info exists mom_cycle_spindle_axis] } {1 X* B7 D$ S8 k7 U2 s X; e7 \
set x $mom_sys_spindle_axis(0)4 k6 l8 z# J$ }2 \$ @
set y $mom_sys_spindle_axis(1)
; g9 a' S1 U$ o- l d set z $mom_sys_spindle_axis(2)/ ~7 j0 ^' h5 G+ ]
5 K" M) G. ]8 P
if { [EQ_is_zero $y] && [EQ_is_zero $z] } {
# O9 u" ^; v9 U# ?/ M5 w set mom_cycle_spindle_axis 0
3 [' X, f* ^; m0 k9 l } elseif { [EQ_is_zero $x] && [EQ_is_zero $z] } {9 M+ y* F" {; Z: }
set mom_cycle_spindle_axis 1
' _0 w) D6 v5 C5 l8 c' `/ J } else {+ S B; h( \; S) [+ v
set mom_cycle_spindle_axis 2
6 R9 Z, _5 }+ @/ z9 p; e7 t }- }7 G% d2 C6 v9 ^. c5 b V3 b9 H
}" ?( ^# m' G u
# z( R1 S$ t5 n: Q
if { $mom_cycle_spindle_axis == 2 } {
5 ? d. J6 @+ }) f4 w set traverse_axis1 0 ; set traverse_axis2 1
% ?/ ]& g; I4 }/ O' U } elseif { $mom_cycle_spindle_axis == 0 } {
3 j( [; s Y2 w- v& Z9 B! m set traverse_axis1 1 ; set traverse_axis2 2
_, ?0 X. Y& ?2 r$ L) L } elseif { $mom_cycle_spindle_axis == 1 } {
5 o$ F3 f, D9 e8 z( M, O7 h- p% Q# U set traverse_axis1 0 ; set traverse_axis2 2
1 ~$ ~& o) k$ p; c }* b: [% ?& W7 P1 T/ t
}" E7 N% k4 f* ?7 ^8 }
0 S* y U0 A* q$ t
$ Z6 P2 L2 c& e& J#=============================================================
J6 h: R2 B/ sproc EQ_is_equal { s t } {
) d7 H- b! |( h: s# j#============================================================= \( w) @8 R2 y/ n
global mom_system_tolerance& g- ]; V8 B1 L5 k' T
2 ]: ]2 }8 j( j: g1 j# f
if [info exists mom_system_tolerance] {
. M2 r8 r' [/ g: h if { [expr abs($s - $t)] <= $mom_system_tolerance } { return 1 } else { return 0 }
9 R( N# s) q7 F6 S& N3 G1 z# _8 _ } else {. {7 }' k/ C/ V# c
return 05 Z. C; ?- d3 w
}
. Z; q: A% ~' e7 {& v}
8 F# ]* H! b9 K5 d1 h; y. G8 S3 L2 H% R0 Y* p' ^; ]: c
- O/ D! d9 [# e! N! l
1 T( b8 ^( P" {" e% g+ ]/ Q3 M& X! ]" T# F4 M& I4 g
2 G+ A3 i8 m' b t
9 z" J4 t1 d! G. D. z
#=============================================================
# {3 i) \: L7 [3 v: B+ ]proc TRACE { } {
- l' H* T( C5 W#=============================================================) Q$ \& z% f4 \/ q1 W6 c3 c
set start_idx 1. g4 L- j9 n, N- |
( _1 x$ \( K; h; c
set str ""
1 ^6 f4 Y, C- G3 W) d/ Y3 O set level [info level]
" N+ Z% R) [" ?) d' I6 R7 P for {set i $start_idx} {$i < $level} {incr i} {1 X- B+ d- O( N0 o! g
set str "${str}[lindex [info level $i] 0]\n"% _ D6 N. b/ k! E
}2 M4 r( s* j0 Z
" X/ Y1 U) S l3 \% Preturn $str
& T$ N" d# S9 f) P( i* h r}
4 H. M- s' C$ ]6 I: Z4 j
& l" g2 m. S, M* n& A! e8 Y& U. _- d) ^
if [info exists mom_sys_start_of_program_flag] {4 v1 x8 c6 U" `) f
if [llength [info commands PB_CMD_kin_start_of_program] ] {, f1 J/ }: Q0 W3 V7 c: v
PB_CMD_kin_start_of_program
$ O2 c* J4 ]6 F% Z! | }
- w3 c4 C7 x4 M/ Q2 W} else {
u: y- y, ^, q8 A' r" c1 R* p1 C set mom_sys_head_change_init_program 15 h+ b' M( i4 C- ~" p
set mom_sys_start_of_program_flag 1
! k/ T8 Y1 j; j( S# a6 \} |
|