📄 axis.tcl
字号:
wm iconname .keys {}wm resiz .keys 0 0wm minsize .keys 1 1wm protocol .keys WM_DELETE_WINDOW {wm wi .keys}# Grid widget ${pane_top}.feedoverridegrid ${pane_top}.feedoverride \ -column 0 \ -row 2 \ -sticky new# Grid widget ${pane_top}.spinoverridegrid ${pane_top}.spinoverride \ -column 0 \ -row 3 \ -sticky newgrid ${pane_top}.jogspeed \ -column 0 \ -row 4 \ -sticky newgrid ${pane_top}.ajogspeed \ -column 0 \ -row 5 \ -sticky new# Grid widget .infogrid .info \ -column 0 \ -row 5 \ -columnspan 2 \ -sticky ew# Grid widget ${pane_top}.previewgrid ${pane_top}.preview \ -column 1 \ -row 1 \ -columnspan 2 \ -rowspan 99 \ -sticky neswgrid ${pane_top}.tabs \ -column 0 \ -row 1 \ -sticky nesw \ -padx 2 \ -pady 2grid rowconfigure ${pane_top} 1 -weight 1grid columnconfigure ${pane_top} 1 -weight 1grid ${pane_bottom}.t \ -column 1 \ -row 1 \ -sticky neswgrid rowconfigure ${pane_bottom} 1 -weight 1grid columnconfigure ${pane_bottom} 1 -weight 1grid .top -column 0 -row 1 -sticky nsewgrid .bottom -column 0 -row 2 -sticky nsew# Grid widget .toolbargrid .toolbar \ -column 0 \ -row 0 \ -columnspan 3 \ -sticky neswgrid columnconfigure . 0 -weight 1grid rowconfigure . 1 -weight 1# vim:ts=8:sts=8:noet:sw=8set TASK_MODE_MANUAL 1set TASK_MODE_AUTO 2set TASK_MODE_MDI 3set STATE_ESTOP 1set STATE_ESTOP_RESET 2set STATE_OFF 3set STATE_ON 4set INTERP_IDLE 1set INTERP_READING 2set INTERP_PAUSED 3set INTERP_WAITING 4set TRAJ_MODE_FREE 1set KINEMATICS_IDENTITY 1set manual [concat [winfo children $_tabs_manual.axes] \ $_tabs_manual.jogf.zerohome.home \ $_tabs_manual.jogf.jog.jogminus \ $_tabs_manual.jogf.jog.jogplus \ $_tabs_manual.spindlef.cw $_tabs_manual.spindlef.ccw \ $_tabs_manual.spindlef.stop $_tabs_manual.spindlef.brake \ $_tabs_manual.flood $_tabs_manual.mist $_tabs_mdi.command \ $_tabs_mdi.go]proc disable_group {ws} { foreach w $ws { $w configure -state disabled } }proc enable_group {ws} { foreach w $ws { $w configure -state normal } }proc state {e args} { set e [uplevel \#0 [list expr $e]] if {$e} { set newstate normal } else {set newstate disabled} foreach w $args { if {[llength $w] > 1} { set m [lindex $w 0] for {set i 1} {$i < [llength $w]} {incr i} { set idx [extract_text [_ [lindex $w $i]]] set oldstate [$m entrycget $idx -state] if {$oldstate != $newstate} { $m entryconfigure $idx -state $newstate } } } else { set oldstate [$w cget -state] if {$oldstate != $newstate} { $w configure -state $newstate } } }}proc relief {e args} { set e [uplevel \#0 [list expr $e]] if {$e} { set newstate sunken } else {set newstate link } foreach w $args { $w configure -relief $newstate }}proc update_title {args} { if {$::taskfile == ""} { wm ti . [_ "AXIS $::version (No file)"] wm iconname . "AXIS" } else { wm ti . "[lindex [file split $::taskfile] end] - AXIS $::version" wm iconname . "[lindex [file split $::taskfile] end]" }}proc update_state {args} { switch $::task_state \ $::STATE_ESTOP { set ::task_state_string [_ "ESTOP"] } \ $::STATE_ESTOP_RESET { set ::task_state_string [_ "OFF"] } \ $::STATE_ON { set ::task_state_string [_ "ON"] } \ relief {$task_state == $STATE_ESTOP} .toolbar.machine_estop state {$task_state != $STATE_ESTOP} \ .toolbar.machine_power {.menu.machine "Toggle _Machine Power"} relief {$task_state == $STATE_ON} .toolbar.machine_power state {$interp_state == $INTERP_IDLE && $taskfile != ""} \ .toolbar.reload {.menu.file "_Reload"} state {$taskfile != ""} \ .toolbar.reload {.menu.file "_Save gcode as..."} state {$interp_state == $INTERP_IDLE && $taskfile != "" && $::has_editor} \ {.menu.file "_Edit..."} state {$taskfile != ""} {.menu.file "_Properties..."} state {$interp_state == $INTERP_IDLE} .toolbar.file_open \ {.menu.file "_Open..." "_Quit"} state {$task_state == $STATE_ON && $interp_state == $INTERP_IDLE } \ .toolbar.program_run {.menu.machine "_Run program"} \ {.menu.file "Reload tool ta_ble"} state {$interp_state == $INTERP_IDLE && $::has_editor} \ {.menu.file "Edit _tool table..."} state {$task_state == $STATE_ON && $interp_state == $INTERP_IDLE} \ {.menu.machine "Homin_g" "_Zero coordinate system"} relief {$interp_state != $INTERP_IDLE} .toolbar.program_run state {$task_state == $STATE_ON && $taskfile != ""} \ .toolbar.program_step {.menu.machine "S_tep"} state {$task_state == $STATE_ON && \ ($interp_state == $INTERP_READING || $interp_state == $INTERP_WAITING) } \ {.menu.machine "_Pause"} state {$task_state == $STATE_ON && $interp_state == $INTERP_PAUSED } \ {.menu.machine "Re_sume"} state {$task_state == $STATE_ON && $interp_state != $INTERP_IDLE} \ .toolbar.program_pause relief {$interp_state == $INTERP_PAUSED} \ .toolbar.program_pause state {$task_state == $STATE_ON && $interp_state != $INTERP_IDLE} \ .toolbar.program_stop {.menu.machine "Stop"} relief {$interp_state == $INTERP_IDLE} \ .toolbar.program_stop state {$::has_ladder} {.menu.file "_Ladder Editor..."} state {$interp_state == $INTERP_IDLE && $highlight_line != -1} \ {.menu.machine "Set _next line"} state {$::task_state == $::STATE_ON && $::interp_state == $::INTERP_IDLE\ && $spindledir != 0} \ $::_tabs_manual.spindlef.spindleminus \ $::_tabs_manual.spindlef.spindleplus if {$::motion_mode == $::TRAJ_MODE_FREE && $::kinematics_type != $::KINEMATICS_IDENTITY} { set ::position [concat [_ "Position:"] Joint] } else { set coord_str [lindex [list [_ Machine] [_ Relative]] $::coord_type] set display_str [lindex [list [_ Actual] [_ Commanded]] $::display_type] set ::position [concat [_ "Position:"] $coord_str $display_str] } if {$::task_state == $::STATE_ON && $::interp_state == $::INTERP_IDLE} { if {$::last_interp_state != $::INTERP_IDLE || $::last_task_state != $::task_state} { set_mode_from_tab } enable_group $::manual } else { disable_group $::manual } if {$::task_state == $::STATE_ON && $::interp_state == $::INTERP_IDLE && ($::motion_mode == $::TRAJ_MODE_FREE || $::kinematics_type == $::KINEMATICS_IDENTITY)} { $::_tabs_manual.jogf.jog.jogincr configure -state normal } else { $::_tabs_manual.jogf.jog.jogincr configure -state disabled } if {$::task_state == $::STATE_ON && $::interp_state == $::INTERP_IDLE && ($::motion_mode != $::TRAJ_MODE_FREE || $::kinematics_type == $::KINEMATICS_IDENTITY)} { $::_tabs_manual.jogf.zerohome.zero configure -state normal } else { $::_tabs_manual.jogf.zerohome.zero configure -state disabled } set ::last_interp_state $::interp_state set ::last_task_state $::task_state}proc set_mode_from_tab {} { set page [${::pane_top}.tabs raise] switch $page { mdi { ensure_mdi } default { ensure_manual } }}proc joint_mode_switch {args} { if {$::motion_mode != $::TRAJ_MODE_FREE || $::kinematics_type == $::KINEMATICS_IDENTITY} { $::_tabs_manual.axes.axisx configure -text X $::_tabs_manual.axes.axisy configure -text Y $::_tabs_manual.axes.axisz configure -text Z $::_tabs_manual.axes.axisa configure -text A $::_tabs_manual.axes.axisb configure -text B $::_tabs_manual.axes.axisc configure -text C } else { $::_tabs_manual.axes.axisx configure -text 0 $::_tabs_manual.axes.axisy configure -text 1 $::_tabs_manual.axes.axisz configure -text 2 $::_tabs_manual.axes.axisa configure -text 3 $::_tabs_manual.axes.axisb configure -text 4 $::_tabs_manual.axes.axisc configure -text 5 }}proc queue_update_state {args} { after cancel update_state after idle update_state}set rotate_mode 0set taskfile ""set task_state -1set has_editor 1set has_ladder 0set last_task_state 0set task_mode -1set interp_pause 0set last_interp_state 0set interp_state 0set running_line -1set highlight_line -1set coord_type 1set display_type 0set spindledir {}set motion_mode 0set kinematics_type -1set metric 0set max_speed 1trace variable taskfile w update_titletrace variable taskfile w queue_update_statetrace variable task_state w queue_update_statetrace variable task_mode w queue_update_statetrace variable interp_pause w queue_update_statetrace variable interp_state w queue_update_statetrace variable running_line w queue_update_statetrace variable highlight_line w queue_update_statetrace variable spindledir w queue_update_statetrace variable coord_type w queue_update_statetrace variable display_type w queue_update_statetrace variable motion_mode w queue_update_statetrace variable kinematics_type w queue_update_statetrace variable motion_mode w joint_mode_switchset editor_deleted 0bind . <Control-Tab> { set page [${pane_top}.tabs raise] switch $page { mdi { ${pane_top}.tabs raise manual } default { ${pane_top}.tabs raise mdi } } break}# any key that causes an entry action should not continue to perform a# binding on "."foreach b [bind Entry] { switch -glob $b { <Shift-Key-*> - <Control-Key-*> - <Meta-Key-*> - <Alt-Key-*> { bind Entry $b {+if {[%W cget -state] == "normal"} break} } }}foreach b { Left Right Up Down Prior Next Home Left Right Up Down Prior Next Home End } { bind Entry <KeyPress-$b> {+if {[%W cget -state] == "normal"} break} bind Entry <KeyRelease-$b> {+if {[%W cget -state] == "normal"} break}}bind Entry <Control-KeyPress-Home> {+if {[%W cget -state] == "normal"} break}bind Entry <Control-KeyRelease-Home> {+if {[%W cget -state] == "normal"} break}bind Entry <Control-KeyPress-KP_Home> {+if {[%W cget -state] == "normal"} break}bind Entry <Control-KeyRelease-KP_Home> {+if {[%W cget -state] == "normal"} break}set bb [bind Entry <KeyPress>]foreach k { Left Right Up Down Prior Next Home End } { set b [bind Entry <$k>] if {$b == {}} { set b $bb } bind Entry <KeyPress-KP_$k> "if {%A == \"\"} { $b } { $bb; break }" bind Entry <KeyRelease-KP_$k> {+if {[%W cget -state] == "normal"} break}}bind Entry <Key> {+if {[%W cget -state] == "normal" && [string length %A]} break}proc is_continuous {} { expr {"[$::_tabs_manual.jogf.jog.jogincr get]" == [_ "Continuous"]}}proc show_all text { $text yview moveto 0.0 update set fy [lindex [$text yview] 1] set ch [$text cget -height] $text configure -height [expr {ceil($ch/$fy)}]}proc delete_all text { set nl [lindex [split [$text index end] .] 0] while {$nl >= 1500} { $text delete 1.0 1000.end incr nl -1000 } $text delete 1.0 end}proc size_combobox_to_entries c { set fo [$c cget -font] set wi [font measure $fo 0] set sz 4 foreach i [$c list get 0 end] { set li [expr ([font measure $fo $i] + $wi - 1)/$wi] if {$li > $sz} { set sz $li } } $c configure -width $sz}size_combobox_to_entries $_tabs_manual.jogf.jog.jogincrproc setval {vel max_speed} { if {$vel == $max_speed} { return 1 } if {$vel == 0} { return 0 } set x [expr {-1/(log($vel/60./$max_speed)-1)}] expr {round($x * 200.) / 200.}}proc val2vel {val max_speed} { if {$val == 0} { return 0 } if {$val == 1} { format "%32.5f" [expr {$max_speed * 60.}] } else { format "%32.5f" [expr {60 * $max_speed * exp(-1/$val + 1)}] }}proc places {s1 s2} { if {$s1 > 1 && int($s1) != int($s2)} { return [expr {[string first . $s1]-1}] } set l1 [string length $s1] set l2 [string length $s2] for {set i 15} {$i < $l1 && $i < $l2} {incr i} { set c1 [string index $s1 $i] set c2 [string index $s2 $i] if {$c1 != "0" && $c1 != "." && $c1 != $c2} { return $i } } return [string length $s1]}proc val2vel_show {val maxvel} { set this_vel [val2vel $val $maxvel] set next_places 0 set last_places 0 if {$val > .005} { set next_vel [val2vel [expr {$val - .005}] $maxvel] set next_places [places $this_vel $next_vel] } if {$val < .995} { set prev_vel [val2vel [expr {$val + .005}] $maxvel] set prev_places [places $this_vel $prev_vel] } if {$next_places > $last_places} { string trim [string range $this_vel 0 $next_places] } { string trim [string range $this_vel 0 $last_places] }}proc set_slider_min {minval} { global pane_top global max_speed ${pane_top}.jogspeed.s configure -from [setval $minval $max_speed]}proc set_aslider_min {minval} { global pane_top global max_aspeed ${pane_top}.ajogspeed.s configure -from [setval $minval $max_aspeed]}proc update_jog_slider_vel {newval} { global jog_speed max_speed set max_speed_units [to_internal_linear_unit $max_speed] if {$max_speed_units == {None}} return if {$::metric} { set max_speed_units [expr {25.4 * $max_speed_units}] } set speed [val2vel_show $newval $max_speed_units]; set jog_speed $speed}proc update_units {args} { if {$::metric} { ${::pane_top}.jogspeed.l1 configure -text mm/min } else { ${::pane_top}.jogspeed.l1 configure -text in/min } update_jog_slider_vel $::jog_slider_val}proc update_ajog_slider_vel {newval} { global jog_aspeed max_aspeed set jog_aspeed [val2vel_show $newval $max_aspeed];}bind . <Configure> { if {"%W" == "."} { wm minsize %W [winfo reqwidth %W] [expr [winfo reqheight %W]+4] }}bind . <Alt-v> [bind all <Alt-Key>]bind . <Alt-v> {+break}wm withdraw .aboutwm withdraw .keysDynamicHelp::add $_tabs_manual.spindlef.ccw -text [_ "Turn spindle counterclockwise \[F10\]"]DynamicHelp::add $_tabs_manual.spindlef.cw -text [_ "Turn spindle clockwise \[F9\]"]DynamicHelp::add $_tabs_manual.spindlef.stop -text [_ "Stop spindle \[F9/F10\]"]DynamicHelp::add $_tabs_manual.spindlef.spindleplus -text [_ "Turn spindle Faster \[F12\]"]DynamicHelp::add $_tabs_manual.spindlef.spindleminus -text [_ "Turn spindle Slower \[F11\]"]DynamicHelp::add $_tabs_manual.spindlef.brake -text [_ "Turn spindle brake on \[Shift-B\] or off \[B\]"]DynamicHelp::add $_tabs_manual.flood -text [_ "Turn flood on or off \[F8\]"]DynamicHelp::add $_tabs_manual.mist -text [_ "Turn mist on or off \[F7\]"]DynamicHelp::add $_tabs_manual.jogf.zerohome.home -text [_ "Send active axis home \[Home\]"]DynamicHelp::add $_tabs_manual.jogf.zerohome.zero -text [_ "Set G54 offset for active axis \[End\]"]DynamicHelp::add $_tabs_manual.axes.axisx -text [_ "Activate axis \[X\]"]DynamicHelp::add $_tabs_manual.axes.axisy -text [_ "Activate axis \[Y\]"]DynamicHelp::add $_tabs_manual.axes.axisz -text [_ "Activate axis \[Z\]"]DynamicHelp::add $_tabs_manual.axes.axisa -text [_ "Activate axis \[A\]"]DynamicHelp::add $_tabs_manual.axes.axisb -text [_ "Activate axis \[4\]"]DynamicHelp::add $_tabs_manual.axes.axisc -text [_ "Activate axis \[5\]"]DynamicHelp::add $_tabs_manual.jogf.jog.jogminus -text [_ "Jog selected axis"]DynamicHelp::add $_tabs_manual.jogf.jog.jogplus -text [_ "Jog selected axis"]DynamicHelp::add $_tabs_manual.jogf.jog.jogincr -text [_ "Select jog increment"]DynamicHelp::add $_tabs_manual.jogf.override -text [_ "Temporarily allow jogging outside machine limits \[L\]"]# On at least some versions of Tk (tk8.4 on ubuntu 6.06), this hides files# beginning with "." from the open dialog. Who knows what it does on other# versions.catch { auto_load ::tk::dialog::file:: namespace eval ::tk::dialog::file {} set ::tk::dialog::file::showHiddenBtn 1 set ::tk::dialog::file::showHiddenVar 0}# vim:ts=8:sts=4:et:sw=4:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -