I WONDER if anyone can suggest a way forward in Grasshopper to adjust a series of Degree 3 curves, splayed out from the bottom edge of a pipe, whose central axis crosses the plane of a ring or disc at an acute angle.

The object would be to create a seamless surface of a suitable shape without the endless trial-and-error that would be needed without Grasshopper.

The curves need to leave the pipe at a tangent and be tangental to the surface of the outer ring. Most curves would have, in their plane, a greater or lesser S-shape to them.

For each curve, ideally the CPs could be adjusted (in the plane of the curve) and such an adjustment of any one curve, would affect the curves on either side (to a lessor degree, for smoothing). The degree of affecting could be varied.

FIXED: the goal is a seamless surface from pipe to outer ring.

NOT FIXED: the number of curves is not fixed and although currently they start and end at regular intervals on the inner and outer edges, the gaps need not remain regular. The curve degree and the number of control points need not be fixed either.

I’ve uploaded a Rhino file (I’m temporarily using 5 and not the 7 that I have).

Thanks,
Clive Carter

The pipe and ring geometry are internalized so you can do this:

I just realized though… that you want the edges flat like the ring? I didn’t do that… yet.

P.S. Now the edge of the lofted surface is tangent with the ring, as indicated by the vectors (below). Increasing the count from 12 to 18 or more makes it smoother?

Again, geometry is internalized, no need for Rhino file.

By the way, if you’re willing to play with vector amplitudes (manually or by algorithm), you can use BzSpan instead of BiArc, as shown here:

P.P.S. I managed to align the seams automatically by projecting the pipe axis to the ring plane, so the manual ‘Seam’ slider is gone.

2 Likes

Joseph,

Thank you so much!

In order to focus on the central problem, I simplified the original model.

For the original pipe—that in cross-section, is closer to an oval—I substituted a simple cylinder. More significantly, for the outer edge, I substituted a simple circle, being the edge of a flat ring. Originally, this was closer to a highly rounded rectangle and slightly but not uniformly, convex overall. Another wrinkle in the original, is that “pipe” would not be in the centre, but a little lower down.

However, the key requirement is to maintain tangency on each side of the several curves while hand-tuning those curves individually, in order to affect the resultant surface.

I can’t play with this right away in v7 (on another machine, currently out of service). Am I right in thinking the scripts would affect the surface bodily (as a whole)?

Ideally, one could adjust each curve individually, and also ideally, have a mild, sympathetic affect on their next-door neighbours on either side (is that possible?!). What I had envisaged originally was one or more sliders, per curve. I appreciate that the shape I have in mind may not be achievable easily, or at all.

Although in my model file I used Loft to create the end surface, there may be better ways to achieve this (?).

In any event, you have given me a flying start and I am grateful!

Clive Carter

Eight edits to your post and you haven’t yet looked at my model?! I put extra effort into eliminating the one manual step I originally had in my model, which was a slider to align the seams on two curves (which affects alignment of all divided points). Yet you want “one or more sliders, per curve”, which would be 24 sliders for only 12 curves (when more curves is better).