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