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