Eneroth Tool Memory
Cycle last used tools with a keystroke.
Eneroth Tool Memory

Cycle last used tools with a keystroke.

Similar to how Alt+Tab cycles open windows in Windows this plugin can be used to cycle recently used tools in SketchUp. This can greatly speed up and streamlines the modeling process. The plugin is primarily aimed at skilled professional user looking for ways to optimize their work and is as most useful for tools you use too little to have a shortcut for, but very frequent once you use them.

Please note that the tool stack only will contain actual tools. Other commands, e.g. Save or Zoom Extents, will not be memorized.

Setup

Once installed the plugin needs some manual setup to work. This cannot be automated but takes just a few minutes.

  1. Open the Shortcut settings (Window > Preferences > Shortcuts)
  2. Set up a shortcut, e.g. Ctrl+Space, pointing to Extensions > Eneroth Tool Memory > Cycle Tools. If using another shortcut please note that the shortcut must contain at least one modifier key (Ctrl, Alt etc) and another key. If you chose a modifier key other than Ctrl (Command on Mac), go to Extensions > Eneroth Tool Memory > Set Modifier Key and select that key.
  3. (Optional) Set up a corresponding shortcut also including Shift, e.g. Ctrl+Shift+Space, to Extensions > Eneroth Tool Memory > Cycle Tools Backwards.

Exclude Tools

Starting in version 1.1.0 user can specify tools to exclude. This can be useful if you don't want the tool stack to get filled with tools you already have shortcuts for, or to exclude Ruby tools that you know are not compatible.

To do thos, create a text file in the plugin's directory. Write the tool names, exactly as they are shown in the tool stack, separated by line breaks. Restart SketchUp for the list to load.

Known issues and limitations

Certain tools not added to stack

Certain tools are not added to the tool stack. E.g. the Texture Positioning Tool must be initialized from the context menu of a face. Activating the tool without a reference to a face wouldn't make much sense, and chances are you don't even think of it as a tool since it's not in the toolbar.

Camera tools like orbit and Zoom Window are by default not added either. They can be optionally added but then risk flooding the stack when constantly activated from Middle Mouse Button. At this point there is unfortunately no way to distinguish tools activated from Middle Mouse Button from those activated from toolbars or menus

For Developers

Eneroth Tool Memory creates and activates new tool objects instead of re-using already existing objects to make sure tool is in a clean state.

Tools whose constructors requires parameters will not be remembered by this plugin. These tools are typically designed to be initialized in a specific way, e.g. similar to how native Texture Positioning Tool needs to be initialized from the context menu of a face. For your tool to be supported by Eneroth Tool Memory, make sure it's class can be initialized without any arguments.

As a developer you can implement certain instance methods in your custom tool class to control how Eneroth Tool Memory interacts with them.

ene_tool_cycler_exclude

If this method exists and returns true the tool will not be added to Eneroth Tool Memory's tool stack. This can be used for tool that only can be initialized in a certain context and doesn't make sense to reactivate later from the tool stack.

ene_tool_cycler_name

Define this method with a String as return value to control the name used in the tool stack. For consistency please don't include the word "Tool" in the name. Select Tool is e.g. simply labeled "Select". If not implemented a name will be guessed based on the Class name of the tool.

ene_tool_cycler_icon

Use this method to set the path to a custom SVG icon used for the tool. Please note that this is a highly experimental feature and doesn't support the full SVG specification, just the bare minimum required to get the extension to work.

Change log

1.1.0 (2018-04-07)

Fixed activation of native tools not working on Mac

Let user exclude tools

1.1.0 (2017-11-17)

First release

Reviews

Thierry C's picture

When setting the cycle to only two tools, there is no need to get the choice menu I think.
It should cycle directly.

Eneroth3's picture

If you set it up correctly with the shortcuts and modifier key it will cycle as soon as you release the keys, regardless of how many items you set it up to have.

Waldun's picture

I've mapped (?) the Z key as the shortcut, so when I first tap it the TM stack appears at centre screen and each successive tap moves to the right. When it's on the tool I want I left mouse click and that tool is active wherever the cursor happens to be. The stack closes as the tool activates. No keys to hold down. I noticed that the Select tool is shown at the left end of the stack whether or not I've used it. It's not useable either but never "leaves" as other tools are used and then appear on the stack.

