I would like to create a scroll for a victorian style handrail, something like the picture below (don't know how to change the image size here?):

More detailed description can be found at http://www.thisiscarpentry.com/2009/07/ ... -a-volute/

As a starter for 10 I have worked up a script which can create a fibbonacci (golden ratio) spiral:

Code: Select all

```
from math import sin, cos, pi, sqrt
import Part
import Draft
from FreeCAD import Vector
def fibonacci_spiral_connected ( n=101 ):
"""
FIBONACCI_SPIRAL_CONNECTED draws connected points on a Fibonacci spiral.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
07 April 2011
Author:
John Burkardt
Parameters:
Input, integer N, the number of points to plot.
Default is 101.
"""
#
# PHI is the golden ratio, the limit of the ratio of
# successive Fibonacci numbers:
#
# PHI = limit ( N->oo ) F(N+1)/F(N)
#
phi = ( 1.0 + sqrt ( 5.0 ) ) / 2.0
#
# Allocate storage for the point data.
#
# x = zeros ( n, 1 )
# y = zeros ( n, 1 )
#
# Set the angle and radius of the first point.
#
a = 0.0;
r = 0.0;
#
# Set the increments.
#
da = 2.0 * pi * ( phi - 1.0 ) / phi;
dr = 1.0;
#
# Create a spiral in which the radius R and angle A both
# increase by a constant increment,
#
x = []
y = []
for i in range (1,n+1):
x.append (r * cos ( a ));
y.append (r * sin ( a ));
a = (a + da) % (2 * pi);
r = r + dr;
#
# SCALE controls how many steps we take between the actual points.
# A value of 5 is enough to see the basic spiral that connects the points.
# A vale of 10 would make a smoother spiral.
#
scale = 20.0;
#
# Allocate storage for the intermediate data.
#
n2 = scale * ( n - 1 ) + 1;
#x2 = zeros ( n2, 1 );
#y2 = zeros ( n2, 1 );
#
# Set the angle and radius of the first point.
#
a = 0.0;
r = 0.0;
#
# Set the increments.
#
da = 2.0 * pi * ( phi - 1.0 ) / phi;
dr = 1.0;
da = da / scale;
dr = dr / scale;
#
# Create a spiral in which the radius R and angle A both
# increase by a constant increment,
#
#x2 = []
#y2 = []
pnts = []
for i in range (1,int(n2)+1):
pnts.append (Vector (r * cos ( a ), r * sin ( a ), 0))
#x2.append (r * cos ( a ));
#y2.append (r * sin ( a ));
a = ( a + da ) % ( 2 * pi );
r = r + dr;
#
# Display the points,
# and use the intermediate points to draw lines that display the spiral.
#
return pnts
pnts2 = fibonacci_spiral_connected (10)
goldenspiral = Part.makePolygon (pnts2)
Part.show (goldenspiral)
```