Sweep Issue

I stumbled across this and thought it might help to understand rhino better if I got an answer.

I have a curve (that i think is smooth) and a line.

I did a Sweep1 of the line along the curve. The result has a funny kink. Is this an inevitability if the frame is not on the sweep path or is there something else at work?
Problem Sweep.3dm (38.9 KB)


You’re probably selecting the polycurve as the rail and the line as the section. Since the line doesn’t touch the rail, Rhino has to “offset” the polycurve and the radii of the curvy part decrease in size, producing the kink. Try locating the line closer to the start of the rail or offseting the rail closer to the line > then match the curvy part back to the lines to get G1 and get rid of the kink.

  • V

Hmm- I was poking at this as well - offsetting this curve is also messy, though differently so, and OK if the bend is replaced by a tangent arc. I think the offsetting process could be cleaned up to handle this curve better - it seems not to be within the requested tolerance in Offset… I’ll ask a developer…

Hmm - poking further, a ‘proper’ offset of the straights makes it a bit messy - the line would need to be longer at the corner, leaving no room to make the bend. I don’t know if there is a good answer in this case.


Here’s what I was trying to do when I created the example above.

I want to have a bent surface like this. The red curves are fixed.

The blue curves are somewhat variables. The “L” lines need to be in their position. However, the curve linking them is variable. The position of the two curves at the chin are variable. (the bottom one is the same shape as the red one at the bottom. These curves need to be tangent to a planar surface the L.

The question is how to adjust these variable components to give a smooth surface???

Problem Sweep 3.3dm (88.8 KB)

The red curve segments have G1, aka tangent, continuity. (Explode the curve and use GCon (assuming Rhino for Mac has it) to check continuity between curve segments). So the best you can do for a “surface” which has the red curve as an edge is three surfaces with a tangent continuity between the surfaces. That is a basic of geometry, not a limitation of Rhino.

If you try to force a single, degree 3 or higher, surface to use the red curve as an edge in Rhino the result will either be a surface with kinks or a surface which deviates from the red curve.

How does this look? Problem Sweep 3 DC.3dm (323.2 KB)

A difficulty in surfacing these curves arises because the the interior blue cross sections are not located at the curvature discontinuities of the red rail. If these curves could be replace by cross sections which intersect both rails at their curvature discontinuities then the curves could be surfaced with multiple applications of Sweep2.

To create the surfaces in the post above I first used Sweep2 to create surfaces along the straight rail segments between the corresponding cross sections. The surfaces were extended using ExtendSrf. Temporary lines were created between the corresponding discontinuities in the rails. Then the extended surfaces were trimmed using Trim with Apparent Intersections on. Finally Sweep2 was used to create the elbow surface. The trimmed edges of the extended surfaces were used as the rails, the portion of the curves between the trimmed straight surfaces were used as the cross sections, and tangent matching was selected along the rails.


I have a number of similar shapes I have to make where the inside and outside curves do not have tangent curve points. Hopefully, I can apply this technique to this entire set of problems.

I got this to work before but I needed to make a change. I created this surface and want extend it. For some reason Rhino refuses to do so. Is there something special I need to do with the surface to get it to extend?
Extend Problem.3dm (79.4 KB)

Ans: It was getting built as multiple surfaces.

ExtendSrf works only on individual surfaces, it does not work on polysurfaces.

Two alternatives:

  1. Explode the polysurface. ExtendSrf the individual surfaces. Join as desired.

  2. Explode the polysurface. MergeSrf the individual surfaces into a single surface. ExtendSrf the new single surface.