Various wishes regarding the selection of control points

Wish 1: The ability to select control points by double-clicking on a control polygon (“Rhino options > Mouse > Selecting > Make control polygon pickable”) was a great addition to Rhino 6 and I use it on a regular basis. It saves a lot of time. However, if there are nearby objects or a surface edge next to the picked control polygon, the Selection menu’s pop-up window appears and asks which object(s) the user wanted to select. If the user selects “control points”, Rhino will select only the two control points that are adjacent to the picked control polygon line and will “forget” about the double click with the LMB. Is there a way…
a) … to make Rhino “remember” the double click and add an additional option “control point row” in the Selection menu?
b) … to make Rhino prioritize the double click so that it selects the control point row instead of invoking the Selection menu?

Wish 2: After selecting a control point (or control points) and using “Select U” or “Select V” to select the U or V rows of control points, make it possible to quickly invert the selection by leaving a clickable command prompt named “Invert” in the command line. This will allow to conveniently invert the direction of selected rows when the initial selection was in the wrong direction.

I’m aware of the ability to invert the direction when using the “Select UV” tool, but it has two limitations: it requires several extra mouse clicks (including pressing Enter or RMB to end the command), and also does not work with pre-selected control point(s).
Using the Selection filter is slow and requires at least 4 mouse clicks to select the desired row of control points. Also, it will destroy the previously set group of objects in the selection filter, if there were any. Right-clicking on the “control points” inside the Selection filter window will revert to the previous selection of pickable objects, but that adds yet another mouse click.

1 Like

Wish 3: I wonder is there a way to select an entire (or partial) row of control points and have a command to distribute them evenly along the control polygon? Especially if it’s possible to do this with just a few control points (i.e. not the entire row), it should greatly help to improve the fine adjustment of surfaces. It would help even with fixing the existing top and bottom surfaces of the 3d model from this topic Closed polysurface has overhanging surfaces when shaded or rendered , optionally followed by the “Match surface” command to make sure they will join with the vertical surfaces.

Hello - for this one, MoveUVN's Smooth controls may be of some use. Also, not directly related to any of your requests, but in case you have not run into it yet, SelControlPointRegion is very useful.


Hi Pascal,

Thanks for the tip about the “SelControlPointRegion” command! It’s something that I’m going to use a lot in the future. so far I had to manually pick every control point (or use the select by brushing tool) if I wanted to select partial rows of control points.

With regards to your suggestion to use the UVN. I tried the Smoothing in the UVN tool with this particular model along the V direction, and while it helps to a certain degree to get the control points moved slightly more evenly, it also moved those in the middle area along the U direction, making the surface twice as thick in the middle. Also, even after several dozens of repeated smoothing the control points still can’t be placed at even distance from each other. My 3rd wish is similar to what the smoothing tool does, but in a more direct way that moves the control points only along the control polygon so that the original shape of the surface is kept as close as possible to the original. And ability to make the selected control points evenly distributed with a single mouse click. That would be a big game changer for all the people who manually adjust the control points of surfaces and curves.

Wish 4 (sorry, but I have ideas for new Rhino tools almost every day :slight_smile: ):
Ability to use a reference surface with lesser control points to directly modify another surface with much more control points. With other words, is there a way to have a secondary set of simplified control polygon for a quick rough adjustment of the shape of a surface? Preferably with “Fix edges position” and “Fix edges tangent” options, plus ability to choose how many control points it will have (basically what the “Rebuild surface” command achieves, but keeping the original surface and using the rebuilt one’s control points to modify the former). That would help in many situations where we already have some complex surface with multiple control points matched to adjacent surface(s) and we just need to modify its middle shape in a convenient way. Or, of we want to I’m aware of the “Soft-edit surface” tool, but it has its limitations based on distances for the U and V directions.



Hi Bobi - try CageEdit, with PreserveStructure=Yes and choose the simpler surface as the cage object, rather than a 3d box-like cage, and the complex one as the captive.


1 Like

Hi Pascal, I tried this long time ago, and also tried it again now, but the problem with cage edit is that it will not not preserve the edges of a trimmed surface. Is there an option to lock the border of a trimmed surface so that any editing of the simplified surface will be forced only inside that border?

I noticed that the control polygon of the cage edit surface is no longer pickable, even though I have the “Make control polygon pickable” option turned on from the “Rhino options > Mouse > Selecting” menu. Double-clicking on it also won’t select the entire row of control points. Maybe the cage is no longer considered a surface by Rhino, and this is why its control polygon is not pickable?

Also, when I edit the simplified surface via it’s control points, the wireframe of the original surface is not visible through the former, if I drag the points towards the bottom (like a valley). If I raise the control points (to make the surface like a hill), then I can see the wireframe again. Luckily, I have a 3d mouse and can rotate the view at any time while dragging, but people without a 3d mouse will find it a bit harder to work this way. Note: I always hide the wireframe of the surfaces, but they appear during point editing, UV rebuilding etc.

I noticed something else. when I edit the original surface via the simplified one, if I turn on the control points of both surface, then editing the simplified surface no longer affects the original one. Interesting… I that a bug? However, when I turn off the control points of the original surface and then do even the slightest edit of the simplified one, the original surface immediately get affected again.

These is something else. If I edit the original surface with its own control points, the Cage edit’s history gets broken (just as expected). However, when I assign Cage edit again, the original surface is suddenly distorted. Looks like in this case the original surface tries to go through the control points of the simplified surface rather than using the geometry of the latter as an input. I attach a few screen-shots and the 3d file here so that you can test it by yourself:

Cage edit test.3dm (348.0 KB)

Hello - on Wish 1, I suspect the second click is not even registered, and the menu is launched on the first one. I will add the wish, but my guess of the moment is that it might not be an easy one at all…


Not that I know of, and it would be difficult or impossible to implement to work for any trimmed surface due to how the math of trimmed surfaces works. What can be done for a surface with a sufficient number of spans is to only edit the control points which do not affect the surface where it is trimmed. But that is probably not what you desire.

I think that it’s possible to make it work by simply reverting the control points of the simplified surface if Rhino detects that this will destroy the position or tangent continuity of the split surface. Sort of what happens when we try to modify the control points of the latest rows of a surface whose edge was previously matched to another surface with the history enabled. Once we move one or more of those control points, Rhino reverts them back to preserve the matched edge.

On wish 1: I, too, notice that the Selection menu shows instantly (which is a great thing as it makes the modeling more fluid), so probably what I described in option “a” (an additional option “control point row” in the Selection menu) is more relevant. However, since Rhino will not register the second mouse click when there are nearby objects next to the control polygon, is it possible to add “control polygon row” in the Selection menu even if the user control polygon was picked with a single mouse click?

Another idea for how this could be done with a single click, is to add Smart handles (two parallel lines next to the spot where a control polygon was picked, as well as two arrows after the last selected control points) that work in the following way:

Note that the 2:1 aspect ratio of the parallel lines is such that it will not be confusing when the user wants to not activate them. On one hand, they are short enough so that there is a lot of free room around them for the mouse pointer to go round them. On the other hand, they are long enough to be easily selected by moving the mouse pointer through them.

I’m aware about the “Add next V” and “Add next U” tools, but they are slow and sometimes confusing and select the control points of opposite side instead. The Smart select handles provide clear visual indication and are capable of selecting the rest control points (3 options: all, only at the right side, only at the left side) in a row even without a mouse click.

Wish 4 :slight_smile: : I already mentioned this in another topic a few weeks ago, but it does not hurt to repeat it here. Make the picking of control polygon slightly away from the control points. Currently, if I want to select a single control point, it’s fairly easy to accidentally select a control polygon instead. Looks like the dead zone now is about 10 pixels or so. An option to increase this distance in pixels will help a lot.

Wish 5: Fix the following bug. Picking a control polygon near already selected control points while holding the Shift key (used for adding to selection) will actually exclude the nearby control points from the selection. This is very confusing behaviour since Shift is always used to add to selection in all other commands.

Wish 6: After double-clicking on a control polygon (when the “Make control polygon pickable” option is turned on) and selecting the entire row of control points of a curve or surface, Rhino 6 will mistakenly bring the following message in the command line: “2 surface points added to selection”. Seems like Rhino counts only the two control points that are at either side of the control edge at the moment of the first mouse click and ignores the additionally selected control points after the second click. It will always refer to “2”, despite the fact that the actual number of newly selected control points is greater. This is a bit confusing, especially when selecting a large number of control points. It would be more logical if Rhino brings the following message instead: “73 surface points added to selection”. The number is random, but you get the idea. :slight_smile:

Got that, thanks. I do not know if that is an easy thing to tune up.


1 Like

Maybe if Rhino does the counting of newly selected control points after they appear yellow in the viewport?

Wish 7: When the drag mode is set to UVN, make it possible for the Gumball to override that setting when dragging with its directional arrow handles while holding the Ctrl key. That will allow the user to move the control points along…
a) … the World or Cplane axis (by holding the Ctrl key).
b) … the UVN direction of the surface (when the Ctrl key is not held).

1 Like

Wish 8: Add ability to shade only the objects with shown control points (including polysurfaces with solid control points) so that any other object in the scene will be set to *wireframe. This will make editing large assemblies piece of cake and will also reduce the use of “Isolate objects” (which can cause problems since Save and Autosave at this moment are unable to remember and show the temporarily hidden objects during the “Isolate objects” command.

*unless it has a custom object display mode assigned.