diff --git a/Surf-Fins-10inch.json b/Surf-Fins-10inch.json index a3b1a2c..f79dc7e 100644 --- a/Surf-Fins-10inch.json +++ b/Surf-Fins-10inch.json @@ -95,6 +95,59 @@ "tab_height": "13", "thick": "9.1999999999999993", "thick_cut": "1" + }, + "New set 3": { + "$fn": "64", + "base_extra_thickness": "40", + "base_tickness": "8", + "build_box": "false", + "build_fin": "false", + "build_mold": "true", + "draw_profile": "false", + "fin_back_angle": "20", + "fin_back_height": "30", + "fin_back_strength": "30", + "fin_back_widthdraw": "20", + "fin_base": "130", + "fin_counter_angle": "30", + "fin_counter_strength": "10", + "fin_edge_angle": "30", + "fin_edge_strength": "30", + "fin_edge_withdraw": "20", + "fin_end_angle": "110", + "fin_end_strength": "30", + "fin_height": "254", + "fin_start_angle": "70", + "fin_sweep": "25", + "fin_thickness": "9", + "fin_top_withdraw": "35", + "fin_width": "270", + "fin_width_tip": "5", + "height": "25", + "merge_holes_diameter": "6", + "mirror_vec": "[1, 1, 0]", + "mold_base_height": "10", + "mold_extra_width": "15", + "mold_part": "all", + "mold_piston_height": "10", + "mold_top_height": "5", + "parts": "all", + "pin_back": "9", + "pin_depth": "16.399999999999999", + "pin_dia": "3", + "piston_depth": "5", + "printable": "true", + "render_drill_template": "false", + "resin_escape_diameter": "4", + "scale_factor": "1", + "screw_dia": "4.5", + "screw_pos": "9.5999999999999996", + "show_curve_points": "false", + "show_debug_layers": "false", + "start": "[0, 0]", + "tab_height": "13", + "thick": "9.1999999999999993", + "thick_cut": "1" } } } diff --git a/Surf-Fins-10inch.scad b/Surf-Fins-10inch.scad index 0f7f89d..e997ae9 100644 --- a/Surf-Fins-10inch.scad +++ b/Surf-Fins-10inch.scad @@ -290,12 +290,13 @@ if ( render_drill_template ) buildDrillTemplate(); module buildCompletFin() { union(){ buildFin( fin_thickness ); - buildBox(); + //buildBox(); } } module buildBox() { + /* left(80) { xflip() { finfit(fin_base+20, [1,1,0],false,false); @@ -303,11 +304,12 @@ module buildBox() { //up(20) tab_cut(); } + */ } module buildBoxMold() { - zrot(-90) chinook_profile(fin_base+20); - zrot(-90) up(-2) offset(chinook_profile(fin_base+20),delta=5); + + // To be defined } @@ -323,13 +325,14 @@ module buildMold() { moldContour = expandPath(profile,mold_extra_width); buildMoldSkirt(skirtHeight,mold_extra_width,3); + // Bottom Mold if (mold_part != "top") { difference() { union() { down(moldHeight) linear_extrude (moldHeight) polygon(moldContour); // bottom //back(5) left(95) cube([20+10,25,moldHeight],anchor=BACK+TOP); // Box shell - - up(5) color("Yellow") left(80) buildBoxMold(); + skirt( profile, moldThickness = 3 , angle = 85, moldDeep = fin_thickness ); + //up(5) color("Yellow") left(80) buildBoxMold(); }; buildCompletFin(); diff --git a/common.scad b/common.scad index d31c510..f01120a 100644 --- a/common.scad +++ b/common.scad @@ -122,9 +122,11 @@ module print_path_points(path) { * Expand path * * @param path - Original path - * param delta - distance to expand + * @param delta - distance to expand + * + * Keep the same number of points */ -function expandPath(path,delta) = +function expandPath( path, delta ) = offset( deduplicate(path), delta=delta, @@ -153,3 +155,29 @@ function layerHeights(n, fin_thickness) = layer_height = fin_thickness / (n - 1) ) [ for (i = [0 : n-1]) i * layer_height ]; + +/** + * Make a skirt around a profile + * + * @param profile - Path ot the mold + * @param moldThickness - Thickness of the mold + * @param angle - Angle of the skirt starting from flat angle + * @param moldDeep - Mold deep. Normally height of the skirt should be 3 times the thickness of the model + * @param side - Bottom or top part of the mold + * + */ +module skirt( profile, moldThickness, angle, moldDeep, side = "bottom", heightFactor = 3 ) { + deviation = opp_ang_to_adj (height,angle); + skirtHeight = heightFactor * moldDeep; + if ( side == "bottom" ) { + lowInt = profile; + lowExt = expandPath( lowInt , moldThickness ); + highInt = expandPath( lowInt , deviation ); + highExt = expandPath( lowInt , deviation + moldThickness ); + difference(){ + skin([lowExt , highExt ], z=[0 , skirtHeight] , slices=0); + skin([lowInt , highInt ], z=[-OFFSET , skirtHeight+OFFSET] , slices=0); + } + } +} + \ No newline at end of file diff --git a/lib/chinook.scad b/lib/chinook.scad index 7930376..c38409b 100644 --- a/lib/chinook.scad +++ b/lib/chinook.scad @@ -129,13 +129,6 @@ module thickness_cut(BaseLength,height, zOffset,pin_depth=16.4, pin_back=9,thick ); } -if (true) { - - chinook(130+20); - //up(5.2) left() color("Yellow")chinook_profile(130+20); - - -} diff --git a/lib/finbox_us.scad b/lib/finbox_us.scad index ea9463b..a5a5d65 100644 --- a/lib/finbox_us.scad +++ b/lib/finbox_us.scad @@ -86,7 +86,7 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength difference(){ skin([baseInt , topInt ],z=[0,skirtHeight],slices=0); - skin([baseInt2 , topInt2 ],z=[thickness/2,skirtHeight+OFFSET],slices=0); + skin([baseInt2 , topInt2 ],z=[thickness/2+moldThickness,skirtHeight+OFFSET],slices=0); } /* @@ -125,6 +125,16 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength } } +} + +module finBoxMold(length,finLength,part="bottom") { + + //if (part=="bottom") { + usBoxMold( 130,finLength=100,part=part ); + //} + + + } //test = profileUS (100); @@ -151,7 +161,11 @@ module thickness_cut(thickness,height) { //boxProfileUS( length= 188); //usBox( 130,drill=false ); -usBoxMold( 130,part="top" ); -down(50) usBoxMold( 130,part="bottom" ); +//usBoxMold( 130,part="top" ); + +finBoxMold( 130,finLength=100,part="bottom" ); + + +//down(50) usBoxMold( 130,part="bottom" );