Tool Offset Memory in TouchDRO V3

Friday, December 24, 2021

Virtually, every modern DRO comes with some flavor of a persistent tool offset memory that lets the user enter offsets for some commonly used tools and recall them as needed. An obvious prerequisite for this feature is the use of indexable tool holders and/or insert tooling, or the offsets will change each time the cutter is re-inserted. In the past, few small shops could afford such tooling. These days, the situation is much better thanks to the availability of inexpensive import insert tooling, end mill holders, and quick change lathe tool posts. As such, the ability to quickly swap tools without needing to re-indicate the surface can be very appealing. Unfortunately, the implementation of saved tool offset memory is outright horrid on most traditional Digital Readouts. Entering and recalling tool offsets involves a complicated sequence of button presses, and at the end, you still need to have a cheat sheet to remember what tool each memory slot holds.

Saved Tool Offset Memory (AKA Tool Library) in the current version of TouchDRo offered a much more convenient user interface, but I wasn't particularly happy with the feature as a whole. When I'm working in my garage shop, I don't want to think about operating the DRO - it should just work, so I can concentrate on the part I'm making. The tool library felt like it was always in the way and needed a lot of concentration to not screw things up. As a result, it was on the list of things that I wanted to rework in TouchDRO V3, but for a long time, I struggled with the overall user interface. At some point, I decided to just force myself to use the tool library and take notes about the thing that annoyed me. I ended up making a few prototypes and simply repeated the operation dozens of times to see if I can come up with something better. After several iterations and many frustrating hours, I think I figured out a good system. The feature is mostly done, so I'd like to go over some key points and hopefully get some feedback and ideas.

Areas of Improvement

While testing various versions of the user interface, I quickly realized that there were three things that annoyed me the most. First, the process of entering the tools was very tedious and easy to mess up. Second, any time I had to set tool radius compensation, I had to stop and think hard which way the offset had to go; at one point, I drew a cheat sheet on the white board to help me remember. Third, since I mostly use standard end mills with R8 collets, Z offset was completely useless to me in most cases.

To address these issues, I've made a number of small tweaks and changes throughout the application. The best way to illustrate this, would be to just explain the process(es) you'd use for each action.

More Convenient Saved Tool List

I ended up completely redoing the user interface for the saved tool list. It can be accessed from the main application menu by swiping from the left side of the screen and clicking "Tool Library". This will bring up a dialog similar to the one shown below. By default, the list is sorted in the order the tools were added, with the newest tool at the top; it can also be sorted in the reverse order or by the tool name, either A-Z or Z-A.

Save Tools list is more convenient to use

Depending on the selected machine type, the list will display different information in addition to the tool name. On a milling machine, the list will show the cutter diameter, number of flutes (cutting edges), offset along the Z axis.

Clicking an item in the list will bring up the tool edit dialog where you will be able to change the parameters for the given tool. The user interface for editing tools is identical to the one used for adding new tools; I will cover it a bit later.

To delete a tool, you can press the "trash can" icon on a given row; long-pressing any row will switch to multi-selection mode. In multi-selection mode, you will be able to select and delete multiple tools. Either action will display a confirmation dialog where you can confirm the deletion.

Tool Offset Entry

To add a new entry to the tool offset library, you would start by bringing up the tool list and clicking the "Add Tool" dialog. Next steps depend on the machine type, so let's look at them separately.

Milling Machine

On a milling machine, there is no explicit tool offset along X and Y axes since the cutter describes a circle. Thus, the system needs to know the tool diameter to calculate the offset. This also means that you don't even need indexable tooling for this to be useful since the diameter doesn't change unless you physically grind the cutter down or your collets have horrible TIR.

Tool Offset entry dialog in "Milling Machine" mode
  • Each tool offset must have a name that will be displayed in various dialogs. You can name the tool anything that will help you identify the tool.
  • Tool description is optional and is shown only on this screen, so you can simply skip it.
  • Imperial vs. Metric determines the units for the data entry. It's mostly a convenience feature - under the hood the application will do the conversion as needed. Note that you can set this while creating a new entry; this can't be changed after you save the tool to the list.
  • Flute diameter is self-explanatory. It is used to calculate the offsets along the X and Y axes. This field is required
  • Tooth/Flute Count is required for some TouchDRO functions, such as chip load.
  • Z offset determines the difference in tool stick out compared to the reference tool (more on this later). This field is optional.

As you probably realized, before you can enter the Z offset, you need to be able to measure it somehow, and this is usually the annoying part. The common process is to designate one tool as a reference, touch it off on a tool height setter or some other surface and then, measure the offset for each tool in relation to it. This means that when you want to add a new entry, you first need to find the reference tool (and hope you still have and it hasn't changed), touch it off, zero out the axis, touch off the new tool, write down the measurement, bring up the dialog, etc.

You can definitely do this in TouchDRO V3, but there is an easier way:

  1. Bring up the "Tool Z Offset" dialog, select a tool with Z offset that you have handy, and apply the offset
  2. Mount the tool in the spindle
  3. Touch off the tool on a flat surface and zero out the Z axis
  4. Insert the new tool and bring up the "Add Tool Offset" dialog
  5. Touch off the tool on the same surface
  6. Press the "Sync" button next to the Z Offset field
The app will calculate the absolute difference between the two cutter lengths (subtract first tool's offset from the reading), convert the measurement to the units you selected, and populate the field. You can now fill the rest of the fields and save the tool. Repeat steps 4-6 if you have more tools to add.


On a lathe, X and Z offsets are determined by how far the cutter sticks out from the holder in each direction, angle of the toolpost, tool nose radius and tool height. Keep in mind that if any of these parameters change, the offsets will be off and you stand a chance of ruining your part. On my lathe, I keep track of only a few commonly used tools. All of them use insert cutters, and I've machine positive stops into the shanks, so I can be sure that even if the tool needs to be removed from the quick change holds, I can re-insert it into the same position.

Contrary to the popular belief, the angle of the cross slide doesn't matter, but the angle of the tool post does. Whenever I change either of those angles, I always re-indicate the tool post to make sure it's precisely at the angle that the tool was stored at. In my case it's 90 degrees.

Tool Offset entry dialog in "Lathe" mode

Name and description function identical to the milling machine, the rest of the dialog is slightly different. Unit selection is replaced with the cutter type selection (the dialog uses the default units set in the application settings). The choice of OD/Facing vs. Boring will determine how the cutter will be shown in the graphical view and is largely cosmetic at this point. In future versions, there will be some features that will rely on this information.

Setting X and Z offsets involves measuring them in relation to some tool. Since in nine-out-of-ten cases I start by roughing the piece with the same indexable cutter (I use the same Iskar inserts for steel and aluminum), I designated it as the "first tool" with 0 offsets. The subsequent tools can be added as follows.

  1. Bring up the "Set Tool Offset" dialog, select one of the cutters from the dropdown, and apply both offsets
  2. Mount something with a clean OD surface and straight face into the chuck
  3. Insert the selected tool into the quick-change tool post
  4. Touch off the OD and zero out the Z axis
  5. Touch off the face and zero out the X axis
  6. Insert the new tool and bring up the the "Add Tool Offset" dialog
  7. Touch off the face and press the "Sync" button next to the X offset
  8. Touch off the OD and press the "Sync" button next to the Z offset
The system will calculate the difference between the two tools and pre-populate the fields. You can now save the offset and repeat steps 6-8 if you have more cutters to adds

Better Tool Radius Compensation UI

On a manual milling machine, The Tool Radius Compensation function can be a huge time saver. Many of the common operations, such as pocket milling, slot milling and profiling, requires the machinist to account for the cutter radius. While it's possible to do the math in your head, it adds extra cognitive load, and this is precisely what computers were invented for. That said, many people completely avoided using this function because the offset direction was too confusing and led to mistakes. In TouchDRO V3, I've added a number of user interface elements that eliminate the guesswork from tool radius compensation. First of all, I replaced the dropdown with a set of toggle buttons on the "Tool Radius Compensation" dialog. To set the right offset direction, you can now simply press the button that show the cutter in the correct position relative to the milled edge(s), as shown in the screenshot below.

New Tool Radius Compensstaoin dialog

In graphical view, there are three new enhancements that simplify working with tool offsets. As you can see in the screenshot below, the app now displays an accurate cutter position, so you can quickly visualize which edges correspond to the current position. Tapping on the cutter, bring up a dialog that will let you quickly change the offset direction, similarly to the Tool Radius Compensation dialog shown above.

Graphical View shows cutter offset

My personal favorite is the ability to set boundary lines that automatically set the offset when the cutter approaches the line, similarly to how the app handles automatic sub-datum selection. This is designed to simplify milling of rectangular pockets or oversize slots. To cut a pocket, you would simply add two sub-datums for the opposite corners of the pocket, long press each of them, and toggle vertical and horizontal boundary lines. As the spindle moves towards a line, the app will adjust radius compensation setting accordingly.

Quicker Way to [Re]Indicate a Surface

Last, but not least, I made (re)indicating the surface more convenient when not using indexable tooling. On a milling machine, there is now a function called "Set Z Reference" that can be used to quickly indicate the surface and set Z reference. It can be used with a traditional analog tool height setter, TouchDRO probe input, or even a feeler gauge.

Set Z Reference function dialog

Depending on the drawing, the 0 for Z axis can be set to the top surface, bottom of the part, or anywhere in between. To set the axis reference to this point, you would enter the nominal height of the tool setter into the "Instrument Height" field, place the setter on top of the part and touch off the tool. Desired Z value would be the distance from the top of the part to the desired 0 point. Click "Apply"; TouchDRO will do the math and set the Z readout to the calculated value.

Finally, there is a new "Hold Position" function that can be used to quick swap cutters. Pressing the button activates the function and freezes the readout for the given axis. Pressing the button again will unfreeze the readout and apply necessary offset to preserve the position reading.

When activated, the Hold Position function freezes the readout

Here is how you can use it on a milling machine to quickly swap the cutters:

  1. Place a tool height setter on top of the part and touch the tool off until the dial reads 0
  2. Press "Hold" next to the Z axis
  3. Swap the tool
  4. Touch off the new tool until the dial rads 0
  5. Press "Hold" again to unfreeze the readout

This will obviously work on a lathe, and you don't even need a tool height setter (although they are now pretty affordable). Instead, you can touch off on the part surface or use a feeler gauge for better accuracy and to avoid marring the part.


This post turned out pretty long, and there is a lot to take in. I didn't want to split it since these features are closely related. They are all functional at this point and will be a part of the free version of TouchDRO V3. My goal was to reduce the cognitive load and potential for mistakes when swapping cutters and dealing with various cutter offsets. I know that when I'm working in my shop, there is a lot of stuff going on and I would rather keep track of the part I'm machining than try to remember how to use the darn DRO.

Obviously, some of these features will be more useful for you than others. I'm sure many of you will find novel ways to use some of these features. I would love to hear your feedback, especially if you think something is confusing or can think of a better way to do the task.

Next Steps

This will likely be the second-to-last batch of new features. Next I'm starting to work on touch probe/tool height setter integration. The app has some rudimentary touch probe functionality at the moment, but I'm not happy with it. It feels too clunky, so I'm likely going to start from scratch and see if I can redo it better. My main goal for the touch probe is to make it unobtrusive but quick and convenient to use. I will be asking questions on Facebook once I get a better idea of what it will look like, so if you're not yet following TouchDRO there, consider doing so.


  1. getting the itch to want to play

  2. Fantastic stuff, Yuriy. Super excited to try out the new version.

    A suggestion I have, is to tie the tool list to the saved points. As in, in addition to assigning coordinates to a point, you would also be able to assign a tool. You could then select a point, and all the appropriate offsets would already be applied. Perhaps with a "Insert tool X. Click OK to continue" kind of dialog box that pops up as a bozo check.

    I think this would be super convenient for repetitive fixture work. You'd be able to install the fixture, select the appropriate saved workspace, and establish workspace origin via a specific feature on the fixture. You could then select whatever point you want to start with, and the app will prompt you to install the assigned tool, and automatically apply the offsets.

    1. This is a good idea. I added it to my "TODO" list, but need to see how much work this will be.

    2. Awesome. Either way, thanks for all the work you do, and have done, on this. It really is a fantastic tool.

  3. Thank you Yuriy. Long time user and very happy with the product. Very easy to see this as a labor well worth doing. Congrats on all you have accomplished and the vision you shared in this post.

  4. Another idea I've had regarding the tool list... It would be convenient to be able to reorder the list individually. As in, if I'm using a particular set of tools for a job, I'd like to be able to bring those specific tools to the top, so I don't have to scroll to find them every time.

  5. Is this a joke?
    How many years are you going to be talking about nothing?
    "Look at this nice picture" of something that is never going to be released or maybe it is only a picture to get people to keep on buying your boards!
    This is very disappointing.

    1. Yep, total scam. Don't use it and block this website...

    2. I see you are set to finish it at last.,,🙂.
      I never doubted you , but sometimes we need a jolt.