# Spiral tool for grasshopper

**URL:** <https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967>\
**Category:** Grasshopper\
**Created:** [January 4, 2019, 10:30pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967 "2019-01-04T22:30:09Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 4, 2019, 10:30pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/1 "2019-01-04T22:30:09Z")

</div>

I see many interesting solutions for creating spiral surfaces in Grasshopper …has anyone made an addon that mimics the rhino spiral tool…has the same parameters of start and end radius, number of turns, axis, along a curve…so that all I need in rhino is the start point and a line or curve to act as the axis and the other choices can be made in grasshopper with slides for all the values…maybe introduce an extra radius in between so that the spiral could have necks or bulges the way you can do with “pipe”. If there were two end points and a central point on a curve then I believe I could slide these about between 0 and 1 as the domain and apply radii with sliders to each point ( this is similar to the method for "pipe ) and then control the spiral.  
If any one has done this I would be grateful to know…I use a lot of spiral forms in metal using flats and rounds and drawing each one from scratch involves a lot of hit and miss so ngrasshopper would make this a lot more versatile  
thanks  
Giusseppe…metalgarden.ca

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 4, 2019, 10:57pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/2 "2019-01-04T22:57:59Z")

</div>

I have done this one  
[Spirale.gha](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/9/3/934864f01495ee5b1cf4adab898f73da553d4a1d.gha) (21 KB)  
It has these paramters  
“AxisStart”, “AS”, “Point of start”,  
“AxisDirection”, “AD”, “Direction”  
“HelixStart”, “HS”, “Point of start of helix”  
“Pitch”, “P”, “Pitch”,  
“TurnCount”, “TC”, “TurnCount”,  
“R1”, “R1”, “Radius of begining”,  
“R2”, “R2”, “Radius of end”,

And use this method from Rhinocommon  
Rhino.Geometry.NurbsCurve.CreateSpiral(axisStart, axisDir, radiusPoint, pitch, turnCount, r1, r2))  
[https://developer.rhino3d.com/api/RhinoCommon/html/M\_Rhino\_Geometry\_NurbsCurve\_CreateSpiral\_1.htm](https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_NurbsCurve_CreateSpiral_1.htm)

It is simple to implement this  
[https://developer.rhino3d.com/api/RhinoCommon/html/M\_Rhino\_Geometry\_NurbsCurve\_CreateSpiral.htm](https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_NurbsCurve_CreateSpiral.htm)

It is also very simple to make your own component

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 1:12am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/3 "2019-01-05T01:12:45Z")

</div>

Thank you Laurent,  
I am not sure how a .gha file differs from a gh file but I shall try to work it out…

Much appreciation

Giusseppe

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 1:21am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/4 "2019-01-05T01:21:54Z")

</div>

Sorry , just realized this is an add-on……I have loaded it in the library ……thanks

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 1:23am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/5 "2019-01-05T01:23:14Z")

</div>

Perfect……

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 1:33am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/6 "2019-01-05T01:33:12Z")

</div>

All I need to do now is add the “around curve “ option as the axis…….

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 2:45am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/7 "2019-01-05T02:45:24Z")

</div>

> [@laurent\_delrieu](#):
>
> [https://developer.rhino3d.com/api/RhinoCommon/html/M\_Rhino\_Geometry\_NurbsCurve\_CreateSpiral\_1.htm](https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_NurbsCurve_CreateSpiral_1.htm)

 ![22%20PM](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/8/9/8921b9e1784701c80faeb3482a7867179f7abc5c.jpeg) ![39%20PM](https://global.discourse-cdn.com/mcneel/original/3X/f/f/ffe10bdb4e52b3a39e89a0ed7c1c08fd7d6588d7.png)

now I am able to automate pipes and ribbons which I will later forge in steel

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 5, 2019, 9:44am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/8 "2019-01-05T09:44:46Z")

</div>

Here is a script (a gh) not a component (gha).

 ![image](https://global.discourse-cdn.com/mcneel/original/3X/8/8/88ef74b6776c35e770b1ae31067391593090a952.jpeg)  
[spiral\_with curve.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/3/d/3de101af0072d48fbabe5d4c37935e18ff748316.gh) (7.2 KB)

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 2:02pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/9 "2019-01-05T14:02:46Z")

</div>

thank you…combined with pipe and extrude that gives me a wide range of possibilities…if you are interested to see the metal for real please visit metalgarden.ca…  
Is there a place where I can learn to do these scripts for myself ?

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 5, 2019, 2:20pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/10 "2019-01-05T14:20:55Z")

</div>

Very nice job. Metal forming is fascinating

To learn how to make begin by understanding the operations that need to be done (see Grasshopper tutorials), then learning programming (Python, C# …) and searching in Rhinocommon the functions  
[https://developer.rhino3d.com/api/RhinoCommon/html/N\_Rhino.htm#](https://developer.rhino3d.com/api/RhinoCommon/html/N_Rhino.htm#)!  
The programming logic could be learned outside Rhinoceros/Grasshopper world.

P.S. : The house where I grew

> **[Forge du Moulinet](https://fr.wikipedia.org/wiki/Forge_du_Moulinet)**
>
> modifier - modifier le code - modifier Wikidata La forge du Moulinet est située dans la commune de Saint-Front-sur-Lémance (Lot-et-Garonne).
> La forge du Moulinet est sur le territoire de la commune de Saint-Front-sur-Lémance en Lot-et-Garonne, en Nouvelle-Aquitaine.
> La vallée de la Lémance a été productrice de fer. Son sous-sol est riche en minerai de fer qui peut affleurer, mais aussi d'éléments nécessaires à la production de fonte et de fer :

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 5, 2019, 10:51pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/11 "2019-01-05T22:51:55Z")

</div>

An interesting place to grow up in……thanks for the link

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 9, 2019, 4:30pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/12 "2019-01-09T16:30:08Z")

</div>

Laurent, I have been trying to solve a simple problem with trim….[https://discourse.mcneel.com/t/trim-in-rhino-vs-grasshopper-mac-5-6/77091](https://discourse.mcneel.com/t/trim-in-rhino-vs-grasshopper-mac-5-6/77091)

I just can’t work out how to turn an extrusion from a closed curve ( my pastry cutter ) into a closed brep so that it will act as my trim cutter. I have no problem using this method to trim in rhino but grasshopper won’t let me do it. I can cap the cutter to close it but then I get a hole not a trimmed shape….

The objective is to use extruded wavy lines to create bumpy surfaces and cut out leaf shapes from them……I can do this in Rhino with trim and wanted to automate the process because once the leaf is trimmed I am able to apply bends and twists etc to it with grasshopper.I have everything working except this brep step.

Any advice would be appreciated.

---

<div class="post-metadata">

**Author:** ![ejnaren](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/ejnaren/32/661563_2.png) [@ejnaren](https://discourse.mcneel.com/u/ejnaren)\
**Post date:** [January 10, 2019, 7:16pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/13 "2019-01-10T19:16:33Z")

</div>

Just a side question. Does this spiral function allow for creating Euler spirals? Spirals where the radius changes linearly with the length of the curve?

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 10, 2019, 7:35pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/14 "2019-01-10T19:35:16Z")

</div>

I don’t think there is a Rhinocommon function for that. I found that

> **[writing a function, clothoid](https://www.grasshopper3d.com/forum/topics/writing-a-function-clothoid)**
>
> Hi there, I was wondering if I could get some help with this. 
> I have the parametric formula of a clothoid:
>           { Integrate\[Sin\[(x^2)/2\], {x,0,t}\],Integ…

---

<div class="post-metadata">

**Author:** ![TomTom](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/tomtom/32/651939_2.png) [@TomTom](https://discourse.mcneel.com/u/TomTom)\
**Post date:** [January 11, 2019, 9:03am UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/15 "2019-01-11T09:03:58Z")

</div>

Basically, as soon as you find any _parametric_ formula, you simple use the expression or evaluate component and type it in. You’ll get a list of points which then can be interpolated. The only drawback, the interpolated curve might not have the best curvature flow. So all you need to do is googling “euler spiral parametric equation”.

Nurbs curves are parametric as well. Any Point on a NurbsCurve can be created by typing in any value for parameter t. If t is inside the curve domain, the point lays on the visible part. You can usually spot if a formula is parametric if its written like this:  
B(t) = …, where t is the parameter, can be another symbol as well (often u)…Surfaces usually have u and v.

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 23, 2019, 10:41pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/16 "2019-01-23T22:41:19Z")

</div>

Just wanted to thank you again Laurent….the spirale and makes it so easy to do something like this which used to be so hit and miss in the past.

![]()

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 23, 2019, 10:46pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/17 "2019-01-23T22:46:18Z")

</div>

![35%20PM](https://global.discourse-cdn.com/mcneel/original/3X/c/7/c726db1ddd3a35c7e760ed18aced9c1aeff439b1.png)

---

<div class="post-metadata">

**Author:** ![giusseppe](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/giusseppe/32/643377_2.png) [@giusseppe](https://discourse.mcneel.com/u/giusseppe)\
**Post date:** [January 23, 2019, 11:40pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/18 "2019-01-23T23:40:29Z")

</div>

![06%20PM](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/c/c/cc75a4ced111b209fb04a8d6240dc321c85bfcce.jpeg)

---

<div class="post-metadata">

**Author:** ![arsbenamar](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/arsbenamar/32/152253_2.png) [@arsbenamar](https://discourse.mcneel.com/u/arsbenamar)\
**Post date:** [April 30, 2019, 5:36pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/19 "2019-04-30T17:36:22Z")

</div>

Hi Laurent, the gha file link is broken. Any chance you can repost it? Best

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [April 30, 2019, 7:08pm UTC](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967/20 "2019-04-30T19:08:32Z")

</div>

[Spirale.gha](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/9/3/934864f01495ee5b1cf4adab898f73da553d4a1d.gha) (21 KB)

[Next page](https://discourse.mcneel.com/t/spiral-tool-for-grasshopper/76967.md?page=2)
