Howto form spout for glass cup/pitcher?

Hi Pascal,
By extracting isocurves and some hacking I was able to invoke rs.SplitBrep() and cut out a rectangle for the spout. I then created three closed curves: two for the interface of the spout with the rest of the rim and one in the middle for the profile of the mid-line of the spout (first pic, with curves marked in yellow)

I then used Loft to form the spout surface. As you can see, it’s kind ugly. Also, I can’t MatchSrf to smooth the curvature/tangency on lip/spout transition because the vessel surface is trimmed. And even if the surface weren’t trimmed, MatchSrf isn’t available in RhinoPython.

I presume that this also means that the MatchSrf steps in your suggested approach wouldn’t work in this case due to the vessel surface being trimmed.

Any suggestions?

Edit: I was thinking maybe something could be done with BlendSrf but I’m not sure how to set it up. And I don’t think BlendSrf is available in python.

Thanks,
Josh

Hi Josh- here’s one way to get at this: set up largely as you have it in the image but Loft from the trimmed edge of the rim on one side through the spout curve , then then to the other trimmed edge. (I revolved the entire rim as a separate object from the lower curves. If you create the little spout-loft with History, and ask for Start and End tangents in the loft, you can noodle with the points on the middle spout curve and adjust the shape to taste- see attached.

cupwork-cubic_PG.3dm (61.1 KB)

Is something like that what you need?

Hi Pascal,
You suggestion of revolving rim separately from lower curve is great - by revolving the rim less than 360 degrees, I could create the “rectangle” space for the spout geometry without having to trim/brep.

I tried Sweep2, using the inner and outer diameter as the rails, from one edge of the rim to the spout curve and then mirror. The result is in the pic below. It seems like the transition from rim to spout is rather sharp. Is there a way to smooth it out? Like maybe using loft as you suggest, or maybe not using mirror and instead specifying the rim/spout/rim curves explicitly? Or maybe it’s a seam thing? What’s the best way to reason about this?

When I played with the spout curve in your loft-based example you just posted, it seems like the rim/spout transition is smoother than the sweep2-based approach in my pic, but maybe I’m just fooling myself?

Thanks,
Josh

I’d say that is expected since the Sweep does nothing at the ends to make things tangent and the Loft is set to be tangent at the ends. NeworkSrf will offer tangency on all four sides, and can be used with History as well.

-Pascal

I finally had a chance to play around more. The interactive Rhino Loft command does have option to match tangency, but it looks like the python rs.AddLoftSrf() does not have any option for preserving tangency at the edges of the loft:
and there doesn’t seem to be any python command to match surface curvature/tangency. I’ll try NetworkSrf.
Josh

I figured out a workaround to the lack of curvature matching primitives. I took the isocurve at each end of the gap for the spout and added a duplicate a bit further towards the center of the lip. Then I made the sweep2 go through all five curves. This seemed enough to get the curvatures/tangency to match at the end of the sweep2:

I tried this with loft and ended up with naked edge below the spout. Not sure why. Sweep2 worked so I didn’t dig into it.