Why does Sweep1 add extra CVs?

Hi,

I have one rail curve and one profile curve.

Rail:

degree = 3
control points = 4

Profile:

degree = 3
control points = 4

But after Sweep1, the surface becomes:

U degree = 3, CV count = 19
V degree = 3, CV count = 4

Why does the U direction become 19 CVs if the rail has only 4 control points?

Is this normal for Sweep1, or should I rebuild / fit the surface after sweeping?

Thanks.

From my basic understand this happens when the section doesn’t match an knot of the rail.
The section should also be perpendicular to the rail

I tried creating the profile perpendicular to the rail and sweeping it, but it still creates many isocurves.

When I try it as a half profile, the result looks cleaner, but then I have to create two separate surfaces.

I still do not fully understand why this happens.

I also attached the CAD file.

soru.3dm (241.4 KB)

Have you tried cutting the rail in two where it touches the section?

I tried it 2-3 times, but Sweep1 still adds extra isocurves / CVs.

I also recorded a short video showing the steps:

https://drive.google.com/file/d/1seTK6an42J7uAZoO0QthYuSo2zPpqjnk/view?usp=sharing

I still cannot understand why it creates such a dense surface. :slightly_smiling_face:

simple sweep

what you re after was called simple sweep in older rhino versions.
but simple sweep was never nicely supported - for example with error-messages etc…

and there was not much feedback in this community when i tried to push this feature…
even worth - it became a “hidden” feature.

from an old help file:

Simple sweep
Simple sweep works in cases where the shape curves intersect the rail at rail edit points. This option generates simpler surfaces in cases when the curves are perfectly set up. The surface inherits the structure of the input curves.

the most basic setup that will work looks like this:
red (one or two rails)
green (shape)

rail and shape (at start/end) need to have G0 (position) - test with _gcon command.

if you want inner shapes they must be positioned at edit Points and all shapes need the same nurbs structure.
_editPtOn (for the rail)
_pointsOn (for the shape(s))
i like _setPt best to move the shapes end points to the rails edit points.

… feel free to push (by answering) some of the old topics … search for simplesweep and simple sweep in this forum

my 2 cents - cheers - tom

I tried it with G0 and checked it, but Sweep1 still adds extra isocurves / CVs.

Maybe the correct practical workflow is to use Sweep1 first, and then Rebuild or FitSrf the resulting surface?

Why do you use the “Refit cross sections with” option? Usually it destroys the original structure of the input curves and will try to generate a refit surface with a quite different structure.


Have you tried the “Extrude along curve” command?
! _ExtrudeCrvAlongCrv _Pause _Solid=_No _SubCurve=_No

It preserves the original structure of the input curves, but with one caveat: the extruded ends are parallel along the path.


Note: My icon is custom made, because the default one uses a closed extruded profile, thus many people are unaware of its real power when it comes to surfacing.


An alternative is to use a trick with merging the two halves and then removing the unwanted intermediate knots:

The Refit cross sections with option was not used. Please ignore that in the screen recording.

I also tried ExtrudeCrvAlongCrv, but it does not give the same result as Sweep1 in my case. I added an image for comparison.

I attached the CAD file too. If anyone can make a clean/simple Sweep1 result from that file, it would help a lot.

Where?

Sorry, the CAD file was in an earlier message above. I am attaching it again here.

soru.3dm (241.4 KB)

Have you tried the thick that I described in my previous post? It works flawlessly with your curves. I also added a 3rd video above where I showed the solution with your 3dm file.

Thanks, I understand the half-profile + mirror workflow.

I can already make it that way.

My main question was why the full profile creates extra CVs / isocurves with Sweep1, while the half-profile gives a cleaner result.

Most peculiar. If you put the shape curve with one of its ends on the rail curve, the surface is single span, as one would expect.

Thank you, this is exactly what I was trying to understand.

So it seems that when the rail passes through the middle of the profile, Sweep1 does something extra internally and adds more CVs / spans.

But when the sweep is made from the profile end point, it preserves the control point structure much better.

Now it makes sense. :slightly_smiling_face:

The mirroring itself does not give you a clean result. It’s the merging and subsequent removal of the extra knot in the middle that give you a clean result which matches the input curves.

Thanks, I understand your workflow.

I was mainly trying to understand why the full profile behaves differently. @Lagom answer clarified it for me: when the rail goes through the middle of the profile, Sweep1 adds extra CVs, but when it touches the profile endpoint, it stays cleaner.

Thanks again for your help. :slightly_smiling_face:

As I mentioned in the video description under two of my 3 videos, the Rhino developers must fix the big related to the unwanted rebuilding of the “Sweep 1 rail” surface, in order to achieve a clean result similar to the “Extrude along curve” command. This bug have been reported many years ago by multiple people, yet it’s still here in year 2026. If we are lucky, Rhino 10 may finally offer a better “Sweep 1 rail” tool.

In many cases it’s not possible to use an end rail, because the latter is located in the middle, thus the user is left against the challenge to look for an unusual solution.


An alternative is to orient a copy of the profile curve to the opposite end (with the “OnCurve” option to maintain the orientation relative to the rail curve), then build a 3d scaled copy of the rail along the end of the profile curves.
Use the following commands to achieve these two steps:
! _OrientOncrv _Pause OnCurve Copy

! _Orient _Pause Copy=Yes Scale=3D

If you build two scaled copies at either end of the profile curves, you will be able to use either ! _EdgeSrf or ! _Sweep2.

However, with that method and EdgeSrf, the surface is off of the original centre curve (left). 3D scaling and then using only one curve with Sweep1 seems the better choice (right).

Yes, this is why I showed 3 alternatives to choose from. I didn’t include “Loft” that could be built through the 3 rail curves, because it generates too much of a deviation at the top and bottom.