When I copied the action into the Ruby Console the result was that the Line tool was activated immediately but this made no change to how it, or all SK tools, work from the stack.

I'm using SketchUp Pro 2018 version 18.0.16976
Mac OS 10.13.3

I see that there is an update for High Sierra in the App Store. I'll run this now and see if it makes any difference.

cheers,
Wally

Eneroth3's picture

Oh, right. I forgot about adding left click as a mean to select tool too. I've never thought of using the Tool Memory with just one key as I was inspired by Windows Alt+Tab feature that uses two keys (don't know if Mac has anything similar).

Regarding select tool, are you sure you don't subconsciously tap Space when done with whatever you do just before using Tool Memory? I press space all the time myself between operations to get back to some sort of neutral state, even if I don't select anything.

Regarding native tools I've looked into the code and found the issue! I had made a slight brain fart and accidentally used the Windows only number reference rather than the cross platform name reference to activate the tools. The code already contains all the name references, but I forgot to use them. An updated version with this fixed should be available within a few days. Thanks for reporting this issue!

When it comes to third party tools their creator probably never thought of the tool being activated from another extension like this. Tools that need extra info (parameters) to be initialized are not supported as this extension don't know what info they need. The extension assumes that tools that don't need parameters when initialized can are supported but that isn't always the case.

I don't think many developers are likely to rewrite their logic for their tool to be supported by this extension, but it could be worth a try to ask. Adding an icon is maybe easier for them. The description of this extension has some info for developers.

I'll try to get the update to also have an option for disabling specific tools.

Waldun's picture

Thanks Christina,

I appreciate your extensions and your response.

I'm outlining how my installed extensions work with TM and will suggest to certain developers that they consider "minor" Logic re-writes or at least icons.

cheers,
Wally

Eneroth3's picture

Hello again

A new version has now been published, This one should support native tools on mac too. It also allows you to create a text file in the plugin's directory and define names of tools to exclude (exactly as they are written in the Tool Memory UI) separated by line breaks.

Thanks again for reporting the issue with native tools on Mac!

Waldun's picture

Hi,

Thanks, the native tools are showing up on my Mac, with Icons !

I hate to admit it publicly, but I'm an Analphabetic in regards to any Ruby stuff. I've done some searching, at the main SK website as well as the Forum but can't figure how to create the text file in the Directory.

Could you please link to an explanation or example ?

cheers

Eneroth3's picture

That's nothing to be ashamed of! I should really have made a graphic user interface for this but as I wanted to get this feature out together with the bugfix (and the bugfix out as fast as possible) I ended up making this simple implementation for now.

Anyhow, the plugin's folder on Mac should be something similar to "/Library/Application Support/SketchUp 2018/SketchUp/Plugins/ene_tool_memory". I think Mac has a program called TextEdit that can be used to create simple text files. Create a textfile named "exlude_tools.conf" in said directory, add the tool names separated by line breaks, save and restart SketchUp.

The full list of supported native SketchUp tools would be:

Select
Paint Bucket
Eraser
Pen
Freehand
Rectangle
Rotated Rectangle
Circle
Polygon
Arc
2 Point Arc
3 Point Arc
Pie
Move
Push Pull
Rotate
Follow Me
Scale
Offset
Tape Measure
Dimension
Protractor
Text
Axes
Orbit
Pan
Zoom
Zoom Window
Position Camera
Look Around
Walk
Section Plane

Waldun's picture

I've made the file, "exclude_tools.conf.txt" using TextWrangler. TextEdit won't let me make anything but .rtf files.
Saved the file to your plug-in folder, opened sketchup, but the exclusion is not happening. Went through this process several times.

I've deleted all Tool Memory files and installed again from the Warehouse...nada.

Otherwise, the native tools work perfectly from the shortcut key.

cheers

Eneroth3's picture

Try removing ".txt". ".conf" is the file extension."

So far the feature is mostly in a proof of concept phase but I hope I'll find the time to make a proper graphical user interface for this once my current project is finished.

Waldun's picture

.conf is a format, who knew ? Ha, it's working perfectly now.

