Hey guys

Can we get this feature please? Similar to how “fit plane through points” averages a plane among a set of points in space, tsFlattenPoints went a step further and pulled the points to that plane (without actually building the plane of course). It’s a great way to quickly ensure a random set of control points are flat and reduce SubD wonkiness. Please excuse me if there’s already a command for this I haven’t seen yet. Thanks.


1 Like

Check the Align command, we added a ToPlane option there… does that do what you’re after? I also flatten sub-object selections with the Gumball by scaling by a factor of zero or by dragging the scale handle to the Gumball origin. This works on faces, edges, vertices and control points for the SubD.

I use is technique with a custom CPlane. ProjectToCPlane with Delete input objects set to Yes. In my case, I don’t mind creating the CPlane, since I typically have to do this operation several times, I save the custom CPlane so I can realign moved points very quickly.

The ToPlane option doesn’t do a 3point plane, which means the only way to snap to a plane that is not perpendicular to at least one of the world axes is to change the Cplane.

Can we please get an align to 3point plane option before Rhino 7 full release?

Hi, Max,

We’ve chatted about this internally and I want to make sure that we clearly understand all the workflow issues before we do any typing.

You can select a collection of SubD vertices/edges/faces and Align > ToPlane will project the associated control points to a plane. (If a face is highlighted, all of its control points are projected and if an edge is highlighted, both of its control points are projected.)

There are a variety of ways to select SubD components - various “loop” tools, subobject select (Ctrl+Shift+click).

Is it the case that the subobject selection part of the workflow is good enough to do what you need?
If not, what is not working right with subobject selection?

Is it the case that Align>ToPlane this would do what you want if you could easily specify the plane (say using 3 point plane as you suggested)?
If it’s not the case, can you describe what Align>ToPlane is not doing that you need to solve your workflow issue?

If subobject selection and Align>ToPlane do what you want, then it seems the thing we need to focus on is a general issue that the ToPlane option doesn’t make it easy to get the plane you want/ Is that correct?

1 Like

The align to plane is very useful, but what I miss is an option for the automatic generation of a plane that averages a plane through the points, like Hussein mentioned in this thread.
I used flatten points in Tsplines quite often.

It’s kind of sounding like Align>ToPlane could use at least 3 options for getting the plane:

  • Current draw a line get a plane approach
  • 3Point (Lets user precisely specify the plane)
  • Automatic (Rhino automatically cooks up a “best plane” based on currently selected input objects and uses it. The user hits undo if they don’t like it).

Does this accommodate the workflows and desires of everyone who has contributed to this discussion?

Sounds perfect to me!

  1. Subobject selection as far as I can tell, is working fine. I’ve only ever used Align with vertices or control points, though.

  2. Align>ToPlane does what I expect it to do. It just doesn’t allow for planes that aren’t perpendicular to one of the three world planes. I would like to be able to specify a plane using 3 points, the first two defining one edge of the plane, the final one specifying the third corner.

So, for instance, if I have a subD that I’ve roughly sculpted in box mode, and part of my final object is supposed to have a smooth transition from a flat surface to curves, I should be able to highlight some control points, call _Align>3ptPlane, and then click on three of the outermost points in my selection, and all my selected points would snap to a plane defined by those three points.

What does this add?

  1. a single command process for snapping to planes that are not perpendicular to XY, XZ or YZ.
  2. a more freeform workflow that allows a user to easily align to a plane by referencing existing geometry in three dimensions rather than being restricted to two.

I do this sort of flattening all the time with the Gumball, scaling by factor 0 in box mode.


Yes Dale I think this is exactly what we are looking for. And thanks Martin and Brian I had not thought to use the gumball to flatten points by scaling.

While the gumball is great for some cases it doesn’t exactly replace the flatten command. Let’s say you have 8 points selected and 7 of them are already in their correct position on a plane. The flatten/align to plane command would rein in that single rogue point. Whereas the gumball scale would move all 8 points out of position.

The ability to individually lock subd points would be great here.

In that case you need to relocate the Gumball.

Just so you know, I’m not against your suggestion for such a command…

You can try this now with EditPtOn for the SubD followed by Lock for any selected edit points. Use Unlock to unlock them. The Named Selections panel may also be of use here for reselecting groups of points.


Yeah I noticed that you can lock points individually, but if you select the edge or face associated with those points they can still be moved, which as a result moves the locked points as well. Not sure if this was working as intended.

I see what you mean, currently the locking ability is only usable when the edit points are on and not extended to sub-objects. If you can make a separate post with an example model and what you want to be able to do, I can file a feature request to see if it’s possible.

Thanks for the feedback and requests everyone, I filed https://mcneel.myjetbrains.com/youtrack/issue/RH-61187 for the flatten to an averaged plane request and 3 point plane defining request.


I did not know locking edit points was possible, very useful I believe, thanks.
Just downloaded the latest Beta, it also works with SubD control points now.
But locked controlpoints can be moved with SoftTransform enabled and by moving the edge or face they belong to. That does not seem right.