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