Casting hybrid lamination fins

I finally took the leap and went to 3D printing of moulds, rather than this tedious hand made stuff.

Surprise, surprise, it’s also tedious making the moulds in the virtual world, and quite tricky to make them come out nice when eventually printing them.

However, as always, I think I’m getting close to the big break-through (HAHA!), which is when I’ll have an accurate and re-useable mould for a Universal Tough Fin Base (UTFB). Of course, it will not be universal, but universal for the sort of single fins that I want to make.

Printing the moulds at a 45degree angle looks promising, see picture, so now I have a question about how to cast, or laminate, into the UTFB-moulds.

I think I read that fiberglass + resin laminates are strongest if only just enough resin is in there to saturate the cloth, or in other words, as much cloth as possible for the amount of resin.

But, is it neccessary to have the fibres neatly arranged in woven layers, or is a chopped strands conglomerate similarly strong if the excess resin is pushed out once the halves of the mould are pressed together?

I want to know because it will be very difficult to cut (and layer) woven materials, and squeegee them in the mould halves, particularly for scaled down versions of the mould. The one shown below is a scaled to 50% version. A mix of chopped strands would be much easier to apply into the mould, but how will the strenght compare to layered woven material?


MrMik, RDM is right, you’ve got great tenacity and we are all impressed with your creativity. We wish you success. Amazing work !

I’m still failing to print a nylon mould that is good enough to cast a UTFB. Getting closer, but nylon certainly has it’s challenges for 3D printing.

So I’m clutching at straws, trying if other printing materials might work.

Today I mixed up a little batch of epoxy and poured it into an assortment of moulds. I then added carbon filaments strand by strand. Just to see if that works, and to find out if the other materials will bond permanently with the epoxy or not.

The small moulds are orange PLA and Taulman T_Glase, rubbed with beeswax dissolved in gum turps for a few times, then polished a bit. The big mould is Taulman Nylon 645 without release agent.

This is a great thread.
Thanks for sharing all your work.
Have you considered a G10 UFB?

when I cast fins(I only do keel) I have a fiberglass mold I made from a plug. I wax the mold real good then apply a thin coat followed by a few 4oz layers sometimes a thin sheet of wood then repeat on the other side and apply pressure. A day later I pop it out and quickly sand the end a little and it’s good to go

MrMik, did the molds get tested for release properties yet?

Mr. Mik, does the resin stick to the PLA molds if you don’t wax them?  My son has a 3D printer that prints PLA, and I’m wondering if that is a good material to make a mold with.

Also, I’m rather new to fin-making, and want to make sure I understand the mold process.  I’m assuming you basically make each half of the fin separately, and then glue them together (by clamping the sides of the mold together with resin in-between).  When you’re making each half, do you make several layers as Jcyr says, or do you fill up the cavity with the carbon strands and fill up with resin all at once?  

Thanks

Re: chrisp: No, I had not even heard of G10 before, but now I’ve had a look at it. Thank’s for the suggestion, but I’m trying to develop some sort of additive manufacturing process, and starting with G10 and then sanding it down is what I’m trying to avoid.

My current fin-making odyssey started with a lengthy wait for a wooden fin for my only wooden board, so I thought I might have a go at making one myself. I laminated some marine ply and some carbon-kevlar with epoxy resin, but when it came to foiling the slab into a fin shape, I gave up after a couple of minutes. Too much dust, too much waste of materials, too much risk of messing it up by one wrong move right at the end of the production process. See pictures for how far (or not!) I got with it…

A few weeks ago, I finally got the nice fin that I had been waiting for, after I produced about a ton of debris in my quest to make my own fin by additive processes…ROTFLMAO

Kayu made the nice fin in the picture below, and my own wooden fin shall remain hidden within that blob until I have a proper workshop with dust extraction and filtration system.

As an upshot, I was able to use my newly gained casting skills for something useful other than making fins that snap off, and grandma got a customised silicon-covered potato peeler that works well with her arthritic hands.







As a surprise, the PLA and T-Glase printed moulds (treated with a bees wax solution in gum turpentine) did release the HT9000 epoxy resin with a bit of carbon fibres in it! Not easily, but a full size mould might survive a couple of castings.

And as another surprise, the Taulman Nylon 645 mould (without any mould release agaent) held on to the resin much more than I thought it would. I could get it out, but not easily. I was imagining that nylon would behave a lot like the silicone moulds I have made before I got the 3D printer, but the silicone is by far superior. No comparison, the silicone wins in every respect, except that you cannot print it.

Today, another 14hrs long UTFB print from nylon (Taulman Bridge) went wrong, when I thought I finally figured out what the problems had been.

So, I’m over printing large moulds from nylon material for now.

But I have another idea for how I can get it done, and that is to print a UTFB (or a 1/2 sliced UTFB) from PLA, and then use this to make a silicone mould as shown on earlier pages in this thread. The PLA prints will be weak, you could easily snap them by hand, but strong enough to make excellent silicone moulds.

And I already know that the silicone moulds work very well.

@MrMilk don’t use kevlar next time. It’s a bitch to sand and doesn’t really help on an inside layer.

Just use carbon & glass.

And unlike a surfboard, with a fin it’s the torsional flex you’re looking for.

All true Hans, and I was pretty clueless when I embarked on making that lamination.

But even if using 100% organically grown timber,  with woven fairy hair soaked in water soluble zero VOC epoxy, the fact remains that more than half the material needs to be turned to dust when foiling the fin. That’s what annoys me the most.

I did notice that sanding the kevlar was a particularly difficult job. I even had to learn how to sharpen scissors in a specific way before I could cut it to rough size for the lamination. I’m not going to use that again in a hurry if I have to sand or otherwise remove material during production. There is a reason why it’s being used to prevent gravel rash in motorbike protective clothing!

Test patch of Silastomer P40 4.5g A + 0.45g B surrounded by hot glue ring on E3D T-PLA orange.

The slightest whiff of the wrong chemicals in the pattern can prevent the silicone from curing, so I’m doing a test on a failed print before making a full sized silicone mould for the UTFB using printed PLA patterns.

9 months after I started this mission to make a fin, I hope (again) that I have a sea-worthy contender to enter the ring of real-world testing.
Tons of trouble = challenge = opportunity with 3D printing led to this most recent incarnation of the Wanderfalke fin:

The very short version:

  • design a fin using finFoil http://www.swaylocks.com/forums/finfoil-v11-released
  • use OpenScad to connect the finfoil file to a suitable fin tab http://www.openscad.org/
  • design internal stabilisers instead of the infill generated by slicing software. This allows a continuous body of epoxy to be poured into the 3D printed shell.
  • after printing a nice PLA shell, insert stainless steel rods, then fill the rest of the shell with epoxy resin.
  • for printing the shell using Slic3r, use:
    2 perimeters
    No infill
    Ensure vertical wall thickness
    Seam position nearest
    External perimeters first
    No infill
    No skirt
    7mm brim
    Extrusion multiplier set to add 5% or 10% to reduce resin leaks

The PLA is brittle and the trailing edge will shatter easily if the fin is dropped tip first:

It does not happen easily…

Unfortunately I had to give up one of my my initial goals (temporarily): This fin does not float!
But, it will get knocked out of the fin box if you fall on it from almost any angle, or if you run over some kid’s head.
So I’m working on designing a mini ‘leg-rope’… So the fin will get knocked out of the box, but then dangle on a piece of string attached to the board.

Here is the OpenScad code:

$fn=75;

rotate([0,0,78.75]) // Rotate for alternative diagonal position on print bed
rotate([0,0,-39.5]) // Rotate union of it all so it fits on print table diagonally in Slic3r

