diff --git a/Surf-Fins-10inch.json b/Surf-Fins-10inch.json index f79dc7e..10346a0 100644 --- a/Surf-Fins-10inch.json +++ b/Surf-Fins-10inch.json @@ -98,7 +98,7 @@ }, "New set 3": { "$fn": "64", - "base_extra_thickness": "40", + "base_extra_thickness": "20", "base_tickness": "8", "build_box": "false", "build_fin": "false", diff --git a/Surf-Fins-10inch.scad b/Surf-Fins-10inch.scad index e997ae9..9737ae9 100644 --- a/Surf-Fins-10inch.scad +++ b/Surf-Fins-10inch.scad @@ -12,9 +12,10 @@ include ; include ; include ; -include +include ; include <./lib/chinook.scad> // US Box +include <./lib/finbox_us.scad> // US Box // https://github.com/BelfrySCAD/BOSL2/wiki/Tutorial-Beziers_for_Beginners @@ -76,7 +77,7 @@ fin_back_strength=30; /* [Base Specs] */ base_tickness=8; -base_extra_thickness=40; +base_extra_thickness=20; // ---------------------*/ @@ -96,6 +97,8 @@ resin_escape_diameter = 4; merge_holes_diameter = 6; piston_depth = 5; +skirt_angle=80; + // ---------------------*/ /* [US Box] */ // ---------------------*/ @@ -262,13 +265,10 @@ if (draw_profile) { left (800) color ("Green") polygon(profile_curve_with_base); left (1000) color ("Green") shell(10) polygon(profile_curve_with_base); - } - - // ***************** // * Fin Drawing * // ***************** @@ -313,6 +313,28 @@ module buildBoxMold() { } + + +/** + * Remove bottom part of the fin mold to let the box mold do the job + * + */ +module moldBottomMask(moldThickness = 3,height,angle) { + + // Remove bottom part + //color("Red") cube([fin_width,base_extra_thickness,80],anchor=BACK); + deviation = opp_ang_to_adj (height,angle); + //back(moldThickness) + back(-1) + down(OFFSET) + //up(2) + color ("Blue") prismoid( + size1=[fin_width/2*1.2, moldThickness*2], + size2=[fin_width/2*1.2, moldThickness*2+ 2*deviation], + h=height+OFFSET*2 + ); +} + /** * Build mold * @@ -327,18 +349,47 @@ module buildMold() { // Bottom Mold if (mold_part != "top") { + + // Fin mold difference() { union() { down(moldHeight) linear_extrude (moldHeight) polygon(moldContour); // bottom //back(5) left(95) cube([20+10,25,moldHeight],anchor=BACK+TOP); // Box shell - skirt( profile, moldThickness = 3 , angle = 85, moldDeep = fin_thickness ); - //up(5) color("Yellow") left(80) buildBoxMold(); + difference() { + skirt( profile, moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness ); + moldBottomMask(height=fin_thickness * 3,angle=skirt_angle); + + + // + //moldJunctionMask(height=fin_thickness * 3,angle=skirt_angle); + } }; + // Remove Fin buildCompletFin(); } + // Box mold + assert (fin_base,"fin_base missing"); + echo ("fin_base----------",fin_base); + // left(80) finBoxMold( length = 130, finLength = fin_base ); + //diff() { + difference() { + left(80) finBoxMold( fin_base+30,skirtAngle = skirt_angle ); + + // Remove junction between skirt + //tag("remove") + moldJunctionMask(height=fin_thickness * 3,angle=skirt_angle); + //tag("remove") + buildCompletFin(); + } + //moldJunctionMask(height=fin_thickness * 3,angle=skirt_angle); + + + } + up(50) buildCompletFin(); + //left(300) linear_extrude (skirtHeight) polygon(moldSkirtRegion); /* if (mold_part != "top") @@ -363,6 +414,24 @@ module buildMold() { } */ } + +module moldJunctionMask(moldThickness = 3,height,angle){ + + deviation = opp_ang_to_adj (height,angle); + right(moldThickness) + left(moldThickness/2) + down(OFFSET) + //fwd(60) + //back(moldThickness*2-0.5) + back(moldThickness*1.2-OFFSET ) + color("Red") + prismoid( + size1=[fin_width/2-1.5*moldThickness, moldThickness*3+2*OFFSET], + size2=[fin_width/2+1*deviation+0*moldThickness, /*moldThickness/2*/moldThickness * 3+deviation], + h=height+OFFSET*3 + ); +} + module buildMoldSkirt( height,offset,thickness ) { outside = expandPath(profile,offset); inside = expandPath(profile,offset-thickness); diff --git a/lib/finbox_us.scad b/lib/finbox_us.scad index a5a5d65..a3cd061 100644 --- a/lib/finbox_us.scad +++ b/lib/finbox_us.scad @@ -60,6 +60,8 @@ module usBox( length, height=23, thickness = 9, tabLength = 20,pinDiameter = 5,p module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength = 20,part = "bottom",skirtAngle=80 ) { +//assert(length == 130,"Not 130"); + moldHeight = thickness + 2 * moldThickness; skirtHeight = 3 * thickness; deviation = opp_ang_to_adj (skirtHeight,skirtAngle); // Skirt devitation @@ -127,13 +129,12 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength } -module finBoxMold(length,finLength,part="bottom") { +module finBoxMold( length, finLength=-1, skirtAngle = 80, part="bottom") { + assert (finLength,"Missing 'finLength' parameter in finBoxMold module"); //if (part=="bottom") { - usBoxMold( 130,finLength=100,part=part ); + usBoxMold( length,part=part,skirtAngle=skirtAngle ); //} - - } @@ -163,7 +164,6 @@ module thickness_cut(thickness,height) { //usBox( 130,drill=false ); //usBoxMold( 130,part="top" ); -finBoxMold( 130,finLength=100,part="bottom" ); //down(50) usBoxMold( 130,part="bottom" );