Rhino WIP feature: UndoSelection /RedoSelection

In Rhino WIP, we added 3 commands: UndoSelection, RedoSelection and ClearUndoSelection.

What is this feature?

The Selection Undo stack is separate from the regular Undo stack. Use UndoSelection to browse back through your previous selections, without undoing geometry changes. Use RedoSelection to browse forward in this stack. To clear the stack, use ClearUndoSelection.

Why would you use it?

Sub-Object selection can be quite time consuming. These commands are a quick way to go back and forward to earlier made selections, without spending time reselecting. We expect these commands will be especially useful for SubD and control point modeling.

Tip

You can make instant aliases to quickly reselect previously made selections:

Try it out…

Download the Rhino WIP

Great news. :clinking_glasses: A much needed feature that will make point editing easier than ever.

My only hope is that the Selection undo will ignore repeatedly selected control point.

Example:
I often select one control point, move it with the “MoveUVN” tool along the normal direction, then I do the same with a nearby control point, then I select the first point again and repeat the process numerous times with the two points. These two control points should not consume the whole selection stack of 256 recordings if I pick them repeatedly 130 times each.

With other words, the new command must remember only unique selections and ignore duplicate selections.

Woah..

This is like going back or forward in time but in 3 separate dimensions

The 3D dimensional undoer or redoerer..

Ok I’ll stop, this looks useful tho nice addition :hushed_face:

Thank you for implementing it! It’s going to be very useful in many workflow scenarios.

I can’t test it yet, but would it work mid-commands? For example, often I select edges or sub-surfaces to extract many of them, and at some point i make a wrong click without holding Shift and all is meticulous selection work is gone. Will I be able to go back using the new command?

-j

Yes that should work. When you misclick you are basically making/ recording a new selection.

Same question as above. Does this work for sub-object selection? related… It would be wonderful if SelPrevious and SelLast also work with subobject selections.

The commands work for both object and subobject selection.

SelPrev is more or less a toggle between the last two made selections. Sellast selects the last created object(s) so I don’t understand how you would see that work for sub-objects.

I tried this command, and I must say it greatly speeds up the workflow. A selection like this is truly useful — I just tested it, and it’s excellent.

In current WIP @mikko also added a new command called ClearUndoSelection to clear the selection undo stack. I’ve updated this topic with that information.

What happens when one deletes an entire row of control points that were previously included in the Undo stack? Or, when a surface was rebuilt?

There are some known bugs regarding subobjects, I just made two YT’s for this.

If you rebuild the surface, that surface (and its subobject components) no longer exist.

Thank you, this was really needed and almost a game changer for heavy SubD modeling!

I’ve done a couple of quick tests, it seems like it needs to “register” the current selection. For example if I select three faces one after the other (adding them to the current selection), I cannot go back and forth. If I deselect everything (or do a transform operation) then that selection is actually registered to the stack. Am I wrong?

While this is a great improvement, I’d still like to have an option for registering every single change in the current selection (adding/removing faces, loops etc.), so that you don’t have to think about “registering” that selection, for example, before making an operation that could potentially clear that selection (like clicking or double clicking on the wrong face/edge, which can happen).

Would that be possible, at least as an option?

Thank you!

Will the UndoSelection command replace the current UndoSelected which has been in Rhino since V4 or earlier?

UndoSelected already undoes rebuilt objects. I assume it uses the current Undo stack. (Undo and Redo both work on rebuilt objects.)

Is the plan to have two different Undo stacks: One used by Undo and Redo and another used but UndoSelection and RedoSelection?

Hello @Gijs

Have you considered having a pop-up window appear when the command is executed? It would be nice to be able to quickly navigate through the selections using the mouse wheel.

Maybe like this;

No these are two different things. UndoSelected is an undo acting on object level.

Yes, that is how it is implemented.
Undo / Redo / ClearUndo
UndoSelection / RedoSelection / ClearUndoSelection

Indeed we’ve been thinking about this and your proposal might be a way. I will ask Mikko if there is access to the selection undo stack to accomplish that.

Suggestion: Change the names to SelectionUndo, SelectionRedo and ClearSelectionUndo.

The current names suggest these commands are about Undo or Redo for a objects which have been selected. In particular UndoSelection and UndoSelected are too close with only the last few letters differeing.

this is on the list as RH-89972 UndoSelection Menu, I added your suggestion

Great, thanks!

I hooked these commands up using the instant aliases, it’s brilliant imo. Huge time saver.

One wish:

I tend to have too much on the screen, and I make lots of mis-selections when I’m trying to choose a piece of geometry. So I only want selections that had some operation made on them, and/or which were newly created.

I’ve been using the WIP by default, and although I’ll have some bugs to report, I’m really super impressed with it. Great work!