Request 1: In case that there is not such a tool in existence yet, I propose to create a new tool called ! _SymSlide that will be able to symmetrically slide the selected control points against each other (or in the opposite direction) by the same distance along the control polygon of a curve or a surface.
Request 2: While the ! _Smooth is capable of distributing the control points of a curve at equal distance, I will highly appreciate if it has two new individual options: “Preserve tangency on end 1” and “Preserve tangency on end 2”. The current implementation lacks those and destroys the tangency of the input curve. I’m aware that I can make a macro to run the ! _Match command immediately, but in some cases it will produce distorted curves that are way too different from both, the input curve and the preview of the regular ! _Smooth tool.
Hi Bobi - I wonder though, what would be the rule for maintaining tangency - I can imagine that post-smooth, tangent points could be moved to the original tangent vectors by closest points. Or possibly to the intersection of the next control polygon and the original tangent. Or something else - but what? In many cases - it seems to me - the result might be quite non-smooth, let alone what the user might expect.
Hi @pascal , the idea is to be able to combine two of the existing tools into one: “Smooth” and “Divide”, in order to distribute the control points at approximately equal distance while maintaining the overall shape of the curve as much as possible.
To reply your question, I imagine that this tool should be able to lock the direction of adjustment of the 2nd control point at either end and allow it to move only along the control polygon. That should keep the tangency. Ideally, this should work with two individual options for end 1 and end 2, because the user may want to keep the tangency only on one of the curve ends.
Hi Bobi - I guess the thing could move the point at each smooth step - you can mimic this by matching the curve tangent to a line with history, then setting smooth steps to 1 and … repeat
Hi Pascal! The main goal is to try to preserve the original shape of the curve, while moving its control points along its control polygon and keeping the end tangency intact. Your example above, however, shows a highly flattened middle portion that does not follow the original shape of the curve.
I made a distorted curve for test purposes. I noticed that when I apply the script (the old version) for the 2nd time, the control points are no longer distributed at relatively equal distance from each other. The 1st run is great, however.
The updated version of the script will not keep the tangency at either end… Any chance to upload the old one again? I replaced it with the new one, thus I lost it.
Hi Bobi - I’ve been entertaining myself - see the updated script above… click ‘Smooth’ to do the next smoothing operation. You can toggle between two smoothing methods.
Hi @pascal ! I just tested it and it’s really nice to have those two methods A and B. Great work, as usual!
If you accept suggestions, my advice is to rename “Method=A” to “Method=Strict”, and rename “Method=B” to “Method=Loose”. Those names are easier to understand and are pretty much self-explanatory.
Well, I get it, but my point is that the modification of the general shape of the curve is inevitable. "Method=A is much more restrained than "Method=B. It’s a bit confusing to remember what is A and what is B. On the other hand, “Loose” sounds really appropriate for the end result made by “Method=B”.
This must be a default tool in Rhino! It’s very helpful.