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