A blog of ideas and improvements for Tormach CNC mills.
Articles | PathPilot Plugins | Fusion Plugins | Spindle Load Meter | PathPendant | GamePendant | About | Contact

PathPilot Plugins for Tormach Mills

Useful add-ons I've developed and tested on my 1100M. They should work on all Tormach mills (770M, 1100M, 15L, etc.).

Lathe users may need minor edits. Feel free to email me for help.


Installation

Simply copy the plugin files into:

/home/operator/gcode/python/

(make directory if necessary, python MUST be lowercase)

Also required: ui_hooks.py must be present in the same folder. None of these will work without ui_hooks.py.

After copying, restart PathPilot and the plugins will load automatically.


Additional Plugins

Dave Loomes also shares some excellent plugins at:

http://xoomspeed.com/CNC/pathpilot/plugins.htm

His original ProbeGuard is highly recommended. The version listed above is a lightly modified variant he kindly adapted for me.

Happy machining!
Let me know if you run into issues or have feature requests.

CUSTOM TAB AND WCS ARRAY

This plugin creates your own custom tab right on the PathPilot main page. It sits to the left of the Status tab.

It features a few buttons I slapped together, though you can edit this with a bit of python savvy. The big feature, though, is the WCS array, which features all X, Y and Z coordinates for G53 through G59. These update in real time as you move the machine.

Also features buttons that switch to G53-G59, buttons to Zero each of those WCS and a Zero All button that does exactly that.

The plugin is lightly invasive in that it modifies one OEM file (but backs it up before it does). I include an uninstall script to go back to stock settings (or, you can just rename the file yourself if you know how). The uninstall script ONLY uninstalls the plugin. It doesn't touch anything else on your machine, including your g code files.

For the geeks, the script modifies /home/operator/<your version>/python/images/tormach_mill_ui.glade (it makes a backup to tormach_mill_ui.glade.bak). Everything else is handled within the _plugin.py.


Patched Message

Uninstalled Message

This plugin survives PathPilot updates in that it will simply reinstall itself if it notices you have upgraded.

Copy ALL files (except the reversion script) into /gcode/python. Load PathPilot. It will install, then you will have to reload PathPilot to see the actual tab take effect. In other words, two reboots.

HOWEVER, if you are going from an older version to v2.10 or newer, Tormach significantly changed the UI, so I have two versions of this script (before approx 2.10 and after).

If you download it and it doesn't work, try the other version.

Install progress, errors, uninstall progress are all displayed in the Status Window.

Tested on 2.8.3, 2.9.1, 2.13.0, 2.14.0.

To uninstall, simply copy glade_and_tabs_reversion_plugin.py into /gcode/python and reboot.

If you want the midpoint and reboot scripts to work, copy them into /gcode/scripts (you may have to make the scripts directory). The reboot script DOES ask you if you're sure.


If you have the "brushed metal" background (versions earlier than approx 2.10), download these files.


If you have the more plain background (versions typically 2.10 or later), download these files.

glade_and_tabs_plugin.py (the plugin itself)

