June 22, 2019
Description
Fully parametric monohull design (openscad) with automated stl part compute.
(or, how to go from a Dragon sailboat hull to an Imoca hull in 10 minutes).
This project goal is to allow to manually "3d carve" a hull and to fine-tune each bulkhead easily.
You can design an unlimited number of monohull boat with it.
The result is a fully printable complete hull or a classic model sailboat design (bulkhead/stem/deck) ready to assemble and plank.
Requirements:
Start:
Download the boat.scad and do.txt, rename 'do.txt' to 'do.sh' and 'chmod a+x' it.
'do.txt' is not mandatory, its goal is to ease and mechanize the boat.scad usage.
Usage
Use openscad directly on the boat.scad file or you can use the helper:
$ ./do.sh
Using: openscad-nightly
Usage: ./do.sh {raw|rounded|roundedempty|bulkhead|stl}
raw : Open openscad-nightly for hull design (processing )
rounded : Open openscad-nightly for hull rounded (processing 1)
roundedempty : Open openscad-nightly for empty hull rounded (processing 2)
bulkhead : Open openscad-nightly for bulkhead (processing 3)
stem : Open openscad-nightly for stem (processing 4)
stl : Generate all stl files automatically (parallelize: 3)
Openscad file
Run a './do.sh raw' or 'openscad boat.scad' and edit the 'boat.scad' file.
Parameters are documented inside the file.
Hull design
Inside the 'boat.scad' file, you will find a 'shape' array defining the hull. You can experiment on it, add/remove bulkhead.
I advise to shape each 2d independantly, a sideview first, the topview after and tune the shape_factor at last.
For printing, I integrated an automatic split of large pieces, you can specify the split with the 'stemsplit' variable in the scad file.
/*
The shape:
- step: 1 .. 100 - from 0 to 'length'. (1 and 100 are mandatory)
- height_factor / width_factor:
minimum - 0.01 .. 1.00 - maximum 'height' / 'width'
- shape_factor:
0.00 .. 1.00 - circle to ridge
*/
shape = [
// step , [ height_factor, width_factor, shape_factor ]
[1, [ 0.02, 0.02, 1.00 ]],
[3, [ 0.17, 0.10, 1.00 ]],
[6, [ 0.34, 0.22, 1.00 ]],
[9, [ 0.48, 0.33, 1.00 ]],
[12, [ 0.60, 0.43, 1.00 ]],
[15, [ 0.71, 0.52, 1.00 ]],
[18, [ 0.80, 0.61, 0.80 ]],
[21, [ 0.87, 0.69, 0.60 ]],
[24, [ 0.92, 0.76, 0.60 ]],
[28, [ 0.963, 0.84, 0.60 ]],
[33, [ 0.985, 0.91, 0.30 ]],
[40, [ 1.00, 0.97, 0.10 ]],
[45, [ 1.00, 0.99, 0.10 ]],
[50, [ 1.00, 1.00, 0.04 ]],
[55, [ 0.98, 0.98, 0.02 ]],
[60, [ 0.935, 0.95, 0.02 ]],
[65, [ 0.86, 0.91, 0.01 ]],
[75, [ 0.68, 0.78, 0.01 ]],
[80, [ 0.57, 0.71, 0.00 ]],
[85, [ 0.46, 0.64, 0.00 ]],
[90, [ 0.355, 0.56, 0.00 ]],
[95, [ 0.25, 0.48, 0.00 ]],
[100, [ 0.15, 0.40, 0.00 ]]
];
Run
'do.sh' is able to generate ready to print complete list of 'stl' files.
Be patient, it is cpu intensive. If you have many cpu core and a lot of memory, you can tune the "PARALLEL" variable inside the 'do.sh' script.
$ ./do.sh stl
Using: openscad-nightly
Processing bulkhead 1
Processing bulkhead 2
Processing bulkhead 3
waiting to finish
... 427 seconds
Processing bulkhead 4
Processing bulkhead 5
Processing bulkhead 6
waiting to finish
... 857 seconds
Processing bulkhead 7
Processing bulkhead 8
Processing bulkhead 9
waiting to finish
... 1292 seconds
Processing bulkhead 10
Processing bulkhead 11
Processing bulkhead 12
waiting to finish
... 1720 seconds
Processing bulkhead 13
Processing bulkhead 14
Processing bulkhead 15
waiting to finish
... 2155 seconds
Processing bulkhead 16
Processing bulkhead 17
Processing bulkhead 18
waiting to finish
... 2584 seconds
Processing bulkhead 19
Processing bulkhead 20
Processing bulkhead 21
waiting to finish
... 3011 seconds
Processing bulkhead 22
Processing bulkhead 23
Processing stem 1
waiting...
... 3499 seconds
Processing stem 2
Processing stem 3
Processing deck 1
waiting...
... 4058 seconds
Processing deck 2
Processing deck 3
done ... in 4610 seconds
Files: bh-1.stl bh-2.stl bh-3.stl bh-4.stl bh-5.stl bh-6.stl bh-7.stl bh-8.stl bh-9.stl bh-10.stl bh-11.stl bh-12.stl bh-13.stl bh-14.stl bh-15.stl bh-16.stl bh-17.stl bh-18.stl bh-19.stl bh-20.stl bh-21.stl bh-22.stl bh-23.stl stem-1.stl stem-2.stl stem-3.stl deck-1.stl deck-2.stl deck-3.stl
License:
GNU - GPL