union(){ // union of it all

union(){ // union of X-beams and base plates

translate([-153,0,0])
union(){ // 13th topmost x-beam support

translate([0,0,16])
cube([10,0.8,32],center=true);
translate([0,0,15.05])
cube([0.8,10,30.1],center=true);

union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-126,0,0])
union(){ // 12th x-beam support
translate([0,0,25])
cube([10,0.8,50],center=true);
translate([0,0,21.85])
cube([0.8,10,43.7],center=true);

// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-98,0,0])
union(){ // 11th x-beam support
translate([0,0,34])
cube([10,0.8,68],center=true);
translate([0,0,32])
cube([0.8,10,64],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-72,0,0])
union(){ // 10th x-beam support
translate([0,0,43])
cube([10,0.8,86],center=true);
translate([0,0,41.15])
cube([0.8,10,82.3],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-47,0,0])
union(){ // 9th x-beam support
translate([0,0,49])
cube([10,0.8,98],center=true);
translate([0,0,47.85])
cube([0.8,10,95.7],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-33,0,0])
union(){ // 8th x-beam support
translate([0,0,49])
cube([10,0.8,98],center=true);
translate([0,0,48])
cube([0.8,10,96],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([-8,0,0])
union(){ // 7th x-beam support
translate([0,0,42])
cube([10,0.8,84],center=true);
translate([0,0,39.25])
cube([0.8,10,78.5],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([18,0,0])
union(){ // 6th x-beam support
translate([0,0,30])
cube([10,0.8,60],center=true);
translate([0,0,26])
cube([0.8,10,52],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([38,0,0])
union(){ // 5th x-beam support
translate([0,0,19])
cube([10,0.8,38],center=true);
translate([0,0,16.2])
cube([0.8,10,32.4],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([57,0,0])
union(){ // 4th x-beam support
translate([0,0,11])
cube([10,0.8,22],center=true);
translate([0,0,8.75])
cube([0.8,10,17.5],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([72.5,0,0])
union(){ //3rd x-beam support
translate([0,0,6.25])
cube([10,0.8,12.5],center=true);
translate([0,0,4.5])
cube([0.8,10,9],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([83.75,0,0])
union(){ // triple support under base
translate([0,0,3.5])
cube([10,0.8,7],center=true);
translate([0,3,3.5])
cube([10,0.8,7],center=true);
translate([0,-3,3.5])
cube([10,0.8,7],center=true);

translate([-4.5,0,2.9])
cube([0.8,10,5.8],center=true);
// Double base plate
union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([95.5,0,0])
union(){ // triple support under base

translate([0,0,1.9])
cube([10,0.8,3.8],center=true);
translate([0,3,1.9])
cube([10,0.8,3.8],center=true);
translate([0,-3,1.9])
cube([10,0.8,3.8],center=true);

translate([-4.5,0,1.25])
cube([0.8,10,2.5],center=true);

union(){
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//
translate([105,0,0])
union(){ // mouse ear without support
linear_extrude(height=0.4){
scale([0.9,1.5,0])
circle(7.5);}
linear_extrude(height=0.2){
scale([0.9,1.5,0])
circle(10);}}}

//union(){ // union of sacrificial first tounge for reusable enclosure to be printed with the fin:

//difference(){ // Making the sacrificial tounge.

//scale([159,34,0.3]) // scale([159,34,0.05]) for 5mm high tounge
//linear_extrude([0,0,0.5])
//circle(1);

//scale([157,32,0.3]) // scale([159,34,0.05]) for 5mm high tounge
//linear_extrude([0,0,0.5])
//circle(1);}}

//difference(){ // Closed bottom plate same size as tounge. Differencing outer diameter of tounge from itself with 0.2mm z difference:

//scale([159,34,0.05])
//linear_extrude([0,0,0.5])
//circle(1);

//translate([0,0,0.2]) // lift otherwise identical scaled circle by 0.2mm to make thin base
//scale([159,34,0.05])
//linear_extrude([0,0,0.5])
//circle(1);

//scale([139,14,0.05]) // smaller inner scaled circle
//linear_extrude([0,0,0.5])
//circle(1);// Removing centre of closed bottom to convert it into a “inverted brim”

//} // End of differencing bottom plate.

translate([112,0,124.7]) // move fin and UTFB into position on supports
//rotate([0,-80.5,0]) // rotate fin and UTFB so trailing edge extreme points are level.

//rotate([0,-75,0]) // Rotate so that print volume height is 197.9mm

//rotate([0,-74.5,0]) // Rotate so that print volume height is 199.1mm

//rotate([0,-74.45,0]) // Rotate so that print volume height is 199.25mm

//rotate([0,-74.2,0]) // Rotate so that print volume height is 199.85mm

rotate([0,-73.85,0]) // Rotate so that print volume height is 199.85mm

rotate([90,0,0]) // rotate fin and UTFB

difference(){ // Differencing threaded rods from fin and UTFB. Includes entire rest of code.
union(){ // Union of fin and plug and UTFB to allow differencing of threaded rod holes. Goes to end of UTFB and includes differencing of BSP and pin holes.

resize([0,240,0], auto=true) // resizes Finfoil fin file to 240mm height.
//import(“/media/p/Data/3D_printing_stuff/finFoils/Wanderfalke_2-1-6-2.stl”); //

//import(“/media/p/Data/3D_printing_stuff/finFoils/Wanderfalke_2_1_4_5_v1.1.1-highres.stl”); // High resolution BLEF

//import(“/media/p/Data/3D_printing_stuff/finFoils/Wanderfalke_2_1_v1.1.1-highres.stl”); // High resolution non-BLEF

import(“/media/p/Data/3D_printing_stuff/finFoils/Wanderfalke_2_1_6_3_HR.stl”); // with 1.3mm minimum thickness

//import(“/media/p/Data/3D_printing_stuff/finFoils/Wanderfalke_2-1-6-4.stl”); // with 1.4mm minimum thickness

//import(“/media/p/Data/3D_printing_stuff/finFoils/INSERTNAMEHERE.stl”); // spare slot for later

color(“blue”) // makes base plate blue in preview
translate([-41.25,-2,0]) // translates base plate
cube([77,4,9.2], center=true); // Disable this base plate when printing fin without UTFB. The base plate purpose is to get rid of gaps between rounded UTFB tab edges and bottom of plug.

translate([-121,-22, -4.5]) // Moves tyhe UTFB. Change translate values to move it in place for different fin base lengths. For Wanderfalke_1-9 use translate([-116.385,-22, -4.5])

rotate([0,0,90]) // rotates the UTFB

union(){ // Union of UTFB to allow importing the entire UTFB-tab into another OpenScad file

difference(){ // To remove the BSP holes by ‘differencing’ the UTFB-Mould from it:

rotate([90,0,0]){ // To rotate the UTFB; It was required to allow 2D printing of outline in an earlier development step:

union(){ // union of UTFB to allow rotating

color(“green”,0.5){ // This makes the fin base green in Preview:

minkowski(){ // Minkowski sum three times to round the base edges:
minkowski(){
minkowski(){

linear_extrude (height = 152.9, centre = false, twist = 0) // Linear Extrude length of the fin base is reduced to compensate for elongation due to Minkowski sum. Actual length after Minkowski was 150mm in initial UTFB versions (height=146); reduced to 135mm (height = 131) in Wanderfalke_1-9-cored_UTFB_2-3.scad. For Wanderfalke_2-1 use height = 148 (first versions had 146 but that makes front of base float above print bed)

polygon(points=[[0,3.1],[0,6.9],[1.5,7.1],[19,7.1],[19,2.9],[1.5,2.9]]); // Polygon points brought closer together to compensate for enlargement due to Minkowski sum. Without Minkowski sum use the actual intended size. // 9.2mm wide fin base with small taper at bottom to ease entry into the fin box. // Use these dimensions instead for 9.2mm fin base without taper: polygon(points=[[0,2.9],[0,7.1],[19,7.1],[19,2.9]]);

cylinder(r=1,h=1); } // 3 cylinders, each rotated differently, to round off the fin base edges with the Minkowski Sum function:
     
rotate([0,90,0])
    cylinder(r=1,h=1); }
       
rotate([90,0,0])
    cylinder(r=1,h=1); }

} // defines end of GREEN color for base:
} // end of union to be rotated
} // end of rotate base

// Cylinders for ball spring plungers etc to be differenced:
translate([7,-6,9.1])
cylinder(h = 20, r = 2.5, center = true); // Hole for aft pin

translate([7,-17,9.1]) // Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true); // First forward BSP:
translate([7,-17,9.1]) // Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true); // First forward BSP outer wide part:

translate([9,-37,9.1])// Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true); // 2nd BSP:
translate([9,-37,0])// Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true);// 2nd BSP outer wide part

translate([11,-57,9.1])// Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true);// 3rd
translate([11,-57,9.1])// Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true);// 3rd wide part

//translate([13,-66,9.1])// Move cylinder cutout for BSP
//cylinder(h = 20, r = 4.1, center = true);// 4th

//translate([13,-83,9.1])// Move cylinder cutout for BSP
//cylinder(h = 20, r = 4.1, center = true);// 5th

translate([11,-90,9.1])// Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true);// 6th
translate([11,-90,0])// Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true);// 6th wide part

translate([9,-110,9.1])// Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true);// 7th
translate([9,-110,9.1])// Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true);// 7th wide part

translate([7,-130,9.1])// Move cylinder cutout for BSP
cylinder(h = 20, r = 4.1, center = true);// 8th
translate([7,-130,0])// Move cylinder cutout for BSP
cylinder(h = 1.25, r = 4.35, center = true);// 8th wide part

translate([7,-143,9.1])
cylinder(h = 20, r = 2.5, center = true);// Front pin hole.

} // End of differencing BSP holes from the UTFB.
} // End of union of UTFB to allow importing the entire UTFB-tab into another OpenScad file
} // End of union of fin and plug and UTFB to allow differencing of threaded rod holes. Goes to end of UTFB and includes differencing of BSP and pin holes.
// End of UTFB tab

union(){ // Threaded rods holes and internal stabilisers
// Using high tensile steel screws M5 various lengths, with heads 8.4mm diam x 5mm deep
// Available lengths (including 5mm head, then add 3mm to each to make head disappear): 135mm (5); 105mm (3 only); 95mm (7); 85mm (5); 75mm (1); 65mm (4); 45mm (5); 35mm (5); 25mm (5)
// Using stainless steel rods of 5mm or 6mm diameter, any length.

color (“red”){ // making bolt holes and stabiliser holes red in preview for easier editing

translate([0,0,0]) // Moves the union of threaded rod holes. Change the Z value to “4” to temporarily move rod holes out of fin for editing; set to 1.6 to check if sufficient thickness is left between wall and rod hole.

union(){ // Bolt hole cylinders

//translate([-21,-25,0])
//rotate([-90,0,0])
//union(){ // Union of bolt hole 1 (forward):
//cylinder(h =48, r1 = 2.45, r2 = 2.45, center = true/false);
//cylinder(h = 8, r1 = 3.9, r = 4.2, center = true/false);}

translate([-43,-25,0])
rotate([0,0,-17])
rotate([-90,0,0])

//union(){// Bolt hole 2 for 5mm HTS bolt with head:
//cylinder(h =138, r1 = 2.45, r2 = 2.45, center = true/false);
//cylinder(h = 8, r1 = 3.9, r = 4.2, center = true/false);}

//cylinder(h =190, r1 = 2.95, r2 = 2.95, center = true/false); // Bolt hole 2 for 6mm SS threaded rod:

cylinder(h =27.1, r1 = 2.95, r2 = 2.95, center = true/false); // Bolt hole 2 for 6mm SS threaded rod short sleeve:

translate([-52.25,-25,0])
rotate([0,0,-17])
rotate([-90,0,0])
//union(){// Bolt hole 3 for 5mm HTS bolt with head
//cylinder(h = 138, r1 = 2.45, r2 = 2.45, center = true/false);
//cylinder(h = 8, r1 = 3.9, r = 4.2, center = true/false);}

//cylinder(h = 200, r1 = 2.95, r2 = 2.95, center = true/false); // Bolt hole 3 for 6mm SS threaded rod:

cylinder(h = 27.1, r1 = 2.95, r2 = 2.95, center = true/false); // Bolt hole 3 for 6mm SS threaded rod short sleeve:

translate([-61,-25,0])
rotate([0,0,-17])
rotate([-90,0,0])
//union(){// Bolt hole 4 for HTS bolt with head
//cylinder(h = 138, r1 = 2.45, r = 2.45, center = true/false);
//cylinder(h = 8, r1 = 3.9, r = 4.2, center = true/false);

//cylinder(h = 140, r1 = 2.45, r = 2.45, center = true/false); // Bolt hole 4 for 5mm SS threaded rod

cylinder(h = 27.1, r1 = 2.45, r = 2.45, center = true/false);// Bolt hole 4 for 5mm SS threaded rod short sleeve

translate([-77,-25,0])
rotate([0,0,-17])
rotate([-90,0,0])
//union(){// Bolt hole 5 (aft) for HTS bolt with head:
// cylinder(h = 68, r1 = 2.45, r = 2.45, center = true/false);
//cylinder(h = 8, r1 = 3.9, r = 4.2, center = true/false);

//cylinder(h = 70, r1 = 2.45, r = 2.45, center = true/false); // Bolt hole 5 (aft) for 5mm SS threaded rod :

cylinder(h = 27.1, r1 = 2.45, r = 2.45, center = true/false); // Bolt hole 5 (aft) for 5mm SS threaded rod short sleeve:
}
// End of bolt cylinders

union(){// Internal stabilisers to stop fin walls without infill from warping

translate([-105,220,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // distal 7thA internal stabiliser

translate([-125,220,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // distal 7thB internal stabiliser

translate([-100,200,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // distal 7thC internal stabiliser

translate([-80,182,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); //distal 7thD internal stabiliser

translate([-85,213,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // distal 7thE internal stabiliser

translate([-69,195,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thA internal stabiliser

translate([-65,215,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thB internal stabiliser

translate([-58,160,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thC internal stabiliser

translate([-55,180,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thD internal stabiliser

translate([-45,205,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thE internal stabiliser

translate([-20,190,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 6thF internal stabiliser

translate([-35,183,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 5thA interal stabiliser

translate([-0,180,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 5thB interal stabiliser

translate([-5,160,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 5thC interal stabiliser

translate([15,165,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 5thD interal stabiliser

translate([-25,158,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 4thA interal stabiliser

translate([-13,135,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 4thB interal stabiliser

translate([-19,115,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 4thC interal stabiliser

translate([-17,174,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 4thD interal stabiliser

translate([-28,132,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdA additional internal stabilisers for use with short bolt cylinders

translate([10,120,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdB additional internal stabilisers for use with short bolt cylinders

translate([16,140,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdC additional internal stabilisers for use with short bolt cylinders

translate([-45,134,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdD additional internal stabilisers for use with short bolt cylinders

translate([-38,150,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdE additional internal stabilisers for use with short bolt cylinders

translate([-32,105,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdF additional internal stabilisers for use with short bolt cylinders

translate([-50,105,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdG additional internal stabilisers for use with short bolt cylinders

translate([5,100,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 3rdH additional internal stabilisers for use with short bolt cylinders

translate([-37,80,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndA additional internal stabilisers for use with short bolt cylinders

translate([-3,80,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndB additional internal stabilisers for use with short bolt cylinders

translate([-62,80,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndC additional internal stabilisers for use with short bolt cylinders

translate([-10,57,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndD additional internal stabilisers for use with short bolt cylinders

translate([-75,57,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndE additional internal stabilisers for use with short bolt cylinders

translate([-44,57,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndF additional internal stabilisers for use with short bolt cylinders

translate([-17,33,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndG additional internal stabilisers for use with short bolt cylinders

translate([-50,82,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 2ndH additional internal stabilisers for use with short bolt cylinders

translate([-49,40,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stA proximal additional internal stabilisers for use with short bolt cylinders

translate([-22,12,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stB proximal additional internal stabilisers for use with short bolt cylinders

translate([-56,17,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stC proximal additional internal stabilisers for use with short bolt cylinders

translate([-96,17,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stD proximal additional internal stabilisers for use with short bolt cylinders

translate([-88,37,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stE proximal additional internal stabilisers for use with short bolt cylinders

translate([-57,62,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stF proximal additional internal stabilisers for use with short bolt cylinders

translate([-75,17,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stG proximal additional internal stabilisers for use with short bolt cylinders

translate([-68,37,0])
cylinder(h=20, r1=0.055, r2=0.055, center=true); // 1stH proximal additional internal stabilisers for use with short bolt cylinders

}
// End internal stabilisers instead of infill

}
// End red color
}
// End of union of threaded rods holes and internal stabilisers
}
// End of differencing threaded rods from fin and UTFB
}
// End union of it all

I used autodesk 123d (free cad) to add stuff to my fins made with finfoil. works a treat openscad looks like serious programming.

I’m curious on the capabilities of PLA, it’s pretty weak and useless crap, and deforms easy in heat (like hot car)
I like the rods but suspect it won’t help much with alot of the above also very temperature sensitive why don’t you skin it with glass or carbon? It shouldn’t be too hard to work our what thickness you need to make the base and then just cover it with 2 layers of carbon so that it’s a perfect(ish) fit.

You are right, massive-swell.
I have tried polycarbonate and Polymaker PC-max, but they warp too much for such a large object. I need to build a printer with a heated chamber if I want to print fins that are strong enough without added materials.
I think it would be very difficult to add skins to this fin after printing, because the maximum stress line is where the fin enters the fin box. I want it to have the wide part just above the box, and I cannot see how that could be glassed.
The PLA printing material has many issues, but also many strong advantages:

  • heat sensitive
  • weak
  • brittle
  • cannot be sanded dry
    But also:
  • cheap (AU$ 2.98 per fin when buying 9kg at once to get to ‘free postage’ level and getting each third roll for free; AU$5.89 if you buy 1kg +AU$15.- postage)
  • practically no warping.
  • biodegradable, sustainable and non-toxic (I don’t know about the coloring agents used).
  • transparent versions in many colors available. Being able to see what is happening inside is extremely valuable for prototyping and when filling the fins with resin.
  • sands nicely under water, no dust whatsoever.