# Rhino BETA Feature: Elmo. A new Rebuild command for Curves

**URL:** <https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814>\
**Category:** Serengeti (Rhino BETA)\
**Tags:** curve\
**Created:** [July 9, 2024, 11:02pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814 "2024-07-09T23:02:11Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![JSchindler](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jschindler/32/768073_2.png) [@JSchindler](https://discourse.mcneel.com/u/JSchindler)\
**Post date:** [July 10, 2024, 8:14pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/21 "2024-07-10T20:14:14Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![davidcockey](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/davidcockey/32/732604_2.png) [@davidcockey](https://discourse.mcneel.com/u/davidcockey)\
**Post date:** [July 10, 2024, 8:36pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/22 "2024-07-10T20:36:22Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![EricM](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/ericm/32/478994_2.png) [@EricM](https://discourse.mcneel.com/u/EricM)\
**Post date:** [July 10, 2024, 8:43pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/23 "2024-07-10T20:43:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pastrana](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pastrana/32/494684_2.png) [@pastrana](https://discourse.mcneel.com/u/pastrana)\
**Post date:** [July 10, 2024, 8:47pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/24 "2024-07-10T20:47:38Z")

</div>

> 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.

---

<div class="post-metadata">

**Author:** ![brian](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/brian/32/504171_2.png) [@brian](https://discourse.mcneel.com/u/brian)\
**Post date:** [July 10, 2024, 8:50pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/25 "2024-07-10T20:50:10Z")

</div>

> [@cameronbehning](#):
>
> could this actually be a setting in the rebuild command

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

> [@EricM](#):
>
> Is there any way to install this as a plugin for V8?

No.

---

<div class="post-metadata">

**Author:** ![pastrana](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pastrana/32/494684_2.png) [@pastrana](https://discourse.mcneel.com/u/pastrana)\
**Post date:** [July 10, 2024, 9:05pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/26 "2024-07-10T21:05:52Z")

</div>

> [@wicket](#):
>
> This lead me to Raph Levien’s work

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.

---

<div class="post-metadata">

**Author:** ![Rhino\_Bulgaria](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/rhino_bulgaria/32/505284_2.png) [@Rhino\_Bulgaria](https://discourse.mcneel.com/u/Rhino_Bulgaria)\
**Post date:** [July 11, 2024, 3:35am UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/27 "2024-07-11T03:35:58Z")

</div>

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.

> [@Feature request: ! \_SymSlide tool](https://discourse.mcneel.com/t/feature-request-symslide-tool/184575/6):
>
> @Rhino_Bulgaria - this is a very, very cheap first cut - see if it does anything good. [image] [DistributeCurvePoints.py](https://discourse.mcneel.com/uploads/short-url/nVO9ovVmoffV4bBJbb42xXM8mM4.py) (4.2 KB) @Rhino_Bulgaria updated again with a change suggested by intern Rafael… To use the Python script use RunPythonScript, or a macro: \_-RunPythonScript "Full path to py file inside double-quotes" -Pascal

---

<div class="post-metadata">

**Author:** ![brian](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/brian/32/504171_2.png) [@brian](https://discourse.mcneel.com/u/brian)\
**Post date:** [July 11, 2024, 9:43pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/28 "2024-07-11T21:43:32Z")

</div>

6 posts were split to a new topic: [ElmoSrf would be fun](https://discourse.mcneel.com/t/elmosrf-would-be-fun/187927)

---

<div class="post-metadata">

**Author:** ![Tom\_P](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/tom_p/32/766520_2.png) [@Tom\_P](https://discourse.mcneel.com/u/Tom_P)\
**Post date:** [July 11, 2024, 10:21am UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/29 "2024-07-11T10:21:36Z")

</div>

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](https://discourse.mcneel.com/t/wish-subd-beautify-edge-loop/180704)

## 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

---

<div class="post-metadata">

**Author:** ![RedAlert](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/redalert/32/664553_2.png) [@RedAlert](https://discourse.mcneel.com/u/RedAlert)\
**Post date:** [July 11, 2024, 11:59am UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/30 "2024-07-11T11:59:22Z")

</div>

> [@Tom\_P](#):
>
> it will be pain to teach rhino, if we collect endless versions of similar commands

This is exactly what I wanted to say

---

<div class="post-metadata">

**Author:** ![JimCarruthers](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jimcarruthers/32/504725_2.png) [@JimCarruthers](https://discourse.mcneel.com/u/JimCarruthers)\
**Post date:** [July 11, 2024, 12:02pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/31 "2024-07-11T12:02:03Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![brian](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/brian/32/504171_2.png) [@brian](https://discourse.mcneel.com/u/brian)\
**Post date:** [July 11, 2024, 2:20pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/32 "2024-07-11T14:20:21Z")

</div>

It looks like we forgot [the download link](https://discourse.mcneel.com/t/welcome-to-serengeti/9612) 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.

---

<div class="post-metadata">

**Author:** ![brian](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/brian/32/504171_2.png) [@brian](https://discourse.mcneel.com/u/brian)\
**Post date:** [July 11, 2024, 2:21pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/33 "2024-07-11T14:21:11Z")

</div>

> [@Tom\_P](#):
>
> - hopefully the tool performs well in 3d
> - would be nice to keep start end - position - tangent - **curvature**

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

---

<div class="post-metadata">

**Author:** ![brian](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/brian/32/504171_2.png) [@brian](https://discourse.mcneel.com/u/brian)\
**Post date:** [July 11, 2024, 2:23pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/34 "2024-07-11T14:23:14Z")

</div>

> [@RedAlert](#):
>
> > [@Tom\_P](#):
> >
> > it will be pain to teach rhino, if we collect endless versions of similar commands
> 
> This is exactly what I wanted to say

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

---

<div class="post-metadata">

**Author:** ![EricM](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/ericm/32/478994_2.png) [@EricM](https://discourse.mcneel.com/u/EricM)\
**Post date:** [July 11, 2024, 3:31pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/35 "2024-07-11T15:31:02Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Rhino\_Bulgaria](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/rhino_bulgaria/32/505284_2.png) [@Rhino\_Bulgaria](https://discourse.mcneel.com/u/Rhino_Bulgaria)\
**Post date:** [July 11, 2024, 3:43pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/37 "2024-07-11T15:43:41Z")

</div>

The `Elmo` command sound cool. 🙂 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. 😃

---

<div class="post-metadata">

**Author:** ![pastrana](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pastrana/32/494684_2.png) [@pastrana](https://discourse.mcneel.com/u/pastrana)\
**Post date:** [July 11, 2024, 4:26pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/38 "2024-07-11T16:26:02Z")

</div>

> [@Tom\_P](#):
>
> ## my thoughts / wishes
> 
> - hopefully the tool performs well in 3d

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

> [@Bobi](#):
>
> 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!

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!

---

<div class="post-metadata">

**Author:** ![Eugen](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/eugen/32/656992_2.png) [@Eugen](https://discourse.mcneel.com/u/Eugen)\
**Post date:** [July 11, 2024, 4:51pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/39 "2024-07-11T16:51:23Z")

</div>

> [@brian](#):
>
> Does it actually work for you? What we’d really like is feedback on what you think of the behavior of the Elmo command.

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

White: Elmo’s result.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/9/2/8/928df10f0aaa352831c83e4f46fdd30e82fdb1af.png)

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

---

<div class="post-metadata">

**Author:** ![pastrana](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pastrana/32/494684_2.png) [@pastrana](https://discourse.mcneel.com/u/pastrana)\
**Post date:** [July 11, 2024, 5:19pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/40 "2024-07-11T17:19:21Z")

</div>

> [@davidcockey](#):
>
> “Delete input” and “Create the new object on the current layer”.

> [@Eugen](#):
>
> 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](https://mcneel.myjetbrains.com/youtrack/issue/RH-82871) and [RH-82939](https://mcneel.myjetbrains.com/youtrack/issue/RH-82939).

---

<div class="post-metadata">

**Author:** ![Rhino\_Bulgaria](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/rhino_bulgaria/32/505284_2.png) [@Rhino\_Bulgaria](https://discourse.mcneel.com/u/Rhino_Bulgaria)\
**Post date:** [July 11, 2024, 5:35pm UTC](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814/41 "2024-07-11T17:35:54Z")

</div>

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. 🙂

[Previous page](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814.md?page=1)

[Next page](https://discourse.mcneel.com/t/rhino-beta-feature-elmo-a-new-rebuild-command-for-curves/187814.md?page=3)