Thanks for this extra, overtime work.

I'll have something to post to the Forum soon, asking developers to consider the importance of the "graphical" part of plug-ins.

cheers,
Wally

Eneroth3's picture

Anything can be a file format, just place a period in front of it :P . Files with no file extension is where it starts getting complicated. In theory not, but in practice, as Windows doesn't allow you to set a default program for extension-less files.

Waldun's picture

After resetting the modifier key to Ctrl (Mac) and choosing a Keystroke in the Preferences>Shortcuts I'm able to show and cycle the Tools with only the Keystroke; I don't need to include the modifier.

Actually, the modifier key, if typed with the Shortcut key, stops any cycling. Also, the Tool last selected when cycling with the Shortcut key doesn't become active. After choosing a Tool from the floating toolbar nothing happens when I click back in the main window, I need to use my usual keystroke for the Select tool to close the floating toolbar.

I've tried other modifier and shortcut keys with the same result. This Extension is a natural for my toolkit, hopefully there's a Fix.

waldun

Eneroth3's picture

Hello Waldun

I'm not exactly sure what problem you are experiencing. Does the first paragraph explain a problem, an alternative way to use the extension or a workaround for a problem?

The shortcut key should stop cycling only when released, not when pressed. The idea is that you first hold down the modifier key, then press the other key to cycle and finally release the modifier key to activate the tool.

Does this not work for you?

Thanks,
Christina

Waldun's picture

Hello Christina,

In my post I was trying to point out that the modifier key isn't needed to invoke the Tool Memory toolbar or cycle through the tools & activate one of them, the shortcut key that I set in SK Preferences>Shortcuts does all of those actions all by itself. If the modifier key is pressed & held the shortcut key becomes inactive; i.e. it then won't invoke the toolbar or cycle and activate a tool. If this is a bug it's a bug that works well, imho, one key instead of two. Maybe just on the Mac ?

Previous to my first post I had only tried out Tool Memory using tools from SketchUp's Large Tool Bar. The SK tools show up in the TM toolbar with icons & names but none of them will become active regardless of the keystroke(s) used. This morning I have (finally) tried out tools from several Developers and found that some work well with TM while others seem to "self-exclude" from the toolbar. For instance, several of your extensions work from the toolbar even if some only show the generic icon, The Ruby®. The only tools, so far, that show custom toolbar icons are your Solid Tools. Extensions from Fredo6 seem to be excluded, sadly, while some other developers tools do appear in the TM toolbar, all with the Ruby icon and a couple without names. Some tools do show in the toolbar but when I activate them up pops a SketchUp pane with, "Eneroth Tool Memory failed to initialize Profile Builder", for instance.

I would be pleased to be able to exclude tools of my choice from showing in the toolbar, especially those SK tools. I already have 13 tools available within 2 clicks on my 3Dconnexion mouse as well as buttons for Select & Alt on the Logitech mouse, not to mention other shortcut keystrokes. As you explained, the seldom used tools that may not have a shortcut, some in loaded toolbars away from the centre of action, are what makes this extension so useful. Excluding the most frequently used & easily activated tools from the TM toolbar, while keeping the Stack size at a managable six-eight, will allow the greatest efficiency in my work flow.

Is it presumptuous for me to request Developers whose extensions I have installed to think about modifying their tools to fully work with Tool Memory ?

I hope this will make my previous post more understandable.

cheers,
Waldun

Eneroth3's picture

Maybe there is an undocumented platform difference here. I'm on PC and haven't been able to try this out on Mac. The modifier key is used to know when to close the TM stack and activate a tool. How do you get out of the stack view with no modifier key to release?

There could be a bug on Mac regarding activating the native tools. Does line tool activate if you run this code in the Ruby Console?

Sketchup.send_action("selectLineTool:")

What version of SU are you using?

I'll file a feature request for a user configuration for tool to exclude, but don't know when I'll have the time to implement it.

Cheers

7 users
Size:
136.5 KB
Version:
Eneroth Tool Memory (1.1.1); April 9, 2018
Price: 
$15.00
Trial Period: 
14 days
Number of Views: 
146
SketchUp Compatibility: 
OS Compatibility: 
Languages: