UTFB_mould_8.0_A_100.stl and UTFB_mould_8.0_B_100.stl shown in Slic3r software.
Below is the code for OpenSCAD if you want to have a play with it.
Let me know if you spot any potential problems, please.
Code for part A:
// UNTESTED - NOT YET PRINTED.
// Universal Tough Fin Tab UTFB_8.0_A.scad
// Code for use in OpenSCAD
// $fn=XYZ; sets the level of detail. Above 35 causes many computer crashes when rotating the model.
$fn=35;
// The following command produces the 2D output when the “//” are removed.
//projection(cut=false){
// This creates the negative mould:
difference() {
color(“green”,0.1)
translate([-7,-153,4])
cube([178,160,9.5]); centre=true;
// To rotate everything; required to allow 2D printing of outline:
rotate([90,0,0]){
// This makes the fin base green in Preview:
color(“green”,0.25){
// Minkowski sum three times to round the base edges:
minkowski(){
minkowski(){
minkowski(){
// Linear Extrude length of the fin base reduced to compensate for elongation due to Minkowski sum:
linear_extrude (height = 146, centre = false, twist = 0)
// Polygon points brought closer together to compensate for enlargement due to Minkowski sum. Without Minkowski sum use: [0,0.05],[0,8.95],[24,9],[24,0].
// Might need to change it to 9mm bottom and 9.1mm top for use with ball spring plungers for snap-in fins.
polygon(points=[[0,3.05],[0,6.95],[19,7],[19,3]]);
// 3 cylinders each rotated differently to round off the edges with the Minkowski Sum function:
cylinder(r=1,h=1); }
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:
}
// This makes the ‘hull’ red in Preview:
color(“red”, 0.5){
// The Hull function creates the spine on the fin base, by connecting modified spheres and automatically tapering the edges:
hull(){
// This moves the entire ‘hull’ to the right position on the fin tab:
translate([0,4.5,69.5]){
// Forward + proximal sphere in the hull:
translate([22.5,0,0]){
rotate([90,0,0])
resize(newsize=[45,60,9])
sphere(r=10); }
// Central 9mm thick sphere in the hull, to make the 9mm area at the base bigger:
translate([22.5,0,25]){
rotate([90,0,0])
resize(newsize=[45,60,9])
sphere(r=10); }
// Aft + proximal sphere in the hull:
translate([22.5,0,25]){
rotate([90,0,0])
resize(newsize=[45,60,4])
sphere(r=10); }
// Tip sphere in the hull:
translate([130,0,0]){
rotate([90,0,0])
resize(newsize=[75,30,4])
sphere(r=10); }
}
}
}
}
// Spheres for mould keys:
// Forward key spheres:
translate([160,-44,4])
sphere (r=4.5);
translate([128.5,-36,4])
sphere (r=4.5);
translate([97,-28,4])
sphere (r=4.5);
translate([65.5,-19,4])
sphere (r=4.5);
translate([34,-10,4])
sphere (r=4.5);
// Aft key spheres:
translate([160,-94,4])
sphere (r=4.5);
translate([128.5,-105,4])
sphere (r=4.5);
translate([97,-116,4])
sphere (r=4.5);
translate([65.5,-127,4])
sphere (r=4.5);
translate([34,-138,4])
sphere (r=4.5);
// Polygons to cut off sides of mould:
// Forward;
linear_extrude (height = 14, centre = false, twist = 0)
polygon(points=[[30,7,],[171,-36],[171,7]]);
// Aft:
linear_extrude (height = 14, centre = false, twist = 0)
polygon(points=[[30,-153,],[171,-153],[171,-102]]);
}
// End of Code Part A.
.
.
.
.
.
.
.
.
.
.
Code for part B:
// UNTESTED - NOT YET PRINTED
// Universal Tough Fin Tab UTFB_8.0.B.scad
// Code for use in OpenSCAD
// $fn=XYZ; sets the level of detail. Above 35 causes many computer crashes when rotating the model.
$fn=35;
// The following command produces the 2D output when the “//” are removed.
//projection(cut=false){
// Spheres for mould keys:
// Forward key spheres:
translate([160,-44,4])
sphere (r=4.5);
translate([128.5,-36,4])
sphere (r=4.5);
translate([97,-28,4])
sphere (r=4.5);
translate([65.5,-19,4])
sphere (r=4.5);
translate([34,-10,4])
sphere (r=4.5);
// Aft key spheres:
translate([160,-94,4])
sphere (r=4.5);
translate([128.5,-105,4])
sphere (r=4.5);
translate([97,-116,4])
sphere (r=4.5);
translate([65.5,-127,4])
sphere (r=4.5);
translate([34,-138,4])
sphere (r=4.5);
// This creates the negative mould:
difference() {
color(“blue”,0.1)
translate([-7,-153,-5])
cube([178,160,9.5]); centre=true;
// To rotate everything; required to allow 2D printing of outline:
rotate([90,0,0]){
// This makes the fin base green in Preview:
color(“green”,0.25){
// Minkowski sum three times to round the base edges:
minkowski(){
minkowski(){
minkowski(){
// Linear Extrude length of the fin base reduced to compensate for elongation due to Minkowski sum:
linear_extrude (height = 146, centre = false, twist = 0)
// Polygon points brought closer together to compensate for enlargement due to Minkowski sum. Without Minkowski sum use: [0,0.05],[0,8.95],[24,9],[24,0].
// Might need to change it to 9mm bottom and 9.1mm top for use with ball spring plungers for snap-in fins.
polygon(points=[[0,3.05],[0,6.95],[19,7],[19,3]]);
// 3 cylinders each rotated differently to round off the edges with the Minkowski Sum function:
cylinder(r=1,h=1); }
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:
}
// This makes the ‘hull’ red in Preview:
color(“red”, 0.5){
// The Hull function creates the spine on the fin base, by connecting modified spheres and automatically tapering the edges:
hull(){
// This moves the entire ‘hull’ to the right position on the fin tab:
translate([0,4.5,69.5]){
// Forward + proximal sphere in the hull:
translate([22.5,0,0]){
rotate([90,0,0])
resize(newsize=[45,60,9])
sphere(r=10); }
// Central 9mm thick sphere in the hull, to make the 9mm area at the base bigger:
translate([22.5,0,25]){
rotate([90,0,0])
resize(newsize=[45,60,9])
sphere(r=10); }
// Aft + proximal sphere in the hull:
translate([22.5,0,25]){
rotate([90,0,0])
resize(newsize=[45,60,4])
sphere(r=10); }
// Tip sphere in the hull:
translate([130,0,0]){
rotate([90,0,0])
resize(newsize=[75,30,4])
sphere(r=10); }
}
}
}
}
// Polygons to cut off sides of mould:
// Forward;
translate([0,0,-8]){
linear_extrude (height = 14, centre = false, twist = 0)
polygon(points=[[30,7,],[171,-36],[171,7]]);
// Aft:
linear_extrude (height = 14, centre = false, twist = 0)
polygon(points=[[30,-153,],[171,-153],[171,-102]]);
}
}
// End of Code for part B.