# Extrude or Sweep Closed Curve Along Closed Curve

My apologies, I did not clarify that I had in mind the profile seam. But I believe everything I said about the profile seam should hold true for the rail seam as well. So I should have said,

‘I cannot think of one reason seam position should have any impact on sweep outcome, other than determining the position of the associated seam on the completed sweep.’

Yes, the rail seam determines the order in which the section curves are produced, but it should have no bearing on their position. The position of the section curves should be determined from the relationship between the rail curve and the profile curve, not from any seam. The position of the profile seam should determine the position of the seam on each section, not the position of the section (unless otherwise specified by the user). The rail seam should determine the seams (miter or other discontinuity treatment) between the start and end of the sweep.

The reason I say “I cannot think of one reason…” is this:

1. Every point on every rail curve has a tangent vector. If the rail curve is only a point, the tangent vector is a zero-length vector at that point.
2. Every profile curve has a collection of points, even if it is only one point.
3. Every combination of rail curve and profile curve has a collection of vectors that describe the relative position of one to the other, even if it is only one zero length vector between a single point rail and a single point profile that reside in the same location.
4. Every translation of the rail curve tangent vector can be interpreted to describe an associated translation of the profile curve.
5. Every difference in position between any two generated section curves can be interpreted to create a surface that connects the two sections. This is obviously where the ‘magic’ happens, and the software developer has the ultimate authority to determine exactly how this is to be done. Yet, some surface can always be produced. Even if the curves are tied in knots, you still can generate self-intersecting surfaces. Even at the end of the rail, a surface can be generated in combination with the section at the start of the rail.

I see no scenario under which the above rules should not apply. Again, this should have nothing to do with seams. This is why I say, ‘If I am missing something, please let me know.’ So far I have not heard any information that either addresses this as bugs, or as unreasonable expectations and assumptions on my part. This is also why I say that if Sweep1 fails, Rhino fails along with it.

Sincerely,

Ehben

The polite British say it this way:

It is not the tools we use that make us good, but rather how we employ them.

or:

Upon failure, it’s easier to blame the tools used rather than how they were employed.

But I remember it this way:

It’s a poor workman who blames his tools.

There is such a thing as a dull knife. Unfortunately, I have no way to sharpen this one. Someone else will have to do it.

Hi @eheliot,

For `Sweep1.3dm`, I think it’s best to move the seam of the closed polyline curve away from a kink. Then move the shape curve to the new seam location.

Also, for kinked curves, I like calling Brep.CreateFromSweepSegmented directly from RhinoCommon. I’ve attached a simple example for you to review.

SweepSegmented.gh (3.9 KB)

Hope this helps.

– Dale

1 Like