Cleanup and control points documentation

This commit is contained in:
Sébastien Dante Ursini 2025-01-24 16:30:27 -03:00
parent 8e4f99cd44
commit 607fdf8d79
5 changed files with 49 additions and 70 deletions

View File

@ -10,7 +10,11 @@ The box is designed using library [Fin Base](https://github.com/hrobeers/finbase
![](https://user-images.githubusercontent.com/2812522/105723055-9fd71100-5f26-11eb-8a9e-b892212b240b.jpg)
## Fin profile
Fin profile is defined using bézier 3 points control
![](./res/Control-Points.webp)
## Kitesurf Fins

View File

@ -36,7 +36,6 @@
"parts": "all",
"piston_depth": "5",
"printable": "false",
"resin_escape_diameter": "4",
"scale_factor": "1",
"show_curve_points": "false",
"show_debug_layers": "false",
@ -83,7 +82,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -135,7 +133,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -189,7 +186,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -244,7 +240,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -265,8 +260,8 @@
"box_thickness": "9.5999999999999996",
"build_box": "false",
"build_fin": "false",
"build_mold": "true",
"draw_profile": "false",
"build_mold": "false",
"draw_profile": "true",
"fin_back_angle": "20",
"fin_back_height": "30",
"fin_back_strength": "30",
@ -291,7 +286,7 @@
"mirror_vec": "[1, 1, 0]",
"mold_base_height": "10",
"mold_extra_width": "15",
"mold_part": "top",
"mold_part": "all",
"mold_piston_height": "10",
"mold_top_height": "5",
"partition": "none",
@ -301,7 +296,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",

View File

@ -91,7 +91,7 @@ mold_extra_width = 15;
mold_piston_height = 10;
resin_escape_diameter = 4;
//resin_escape_diameter = 4;
// Diameter for screw holes in mm
merge_holes_diameter = 6;
@ -380,6 +380,7 @@ module moldJunctionMask(moldThickness = 3,height,angle){
);
}
module buildMoldSkirt( height,offset,thickness ) {
outside = expandPath(profile,offset);
inside = expandPath(profile,offset-thickness);
@ -404,52 +405,27 @@ module buildMoldSkirt( height,offset,thickness ) {
}
// *****************
// * Bottom insert *
// *****************
module bottomInsert() {
debug=true;
layer_profile = profile_curve_with_base;
skin( [ layer_profile,expandPath(layer_profile,3) ], z=[0,piston_depth], slices=0 )
up(OFFSET)
buildFinSide(true)
;
}
// *****************
// * Top piston *
// *****************
module topPiston() {
debug=true;
layer_profile = profile_curve_with_base;
difference() {
skin( [ layer_profile,expandPath(layer_profile,3) ], z=[0,piston_depth], slices=0 );
down(OFFSET)
buildFinSide(false);
}
}
/**
* Build fin
*
* @param thickness - Thickness of the fin
*/
module buildFin( thickness ) {
union() {
if (parts != "bottom") buildFinSide( thickness );
if (parts != "top") buildFinSide( thickness , true );
if (parts != "bottom" ) buildFinSide( thickness );
if (parts != "top" ) buildFinSide( thickness , true );
}
}
/**
* Build fin side
*
* @param flip - Define it it is top or bottom fin side
*
* @param thickness - Thickness of the surf fin
* @param flip - Define it it is top or bottom fin side
*
*/
module buildFinSide(thickness,flip=false) {
//profile_curve_with_base1 = subdivide_path (profile_curve_with_base,500);
//if (false)
mirror([0,0,flip ? 1 : 0])
color(flip ? "Gray" : "LightGray")
ellipse_extrude( thickness / 2 /*,height=2*/,center=false,twist=-7)
@ -457,31 +433,34 @@ module buildFinSide(thickness,flip=false) {
polygon( profile_curve_with_base);
}
module resin_escape(length) {
color ("Blue") cylinder(h=length, r=resin_escape_diameter/2);
}
/**
* Add base to fin profile
*
* @param path - Profile of the surf fin
*/
function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_extra_thickness]]);
module partitionMask(inverse = false) {
up(10)
/**
* Partition mask
* @param inverse - Side of the cut
* @param cut - Cut type
*/
module partitionMask(inverse = false,cut = "sinewave") {
partition_mask(
w=fin_height/2*1.5,
h=80, // height
l=fin_width*3,
cutpath="sinewave",
//spread=0.1,
l=fin_width*3, // Length on x axis
w=fin_height/2*1.5, // Deepness on y axis
h=80, // height on z axis
cutpath=cut,
inverse=inverse,
anchor=FRONT
);
}
/**
* Draws a profile based on Bezier path points with optional debug visualization.
*
@ -495,29 +474,29 @@ module partitionMask(inverse = false) {
*/
module drawProfile( points,debug = true ){
text_size=40;
debugPoint (start, "Start", "Red" );
debugPoint (top_point, "Top", "Blue" );
debugPoint (edge_point, "Edge", "Brown" );
debugPoint (counter_edge_point, "Counter Edge", "Brown" );
debugPoint (tail_point, "Tail", "Yellow" );
debugPoint (end_point, "End", "Yellow" );
//pt = [100,0];
//pos = bezpath_closest_point(points, pt);
//xy = bezpath_points(points,pos[0],pos[1]);
debugPoint (start, "Start", "Red" ,textSize=text_size , t=[-20,4,0]);
debugPoint (top_point, "Top", "Blue" ,textSize=text_size , t=[-5,5,0]);
debugPoint (edge_point, "Edge", "Brown" ,textSize=text_size , t=[10,-5,0]);
debugPoint (counter_edge_point, "Counter Edge", "Brown" ,textSize=text_size , t=[35,-5,0]);
debugPoint (tail_point, "Tail", "Yellow" ,textSize=text_size , t=[8,-5,0]);
debugPoint (end_point, "End", "Yellow" ,textSize=text_size , t=[13,4,0]);
debug_bezier(points, N=3,width=1.2);
}
echo ("****************************");
echo ("** Build **");
echo ("****************************");
echo (str("filename :"," surf-fins-10inch-",mold_part,"-",partition,"_",version,".stl"," "));
// Draw fin profile
if (draw_profile)
back(10) right(350) showDebugPath(profile_curve_with_base);
if (draw_profile) drawProfile(points);
// Show curve points
if (show_curve_points)

View File

@ -31,12 +31,14 @@ function handle(point,angle,strength) = [
/**
* Show Debug point
*/
module debugPoint(point, id, color,textSize=20,r=1.5) {
module debugPoint(point, id, color,textSize=20,r=1.5,t = [0,0,0]) {
translate(point) {
color(color) sphere(r = r);
//translate([3, 3, 0.6]) {
translate([textSize/7, textSize/7, textSize/10]) {
translate([textSize/7+t[0], textSize/7+t[1], textSize/10+t[2]]) {
color("white")
scale([0.2, 0.2, 1])
linear_extrude(height = 0.1)

BIN
res/Control-Points.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB