About arrays along curve


I know how to duplicate curves along another curve. I would like to know if it is possible to adapt the size (width) of those curves along a second curve
On the image, I would like width of the curves to follow the second curve. Cheers.

You want to connect the curves (that are connected to the left curve) to the right curve? A curve has no “width” it has a length?!

  1. Divide Curve A with [perp-frames] component.
  2. Use [Curve closest point] to find the closest point from Points of curve A to curve B
  3. [Line] component to connect the points

I’m assuming you’re not using grasshopper. Scale the horizontal curves and trim using the vertical ones?

Curves are seen from top. They are closed curves, that’s why I used width because they also have a height. So i need to modify their width, not moving end point.
Sorry I was not very explicit about this.

Well if you briefly give me a tip to do this with grasshopper, I’ll take it. I’ve had a look on it and it would indeed be the best way to do this as I could easily modify it after, but I’m not yet very familiar with it.

why dont you use sweep2 and have a surface already? then you dont need the million profile curves or whatever these are, one would be enough. is the cornerradius the same on each curve? also to keep continuity of the curves if you have enough points you might pick these responsible for the continuity and move them all up.

but it is rather difficult to make an appropriate suggestion without seeing the file. currently it looks like you are making a mess (no offence) rather than knowing what are are heading for.

: ))
No offense don’t worry.
The goal is not to make a surface but to have separate objects along one curve, and their widths will conform to the distance between the two curves.


yes sir : ))

bateau.3dm (4.5 MB)

As ecephalon said:

  1. Make sure your two guidelines will be connected to your profile-curve correctly. Use Sweep2, choose first and second guidelines, then the profile and create a surface
  2. Extract the Isocurves from that surface by “ExtractIsocurve”-command. Make sure to set the direction to U or V correctly. Extract as many isocurves as needed. If you want the isocurves to be in a fixed distance you can create an array of planes intersecting the surfaces and extract the isocurves with “IntersectTwoSets”-command.

bateau.3dm (1.9 MB)

Yeah i get you but this is not what I want to do. I’m not willing to make a surface out of this but to align as many objects as you see curves on the drawing. think of it as the structure that will make the skeleton of the surface you did.
If I do this with the objects that will be done with a sweep, it will modify the thickness of objects and I don’t want this.
How did you do your curves alignment? that’s what I want to do. Maybe you stated it, but my english is limited : )

I guess you might want to use Orient3Pt with copy=yes and scale=1D… maybe.

The surface acts just as a “placeholder” to generate your objects. You can delete it after the creation of the “skeleton-objects”.

I mean if you want to go super simple you can just take your objects and scale them one by one with “Scale1D” or “Scale2D” command to the desired widths. This is not even basic.

Peut être ce sera plus simple si je te le demande en français…

Ce que je veux faire, c’est faire correspondre ces courbes en les alignant sur la premiere courbe guide, (celle de gauche) et faire correspondre la largeur avec la distance entre les 2 courbes guide.
Un peu comme si j’avais une deuxième fonction avec matrice qui me proposait de conformer la largeur avec la distance entre la première et la seconde courbe.
Chaque extrémité de chaque courbe (les 34) allant d’une courbe guide à l’autre.

Il me semble que c’est toujours la même courbe, mais mise à l’échelle à chaque endroit par rapport à la largeur entre les deux courbes guides (rails). Si c’est bel et bien le cas, On peut commencer avec une courbe « master » et placer des copies avec Orient (deux points) et l’option « « Echelle=Oui ».

Par contre si toutes les courbes sont déjà existantes et qu’elles sont au bons endroits contre un des deux rails, il y n’y a qu’une possibilité « manuel » - c’est de faire une échelle (3D ou 2D) individuellement sur chaque courbe avec l’origine le point d’intersection entre le rail et le courbe concernée.

La solution d’extraire des isocourbes d’une surface crée par un balayage 2 rails et une section est aussi une bonne façon de faire, et c’est probablement la plus souvent utilisée.

Sinon, il y aura des solutions automatisées possibles par scripting ou Grasshopper .

Non j’avais juste utilisé la commande matrice pour illustrer mon propos. Donc on part de la courbe du bas.

Donc si j’ai bien compris. J’utilise un balayage 2 pour former une surface le long des 2 courbes. Puis ensuite j’extrait mes courbes de cette surface en demandant à rhino de m’en sortir 34 à égales distances puis je vire ma surface. ça me permettra en plus de conserver les rayons de courbe supérieurs.
C’est ce qu’avais préconisé Paul mais je n’avais pas bien compris.

Oui faudrait vraiment que j’étudie plus profondément grasshopper, mais je manque un peu de temps.


Ok got it.
Thank you : )

Your solution is not far from what I want, but the problem is that it modifies the height of the closed curve and makes a “curvy floor”, modifying the height of the initial curve, and this is not what I’m looking for.
Only the width should follow the guides, not the height which I don’t really know what it follows actually.
I had not seen it initially on your drawing. It looks more like a zeppelin than a hull.

Make sure “Maintain Height” is checked in the Sweep 2 dialog.

You rule : )
Thanks a lot