Elmo: A new command to rebuild curves in Rhino

It looks like a great tool. Since it is basically a better version of Rebuild, for the sake of consistency and to eliminate confusion, it would be best to start the name of this command with Rebuild.

What would be a reason to retain the current Rebuild command rather than replace Rebuild with Elmo renamed Rebuild?

Based on initial testing and some knowledge of fitting curves, the approach used by Elmo based on distance minimization appears to have only advantages compared to the interpolation approach used by the current Rebuild command. One exception could be that is Rebuild needs fewer CPU cycles, but given the speed of any system running Rhino that advantage is probably only theoretical.

1 Like

Is there any way to install this as a plugin for V8?


What would be a reason to retain the current Rebuild command rather than replace Rebuild with Elmo renamed Rebuild?

For backward compatibility. Replacing a command’s behavior might break the SDK for other developers. Since Rebuild has been around for many years, it is reasonable to expect people to have built scripts and workflows that rely on the current outputs of Rebuild. Changing behavior would then affect downstream tasks.

1 Like

Does it actually work for you? What we’d really like is feedback on what you think of the behavior of the Elmo command.


Thanks for sharing, @wicket. Levien’s articles are insightful and they sparked some of the initial conversations around Elmo at McNeel. Elmo’s inner workings ended up taking a different path though since we were after a general solver that works for NURBS curves in 3D, in addition to Béziers in 2D.

For V7 users there is an alternative simplified tool which was made by @pascal a few weeks ago. Not exactly the same, but still doing great job! And is capable to keep the curve ends tangency individually! It smooth outs highly distorted curves, so don’t consider it a replacement for the “Elmo” tool.

6 posts were split to a new topic: ElmoSrf would be fun

great news.

my thoughts / wishes

  • hopefully the tool performs well in 3d
  • would be nice to keep start end - position - tangent - curvature
  • I still hope, there will be “constraints” in V9, so it would be great to have this tool nicely integrated. For example I would love to have a start tangent, inner Point, inner tangent end curvature setting for a curve - in 3d.
  • allow symmetry as option
  • nicely integrate history
  • don’t forget a subd-friendly option
  • maybe partial stuff of the background code could also perform benefits to subd - see my wish beautify edge loop

backward compatibility:

  • I hate the idea of having a bad old commandname rebuild and a new powerful rebuildV9
  • regarding update and backward compatibility I would love to see a standardised approach
    • we have filletSrf and filletSrfOld
    • we have a huge mess in names like weld, join, stich, merge, …
    • if backward compatibility is a huge issue - introduce a general commandline, Macro-Version runner shortcut.
      • “_rebuild _multipause _filletSrf” will run the latest stuff.
      • “$v6 _rebuild _multipause _filletSrf” will run the old stuff from Version 6
      • “$v9 _rebuild _multipause _filletSrf” will run the same in v10…
  • if no Version-identifier is introduced - old commands should indicate their obsolescence / outdated by the name with a standardised “…old” “…ex” “…V6” - regarding autocomplete in the commandline, a prefix would be nicer (“OldRebuild”) regarding autocomplete, or even make them hidden.
  • it will be pain to teach rhino, if we collect endless versions of similar commands
1 Like

This is exactly what I wanted to say

I think we’re getting a bit ahead of ourselves here. It’s just a new thing to try out at the moment.

1 Like

It looks like we forgot the download link for you all to get a copy of this yourselves.

Please post some screenshots of the results of Elmo, especially if you wish it did something different than it does today.

Please post some examples where it doesn’t work as you expected.

Yep, it’s very difficult to simultaneously improve Rhino and keep it exactly as it always has been.

And if you want practical feedback, Rhino has a great plugin system. You could release alpha commands like this as an optional download in the Package Manager.

I wanted to test the v8 WIP in production, but the UI rework (specifically toolbars) were too unstable. We’re half a year into v8’s release and I’m still struggling with toolbar and containers, syncing settings between workstations, etc.

1 Like

The Elmo command sound cool. :slight_smile: I will quickly adapt to it.
Just curious what the Bert, Cookie, Ernie, Tango, Oscar and Zoe commands will do in the future Rhino releases. :smiley:


Elmo has been designed to rebuild curves both in 2D and 3D.

I agree! As the Rafael that @pascal refers to, the tool in that post mostly focuses on smoothing the control polygon of a curve. Elmo offers a more complete set of options since it cooks up a new curve with target point count and degree that is as close as possible to your input; and it additionally lets you smooth the control polygon with the Pretty Polygon options.

In fact, it would be great to see @Rhino_Bulgaria if there are any examples where you think that Elmo does a better job than the simplified tool that Pascal shared, and vice versa. Please keep us posted!

1 Like

I’d like to see an option to retain the kinks in a (poly)curve - or is there already?

White: Elmo’s result.

Also, Elmo does not seem to put the result on the active layer (yet), but on the object’s layer.


Yes! These features will be part of next week’s WIP. Please see RH-82871 and RH-82939.

1 Like

Since I’m an active user of Rhino 7, I’m unable to test this particular command, because it’s part of Rhino 9 WIP. I will have to patiently wait and read what the other users think about those new functionalities. :slight_smile: