diff --git a/Kitesurf-Fins.json b/Kitesurf-Fins.json index 7b20b6d..8a43818 100644 --- a/Kitesurf-Fins.json +++ b/Kitesurf-Fins.json @@ -62,6 +62,7 @@ "mold_extra_width": "15", "mold_part": "bottom", "mold_piston_height": "10", + "mold_top_height": "6", "parts": "bottom", "piston_depth": "5", "resin_escape_diameter": "4", diff --git a/Kitesurf-Fins.scad b/Kitesurf-Fins.scad index 5660217..c9cc22e 100644 --- a/Kitesurf-Fins.scad +++ b/Kitesurf-Fins.scad @@ -57,7 +57,7 @@ base_extra_thickness=20; show_debug_layers = false; // Draw master profile -draw_profile = true; +draw_profile = false; // Draw Fin build_fin = false; @@ -69,6 +69,7 @@ build_mold = true; // Mold base height mold_base_height = 10; +mold_top_height = 5; mold_extra_width = 15; mold_piston_height = 10; @@ -275,48 +276,37 @@ if (build_mold) { if (build_mold) { back(mold_width/2-mold_extra_width-5) // Bottom mold - difference() { - bottomCase(); - - // Bottom Insert - //align(TOP,overlap=-OFFSET,inside=true) - //up(piston_depth/2-OFFSET) + case(mold_base_height); + + // Piston down(piston_depth-OFFSET) fwd(20) bottomInsert(); - - // Drills - //align(BOTTOM,[FRONT+LEFT,FRONT+RIGHT,BACK+LEFT,BACK+RIGHT],inset=10,overlap=-OFFSET) - // color("orange") - //tag("remove") - // drilling(); - - // Top Mold - - /* - if (mold_part != "bottom") align(TOP) - //color("Goldenrod") - //color([255, 215, 0,0.1]) - up(OFFSET*3) - diff() { - color("Orange") cuboid([ mold_length, mold_width, mold_piston_height ]); - position(TOP) down(OFFSET) tag("remove") resin_escape(); - } - */ } + // Top Mold + + fwd(0) up(60) { + // Top Mold + case(mold_top_height); + // Piston + down(mold_top_height+piston_depth-OFFSET) fwd(20) + topPiston(); + } + } - -//up(50) bottomInsert(); - -module bottomCase() { - diff() cuboid( [ mold_length, mold_width, mold_height ],anchor=TOP ) +module case(height) { + diff() cuboid( [ mold_length, mold_width, height ],anchor=TOP ){ // Drills align(BOTTOM,[FRONT+LEFT,FRONT+RIGHT,BACK+LEFT,BACK+RIGHT],inset=10,overlap=-OFFSET) - // color("orange") - tag("remove") - drilling(); + color("orange") + tag("remove") + drilling(); + // Material holes + align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET) + color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90); + } } @@ -333,15 +323,31 @@ module bottomInsert() { ; } +// ***************** +// * Top piston * +// ***************** +module topPiston() { + debug=true; + layer_profile = pathProcess(profile_path); + difference() { + %skin( [ layer_profile,expandPath(layer_profile,3) ], z=[0,piston_depth], slices=0 ); + down(OFFSET) + buildFinSide(false); + } +} +//up(50) topPiston(); + + /** * Build fin side * * @param flip - Define it it is top or bottom fin side */ module buildFinSide(flip=false) { + debug=false; mirror([0,0,flip ? 1 : 0]) color(flip ? "Gray" : "LightGray") /*up(fin_thickness/4)*/ /*down(fin_thickness) */ - ellipse_extrude( fin_thickness/2) + ellipse_extrude( fin_thickness/2*(debug?1.2:1)) polygon(profile_path); }