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

View File

@ -148,7 +148,7 @@ draw_profile = false;
// Rendering parts
build_fin = false;
build_box = false;
render_mold = true;
build_mold = true;
render_drill_template = false;
parts = "all"; // [all, top, bottom]
@ -256,59 +256,9 @@ if (draw_profile) {
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 (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
)
*/
left (1000) color ("Green") shell(10) polygon(profile_curve);
}
@ -350,22 +300,54 @@ if ( build_fin )
buildFin( fin_thickness );
if ( build_box ) {
left(80) xflip() finfit(fin_base+20, [1,1,0]);
buildBox();
}
/**
* Render Mold
*/
if ( render_mold ) buildMold();
if ( build_mold ) buildMold();
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
*
*/
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")
difference() {
case(mold_base_height,true);
@ -386,6 +368,29 @@ module buildMold() {
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()
{
base_cube(length);
tab_cut();
screw_cut();
if (screw) screw_cut();
back_round_cut(length);
pin_cut(length);
if (pin) pin_cut(length);
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;
length = base_length + tab_length;
echo ("length:",length);
mirror(mirror_vec)
translate([0,-front_offset, 0])
chinook(length);
chinook( length, screw ,pin );
}
module base_cube(BaseLength)