Request: Tween curve on surface

Is there a way to have “Tween curve on surface” tool, so that selecting two input curves on a surface (or surface edges) would let us create intermediate curve or curves on the input surface? :slight_smile:



Tedious method: ShortPath, Divide, InterpCrvOnSrf (or CurveOnSurface plugin).

1 Like

I usually do the following: I run “Tween curves”, then select two input surface edges to create an intermediate curve that loosely goes somewhere close to the surface. Then apply “Pull” on the tween curve to lay its copy on the surface. But sometimes that approach does not work properly and needs lots of manual adjustments. :slight_smile:

this may be a dumb question, but why not tween flat curves then project with history and adjust as needed ?

The spacing between the “tween” curves may be unequal and uneven depending on the shape of the surface. If the user is going to fix that problem by “adjust as needed” then the user should just create the curves directly.

@Rhino_Bulgaria using @andrew.nowicki method more or less, I created this gh file, run it with Grasshopper player: (12.4 KB)

history makes the adjustments pretty easy, but to each their own.

Can you tell me how to use this file in Rhino? I have zero experience with Grasshopprer. :slight_smile: Thanks!

On a side note, is there a way to create a so-called reverse tween, meaning that a new curve is created outside of the two input curves using the relative distances between their general shape to define the shape of the new one. In this example, the two input curves are in black, whereas the output curve is white.

hi bobi.
I have a suggestion, it can be long, but it gives fairly precise results.
you carve the base surface using your two base curves.
then you use the refittrim command on both edges.
(you add knots in the command prompt depending on the complexity of your curves)
once the surface is cut, you can extract isocurves at the desired location.
and if you want equal distances, you divide the side edges using the command. _divide

the job is done!
it’s long but you get the precision.

if it can be translated by a script ??


Hi Fares, the method you showed above is very nice for situations where a tween curve must be created along a single surface and loosely follow its isocurve direction.
However, usually I need to build a tween curve between two curves that are oriented in a random direction (“Refit trim” often fails in those situations) or spread it across two or more surfaces/polysurface. The approach that I use is to either extrude or fin the curves on surface/polysurface (or use simplified surfaces with curve intersection), then I tween the resulting extruded/fin surfaces to create a new intermediate surface, then I use curve intersection to create the necessary tween curve. One advantage is that the latter is history-enabled, so any change in the original surfaces will affect the shape of the tween surface and its curve intersection. The latter could be further simplified via the ! _RemoveMultiKnot command, though that will destroy the history and also may cause the curve to no longer sit perfectly accurate on the surface/polysurface. The whole operation is done like this:

1 Like

yes absolutely, my solution is limited to only one surface.
this is what I was able to find as a solution.
your solution does the job !! .
if it can be translated into a script to save time.
given the complexity of the operation
that would be great.
I have no knowledge of how to operate and program scripts.
it’s just a thought.

1 Like

Yes, both methods have their own strength. It all depends on what’s the goal.
Another way to place a tween curve on surface/polysurface is to build a loft surface between both input curves, then extract an isocurve from the loft surface and project or pull it onto the target surface.

Hi Bobi - in some cases at least it might work to loft the curves and then ExtendSrf to get an edge that is a sort of ‘ExtendCurveSeries’…



1 Like

hi pascal.

since you are an expert in scripting.
can these operations be translated into script?
(or even macros !)

It’s just curious to know

that’s the whole idea of GrasshopperPlayer!

just run _GrasshopperPlayer, open that file and see how it works

1 Like

Hi Fares - my suggestion above could be scripted, I imagine, if in fact is gives a useful or expected result often enough to make that worthwhile, I do not know… Bobi’s Fin> TweenSurface > Intersect routine might be but I’d have to fuss with it or find someone smarter than me.


1 Like

That’s a cool little trick. :slight_smile: Thanks!

We’ve created quite an accurate and extensive one in Pufferfish.

Used for this project.

Does not rely on iso curves etc. can be any random directions of drawn inputs.


ah… missed that one!

1 Like