glade_custom_tab.txt (the code that's injected into the UI itself)

glade_match_block.txt (what the script finds to determine what version you have)

glade_patched_marker.txt (what the script finds to see if the plugin has been installed)

glade_and_tabs_reversion_plugin.py (the uninstall script)

glade_and_tabs_plugin.py

glade_custom_tab.txt

glade_match_block.txt

glade_patched_marker.txt

glade_and_tabs_reversion_plugin.py

POSITION LOGGER (TO FILE)

This plugin may be suitable for those reverse engineering or otherwise building code from hand.

You can move your machine to position and quickly log that position to file.

It'd be useful like if you had to write a drilling cycle program and didn't want to hand type a bunch of positions in.

Uses the active WCS and supports G20 and G21.

Logs to logger.txt and you can change the format of what's logged (G1 F50 before the coords, G0, nothing at all, etc) with minor python editing.

Position Logger

CUSTOM ADMIN COMMANDS FROM MDI LINE

This plugin adds additional ADMIN commands to the PathPilot MDI line, similar to built-in commands like 'ADMIN CALC' and 'ADMIN DISPLAY'.

You can easily add your own, too.

Now also has the ability to load NC programs directly from the MDI line.

ADMIN LOAD MYFILE
    (you don't have to type .nc)
ADMIN LOAD MYFILE.NC
    (also works)
ADMIN LOAD TEST*
ADMIN LOAD *TEST*
    (wildcards work, too)

 ─────────────────────────────────────────────────────────────────────
 ADDED COMMANDS:
 ADMIN GEDIT → Opens the Gedit text editor
 ADMIN CAJA → Opens the Caja file manager
 ADMIN TERM → Opens a Mate terminal window
  and many more.

custom_admin_commands_plugin.py

 F1 TOGGLE KILLER

PathPilot normally uses the F1 key as a shortcut to show the Status Window.
However, this view is *temporary* — the moment you release F1, the UI snaps
back to the previous screen. This plugin disables that automatic return,
letting the Status Window stay visible until you choose to leave it.

F1 Toggle Killer

 KEYBOARD JOG KILLER

 By default, PathPilot allows jogging the machine using keyboard keys:
 • Arrow keys (← ↑ ↓ →) move the X and Y axes
 • Page Up / Page Down control the Z axis

 While useful in some setups, this behavior can also be dangerous — a stray keystroke could unintentionally move your machine.

Keyboard Jog Killer

MODIFIED PROBEGUARD

Xoomspeed’s ProbeGuard prevents the spindle from turning on when T99 is selected in PathPilot, which helps protect a wired probe and cable from damage.

However, it doesn't protect against edge cases where the probe is still in the spindle, but the tool has been changed on the screen (in other words, you have an end mill loaded in PathPilot, but the spindle hasn't been physically changed yet).

I wanted to take that protection one step further, so I added a limit switch to the probe cradle, connected to the USB I/O module.

When the probe is safely stored, the switch is closed. This modified version of ProbeGuard checks for that closed circuit, and if it is open, it refuses to start the spindle.

Modified ProbeGuard

CUSTOM 4TH AXIS SCALING

Third party of DIY 4th axis normally have incorrect scaling for what PathPilot expects. In other words, you command a 360° rotation in PathPilot and your rotary only turns, say, 300 degrees.

This plugin fixes that.

custom_4th_axis_plugin.py

AUTO TOOL TABLE BACKUP

Automatically backs up your tool table into the same style .csv files from the push-button option in PathPilot.

Restorable through PathPilot.

Backup frequency and storage location editable in the script.

auto_tool_table_backup_plugin.py

Cycle Complete Notifier + Toggle

Wrote a PathPilot script today that will send notifications (or do anything) when a file completes. But not as an M code.

This runs as a plugin so that it will run after every NC program completes. As such, I have it on a toggle via CTRL + H.

Because it runs as a background plugin, you don't need to enter any custom M codes into your NC programs. It watches for, and will run, after every program-completed declaration.

The use case is for a situation I find myself in often: I load a long program not thinking I'm going to walk away from the machine, but then end up needing to go in the house or whatever. The NC file itself doesn't have a notification built in and, because it's already running, I can't add retroactively add it. So, I'll toggle the plugin via CTRL + H and I'll get a Cycle Complete email once it's done.

Thought of another way: This gives you Cycle Complete functionality on every program you run, without having to add M codes to them.

This, of course, is often unnecessary, so you toggle it off via CTRL + H.

To set this up, you'll need a gmail account with an App Password. This script uses the same logic and instructions from the M Code email sender. Follow those instructions and enter your settings in the included INI file.

You can toggle this script with CTRL + H or by editing the INI file directly (which is what CTRL + H does behind the scenes).

Cycle Complete Notifier + Toggle

Tool Breakage & Custom Message Notifier

This plugin monitors the status window for important or custom messages like tool breakage notifications or ETS mismatches.

When a matching phrase is found, an alert is emailed to the user.

For ETS use, for example. You have G37 P0.005 programmed. This checks if the currently loaded tool is within 0.005" of tolerance when the ETS is tripped.

If it's too long (wrong tool or drawbar failure) or too short (wrong tool or broken tool), it will alert PathPilot and thus this script and will email you.

To set this up, you'll need a gmail account with an App Password.

This script uses the same logic and instructions from the M Code email sender.

Follow those instructions and enter your settings in the included INI file.

Tool Breakage & Custom Message Notifier

Estimated Runtime

PathPilot will show the ETA of a running program, but only after it has been run once and it can log an approximate elapsed time. And, if you rename or edit the file, that estimate disappears.

This can be frustrating, especially for longer jobs.

This plugin calculates an estimated runtime every time a file is loaded and displays it in the Status window. No need to run the file first.

Default rapid speed for G0 moves is set to 100 IPM. You can adjust this in the script if your machine differs (e.g. MX, etc.).

For more advanced estimators with line-by-line analysis, see my scripts here and here.

Cycle Time Estimator

G Code Preview Font Patcher

Changes the G Code preview window to a monospaced font (each letter is the same width. "I" is the same width as "W".) and fixes tab spacing.

This cleans up the appearance of files that have inline comments.


This is before the patch. See how none of the comments line up?


Additionally, when you expand the preview window, it goes (imho) too far to the right.


After the patch, comments will be aligned and the expanded window only goes about halfway across the screen.

G Code Preview Patcher

Lowest Z Finder

This plugin will show you the lowest value each tool in your loaded program will go.

It also watches and reports G10 (which can reset tool offset values).

I use this all the time as a sanity check to ensure I'm giving myself enough Z clearance.

Lowest Z Finder

Jog Shuttle Beeper

If you use the ShuttleExpress Jog Shuttle, this plugin will provide an audible sanity check beep that you've pressed one of the four axis buttons (X Y Z A) and that PathPilot has registered that.

It's good for not slamming your end mills into your work, vise or bed because you meant to move in X and instead it moved in Z, etc.

Jog Shuttle Beeper
beep.wav (place this in /home/operator/gcode/images)

Disable Tooltips For Good

In older versions of PathPilot, even if you had the Show Tooltips box unchecked, tooltips would still display on mouse hover. This plugin fixes that.

This bug has been fixed in at least 2.14.0, but if you are using an older version (like me), you may enjoy this bug fix.

Tooltip Killer

Spindle Hobbs Timer & Tool Life Manager

This PathPilot plugin monitors machine state once per second and checks a single condition: whether the spindle is on. If the spindle is running, the plugin records that second of runtime.

It does not measure spindle load, torque, horsepower, cutting pressure, or tool engagement. The logic is strictly binary: spindle on or spindle off.

The plugin is now also a fully integrated tool life manager, showing install date and runtime. It is editable and resettable.

The plugin writes to two log files and an SQLite database. The first is a master hobbs.txt file that maintains a cumulative spindle runtime total. The second is a detailed time log that records every second the spindle is active and also captures the reported RPM at that moment. A new detailed log file is created every 24 hours.

The daily detail files can become fairly large over time, but they are plain text and can be deleted as needed without affecting the cumulative total stored in hobbs.txt.

The cumulative runtime total is displayed in the status window each time PathPilot starts.

The same runtime information can also be displayed in a popup by entering ADMIN HOBBS in the MDI line.

The monthly calendar can be displayed by ADMIN HOBBSM in the MDI line.

The user can be notified via Reminders. If the tool has seen xxx minutes of use, alert user.

Hobbs Spindle Timer
(the actual plugin that loads with PathPilot)

Custom Admin Commands
(install this if you want ADMIN HOBBS to work from the MDI line)

Hobbs Popup Box
(this is also needed for ADMIN HOBBS to work)

Hobbs Monthly Dialog
(if you want the Monthly display (get it via ADMIN HOBBSM)

Hobbs Daily Dialog
(if you want a per tool per day display (get it via ADMIN HOBBSD)

Hobbs Hourly Dialog
(if you want the hourly display (get it via ADMIN HOBBSH)

Tool Life Manager
(Sortable and editable real-time tool life manager (get it via ADMIN TOOLS))

End Of Day Summary
(And EOD summary of tools, spindles and runs)

Status Window Patcher

Like most of PathPilot, the status window does not use clean tab spacing or a monospaced font. For any type of text based column organization, this provides an ugly, counter intuitive display.

This script fixes that. It changes the font to one that is monospaced and cleans up the tab spacing.


Before & After

Status Window Patcher

File Run History

This script will parse a log file that contains the NC programs you have opened and run. It will display elapsed time and if it was a Partial or Complete run. It is sorted by Day and you can view whatever day you want.

If you have Custom Admin Commands (and required file) installed, you can reach it via ADMIN HISTORY. Otherwise, run it from terminal.

File Run History
(this is the main viewer)

File Run History Plugin
(this runs when PathPilot boots and ensures the log is always up to date. It's technically optional as long as you open File Run History regularly).
 

MDI Line in Probing Tabs

A user requested MDI lines in the probing tabs so that he doesn't have to keep switching back to the main tab when setting up multiple WCS.

MDI Line in Probing Tabs

Update Manager

Pending. All of my plugins will eventually phone home to check for updates and alert the user.

User can disable, along with other settings.

M01 Message Line Font Size Changer

Changes the size of the font in the white-on-blue messages that appear when you call M01 (some message here)


Before


Install Message


After (this is size 10)

M01 Message Line Font Size Changer

Duplicate PathPilot Preventer

If you open PathPilot in a terminal, and are always tinkering around, you may often try to open PathPilot twice.

PathPilot hates that and will crash. This attempts to fix double-runs.

Duplicate PathPilot Preventer

Plugin Download Manager

A consolidated effort to list all plugins available, installed and need updated.

Plugin Download Manager

Tab Icon Patcher

Provides  better icon when ALT + TABBING, like on Windows. I created a professional Tormach logo icon. Requires PathPilot to be run in a terminal.

Tab Icon Patcher
Icon Image