Bottom mold for 10inch fin

This commit is contained in:
Sébastien Dante Ursini 2025-01-19 22:46:17 -03:00
parent de7cc127da
commit 9d4fa6b330
3 changed files with 69 additions and 64 deletions

View File

@ -5,8 +5,9 @@
"$fn": "64", "$fn": "64",
"base_extra_thickness": "20", "base_extra_thickness": "20",
"base_tickness": "8", "base_tickness": "8",
"build_box": "true", "build_box": "false",
"build_fin": "true", "build_fin": "false",
"build_mold": "true",
"draw_profile": "false", "draw_profile": "false",
"fin_back_angle": "20", "fin_back_angle": "20",
"fin_back_height": "30", "fin_back_height": "30",
@ -29,14 +30,13 @@
"merge_holes_diameter": "6", "merge_holes_diameter": "6",
"mold_base_height": "10", "mold_base_height": "10",
"mold_extra_width": "15", "mold_extra_width": "15",
"mold_part": "all", "mold_part": "bottom",
"mold_piston_height": "10", "mold_piston_height": "10",
"mold_top_height": "5", "mold_top_height": "5",
"parts": "all", "parts": "all",
"piston_depth": "5", "piston_depth": "5",
"printable": "false", "printable": "false",
"render_drill_template": "false", "render_drill_template": "false",
"render_mold": "false",
"resin_escape_diameter": "4", "resin_escape_diameter": "4",
"scale_factor": "1", "scale_factor": "1",
"show_curve_points": "false", "show_curve_points": "false",

View File

@ -148,7 +148,7 @@ draw_profile = false;
// Rendering parts // Rendering parts
build_fin = false; build_fin = false;
build_box = false; build_box = false;
render_mold = true; build_mold = true;
render_drill_template = false; render_drill_template = false;
parts = "all"; // [all, top, bottom] parts = "all"; // [all, top, bottom]
@ -256,59 +256,9 @@ if (draw_profile) {
layers = [profile_curve,layer0,layer1,layer2,layer3,layer4]; layers = [profile_curve,layer0,layer1,layer2,layer3,layer4];
/*
echo ("profile_curve");
print_path_points (profile_curve);
echo ("layer0");
print_path_points (layer0);
*/
/*
left(200) {
// Turning a VNF into geometry
vnf = skin(layers,slices=0,z=layerHeights(len(layers),fin_thickness),method="fast_distance");
//vnf1 = up(50, p=vnf);
//bent1 = vnf_bend(vnf1, axis="X",r=10);
vnf2 = vnf_hull(vnf);
vnf_polyhedron(vnf2);
// Expanded
//expanded_vnf = vnf_small_offset(vnf,20);
//back(80) vnf_polyhedron(expanded_vnf);
back(380) vnf_polyhedron(vnf_sheet(vnf,-30));
//vnf_polyhedron(vnf);
//vnf_wireframe(vnf);
}
*/
//left(365) polygon( profile_curve );
//test = round_corners(polygon(profile_curve), radius=20, closed=false, $fn=72);
left (800) color ("Green") polygon(profile_curve); left (800) color ("Green") polygon(profile_curve);
left (1000) color ("Green") shell(10) polygon(profile_curve); left (1000) color ("Green") shell(10) polygon(profile_curve);
/*
convex_offset_extrude(
bottom = os_circle(r=5),
top=os_circle(r=5),
height=10,
offset="delta",
angle=70
)
*/
} }
@ -350,22 +300,54 @@ if ( build_fin )
buildFin( fin_thickness ); buildFin( fin_thickness );
if ( build_box ) { if ( build_box ) {
left(80) xflip() finfit(fin_base+20, [1,1,0]); buildBox();
} }
/** /**
* Render Mold * Render Mold
*/ */
if ( render_mold ) buildMold(); if ( build_mold ) buildMold();
if ( render_drill_template ) buildDrillTemplate(); if ( render_drill_template ) buildDrillTemplate();
module buildCompletFin() {
union(){
buildFin( fin_thickness );
buildBox();
}
}
module buildBox() {
left(80) xflip()
finfit(fin_base+20, [1,1,0],false,false);
}
/** /**
* Build mold * Build mold
* *
*/ */
module buildMold() { module buildMold() {
// Bottom mold
moldContour = expandPath(profile_curve,mold_extra_width);
showDebugPath(moldContour);
moldHeight = 10;
skirtHeight = 30;
buildMoldSkirt(skirtHeight,mold_extra_width,3);
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
};
buildCompletFin();
}
}
//left(300) linear_extrude (skirtHeight) polygon(moldSkirtRegion);
/*
if (mold_part != "top") if (mold_part != "top")
difference() { difference() {
case(mold_base_height,true); case(mold_base_height,true);
@ -386,6 +368,29 @@ module buildMold() {
resin_escape(40); resin_escape(40);
} }
} }
*/
}
module buildMoldSkirt( height,offset,thickness ) {
outside = expandPath(profile_curve,offset);
inside = expandPath(profile_curve,offset-thickness);
down(height) {
// Skirt
linear_extrude (height) difference() {
polygon(outside);
polygon(inside);
};
difference() {
//union() {
intersection() {
ycopies(30,10,sp=[-100,0,0])
cube([fin_width*1.3,thickness,height]);
linear_extrude (height) polygon(outside);
};
up(height) buildCompletFin();
}
}
} }
/** /**

View File

@ -1,25 +1,25 @@
module chinook(length) module chinook(length,screw = true,pin=true)
{ {
difference() difference()
{ {
base_cube(length); base_cube(length);
tab_cut(); tab_cut();
screw_cut(); if (screw) screw_cut();
back_round_cut(length); back_round_cut(length);
pin_cut(length); if (pin) pin_cut(length);
thickness_cut(length, thick/2); thickness_cut(length, thick/2);
thickness_cut(length, -thick/2); thickness_cut(length, -thick/2);
} }
} }
module finfit(base_length, mirror_vec) module finfit(base_length, mirror_vec,screw = true,pin=true)
{ {
front_offset = tab_length; front_offset = tab_length;
length = base_length + tab_length; length = base_length + tab_length;
echo ("length:",length); echo ("length:",length);
mirror(mirror_vec) mirror(mirror_vec)
translate([0,-front_offset, 0]) translate([0,-front_offset, 0])
chinook(length); chinook( length, screw ,pin );
} }
module base_cube(BaseLength) module base_cube(BaseLength)