From 522901991d61a6f89e2403b859e1be3fcddbeec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Dante=20Ursini?= Date: Tue, 14 Jan 2025 16:46:03 -0300 Subject: [PATCH] Cleanup --- Kitesurf-Fins.json | 60 +------------ Kitesurf-Fins.scad | 205 +++++++++++++++++++-------------------------- 2 files changed, 87 insertions(+), 178 deletions(-) diff --git a/Kitesurf-Fins.json b/Kitesurf-Fins.json index 72c6cd5..6cb22e9 100644 --- a/Kitesurf-Fins.json +++ b/Kitesurf-Fins.json @@ -5,7 +5,7 @@ "$fn": "64", "base_extra_thickness": "20", "base_tickness": "8", - "draw_fin": "true", + "build_fin": "true", "draw_profile": "false", "fin_back_angle": "20", "fin_back_height": "30", @@ -28,64 +28,6 @@ "fin_width_tip": "5", "parts": "all", "scale_factor": "1", - "show_debug_layers": "true" - }, - "New set 2": { - "$fn": "64", - "base_extra_thickness": "20", - "base_tickness": "8", - "draw_fin": "false", - "draw_profile": "false", - "fin_back_angle": "20", - "fin_back_height": "30", - "fin_back_strength": "30", - "fin_back_widthdraw": "20", - "fin_back_withraw": "20", - "fin_base": "114", - "fin_counter_angle": "30", - "fin_counter_strength": "10", - "fin_edge_angle": "30", - "fin_edge_strength": "30", - "fin_end_angle": "110", - "fin_end_strength": "30", - "fin_height": "51", - "fin_start_angle": "60", - "fin_sweep": "25", - "fin_thickness": "8", - "fin_top_withdraw": "10", - "fin_width": "120", - "fin_width_tip": "5", - "parts": "all", - "scale_factor": "1", - "show_debug_layers": "false" - }, - "New set 3": { - "$fn": "64", - "base_extra_thickness": "20", - "base_tickness": "8", - "draw_fin": "false", - "draw_profile": "true", - "fin_back_angle": "20", - "fin_back_height": "30", - "fin_back_strength": "30", - "fin_back_widthdraw": "20", - "fin_back_withraw": "20", - "fin_base": "114", - "fin_counter_angle": "30", - "fin_counter_strength": "10", - "fin_edge_angle": "30", - "fin_edge_strength": "30", - "fin_end_angle": "110", - "fin_end_strength": "30", - "fin_height": "51", - "fin_start_angle": "60", - "fin_sweep": "25", - "fin_thickness": "8", - "fin_top_withdraw": "10", - "fin_width": "120", - "fin_width_tip": "5", - "parts": "all", - "scale_factor": "1", "show_debug_layers": "false" } } diff --git a/Kitesurf-Fins.scad b/Kitesurf-Fins.scad index a1b4661..ae6b405 100644 --- a/Kitesurf-Fins.scad +++ b/Kitesurf-Fins.scad @@ -7,7 +7,7 @@ include ; include ; include ; include ; -include ; +//include ; /************************************************/ /* Parameters */ @@ -60,7 +60,7 @@ show_debug_layers = false; draw_profile = true; // Draw Fin -draw_fin = false; +build_fin = false; /* [Rendering] */ @@ -78,21 +78,16 @@ $fn=64; pt1_x = adj_ang_to_opp(fin_height,fin_sweep)+fin_base/2; pt1_y = fin_height; -echo ("counterTop(fin_width,fin_top_withdraw)",counterTop(fin_width,fin_top_withdraw,fin_height)); - -echo ("handleEnd(fin_width,fin_top_withdraw,fin_counter_angle,fin_counter_strength)",handleEnd(fin_width,fin_top_withdraw,fin_counter_angle,fin_counter_strength)); -echo ("xAngleFactor(-20)",xAngleFactor(-20)); - -echo("polar_to_x : ",polar_to_xy(100, 180)); - -back_point = [fin_width-7,fin_height/2]; +//back_point = [fin_width-7,fin_height/2]; tail_point = [fin_width-3,fin_height/5]; edge_point = [fin_width-fin_top_withdraw,fin_height-2]; counter_edge_point = [fin_width-6,fin_height-8]; - -control_points = [ +/******************/ +/* Profile points */ +/******************/ + profile_points = [ // ***************** // INITIAL POINT // ***************** @@ -107,54 +102,28 @@ control_points = [ // ***************** // EDGE POINT // ***************** - //counterTop(fin_width,fin_top_withdraw,fin_height), // [250,220], // Point 2 - handle(edge_point,140 /*degree*/,4), - edge_point, // [250,220], // Point 2 - handle(edge_point,-45 /*degree*/,4), + handle(edge_point,140 ,4), + edge_point, // Point Edge Point + handle(edge_point,-45,4), // ***************** // COUNTER EDGE POINT // ***************** - //counterTop(fin_width,fin_top_withdraw,fin_height), // [250,220], // Point 2 - handle(counter_edge_point,120 /*degree*/,4), - counter_edge_point, // [250,220], // Point 2 - handle(counter_edge_point,-110 /*degree*/,13), - - // ***************** - // BACK Point - // ***************** - //counterTop(fin_width,fin_top_withdraw,fin_height), // [250,220], // Point 2 - /* - handle(back_point,90 ,6), - back_point, - handle(back_point,-90 ,6), - */ - + handle(counter_edge_point,120,4), + counter_edge_point, // Point Counter Edge + handle(counter_edge_point,-110,13), // ***************** // TAIL Point // ***************** - handle(tail_point,115 ,10), tail_point, - //handle(tail_point,-90,10), handle(tail_point,0,0), - //tailPoint(), - // ***************** - // BACK POINT - // ***************** - /* - handle(backPoint(),fin_back_angle,fin_back_strength), - backPoint(), - handle(backPoint(),-fin_back_angle,fin_back_strength), - */ // ***************** // END POINT // ***************** - //endHandle(fin_end_angle), // End Handle - handle([fin_base,0],60 /*degree*/,3), + handle([fin_base,0],60,3), [fin_base,0] // End point ]; - - +/* top_point = [0,fin_height]; p1 = [fin_thickness/2,0]; p2 = [-fin_thickness/2,0]; @@ -166,16 +135,17 @@ vertical_shape=[ // ***************** // TOP Point // ***************** - handle(top_point,140 /*degree*/,0), + handle(top_point,140 ,0), top_point, - handle(top_point,140 /*degree*/,0), + handle(top_point,140 ,0), // ***************** // END POINT // ***************** handle(p2,90,fin_height/1.2), p2 ]; - +*/ +/* lpoint=[fin_width/2,0]; rpoint=[-lpoint[0],0]; top_strength=fin_width/8; @@ -192,39 +162,49 @@ top_shape=[ handle(rpoint,-150,top_strength), rpoint ]; +*/ // Calculate points along the Bézier curve. // 'N' here determines the number of points to calculate. //N = 50; // Number of points to generate -profile_path = asCurve(control_points); -vertical_path = asCurve(vertical_shape); -top_path = asCurve(top_shape); +/* +translate_path( + resample_path(profile_path,200), + -fin_width/2, + 0 + ) +*/ +profile_path = translate_path( + asCurve(profile_points), + -fin_width/2 + ); +//vertical_path = asCurve(vertical_shape); +//top_path = asCurve(top_shape); -echo ("vertical_path",vertical_path); -left(50) polygon(vertical_path); -left(180) polygon(profile_path); +//left(50) polygon(vertical_path); +//polygon(profile_path); //left(280) polygon(top_path); -left(100) back(70) -resize([fin_width,fin_thickness])circle(d=fin_width); +//left(100) back(70) +// resize([fin_width,fin_thickness])circle(d=fin_width); //showDebugPath(top_path); -function asCurve(points) = bezier_curve(points,N=3,splinesteps=128); +function asCurve(points) = bezier_curve(points/*,N=3*/,splinesteps=128); /* -bezier = bezier_points(control_points, N=50); +bezier = bezier_points(profile_points, N=50); // Convert the Bézier curve points to a 3D path starting at z=0 path3d_bezier = path3d(bezier); -*/ + intersection(){ if (true) down(fin_thickness) linear_extrude(height=fin_thickness*2) { polygon(profile_path); @@ -260,65 +240,50 @@ color("Red") left(300) intersection(){ ; path = [for(theta=[-180:5:180]) [theta/10, 10*sin(theta)]]; - +*/ // https://github.com/BelfrySCAD/BOSL2/wiki/skin.scad#functionmodule-path_sweep +/* color("Yellow") path_sweep( vertical_path, get_n_items(profile_path,80), spin=0 ); - +*/ - semi_minor_axis = 2; +/* echo ("PATH LENGTH",len(profile_path)); echo ("PATH LENGTH2",len(subdivide_path(profile_path,400))); echo ("PATH LENGTH3",len(resample_path(profile_path,500))); - print_path_points(profile_path); +print_path_points(profile_path); print_path_points(translate_path(profile_path,-fin_width/2,0)); +*/ - if (true) color("Brown") left(200) back(155) down(fin_thickness) - ellipse_extrude( - //semi_minor_axis, - fin_thickness/2, - //height = 16, - center=true, - //convexity=40 - //angle=90 - ) - //linear_extrude(height=fin_thickness*2) - //linear_extrude(height=60) - polygon( - translate_path( - resample_path(profile_path,200), - -fin_width/2, - 0 - ) - ); +//if (true) - +/* circle_r = 10; round_r = 5; right(200) rounded_extrude(circle_r * 2, round_r) circle(circle_r); - + right(300) rounded_extrude(circle_r * 2, round_r) polygon(resample_path(profile_path,200)); +*/ - -color("red")move_copies(profile_path) circle($fn=16); +//color("red")move_copies(profile_path) circle($fn=16); - +/* function get_n_items(arr, n) = [for (i = [0 : n - 1]) if (i < len(arr)) arr[i]]; - +*/ function handle(point,angle,strength) = [ //point[0] + adj_ang_to_opp(strength,angle) /** xAngleFactor(angle)*/, @@ -339,11 +304,9 @@ function endHandle(angle)= : [fin_base - adj_ang_to_opp(fin_end_strength,angle-90),fin_end_strength] ; + function backPoint() = [fin_base-(fin_back_widthdraw/100*fin_base),fin_back_height/100*fin_height]; - - - function decrease_y(points, percentage) = [ for (p = points) [p[0], p[1] * (1 - percentage/100)]]; function pathProfile(points) = bezpath_curve(points,N=3); @@ -352,8 +315,8 @@ function remove_last(arr) = select(arr, 0, len(arr) - 2); // Surf Fin profile -fin_profile = pathProfile( control_points ); -vertical_profile = pathProfile(vertical_shape); +fin_profile = pathProfile( profile_points ); +//vertical_profile = pathProfile(vertical_shape); // **************** // * Slicing * @@ -387,15 +350,10 @@ function contract(path,delta) = ) ); - - - - // **************** // * Fin Drawing * // **************** -if (draw_fin) { - +if (build_fin) { scale([scale_factor, scale_factor, scale_factor]) build(); } @@ -404,10 +362,12 @@ module build() { difference(){ union() { if (parts != "bottom") - buildFinSide([layer_0,layer_1,layer_2],fin_thickness/2); - if (parts != "top") - zflip() - buildFinSide([layer_0,layer_1,layer_2],fin_thickness/2); + //buildFinSide([layer_0,layer_1,layer_2],fin_thickness/2); + buildFinSide(); + if (parts != "top") + buildFinSide(true); + //zflip() + // buildFinSide([layer_0,layer_1,layer_2],fin_thickness/2); } color("Red") cube([fin_base+20,base_extra_thickness+20,base_tickness+20],anchor=LEFT+BACK); } @@ -426,20 +386,27 @@ module subtracted(anchor) { * @param layers - Layers path as array * @param thickness - thickness of half fin */ -module buildFinSide(layers,thickness,flip=false) { - color("Grey") - skin( - layers, - slices=0, - //method="reindex", - z=layerHeights(len(layers),thickness), - //caps=true, - sampling="segment", - //closed=false - //convexity=40 - //atype="intersect" - cp="box" - ); +//module buildFinSide(layers,thickness,flip=false) { +module buildFinSide(flip=false) { + + + mirror([0,0,flip ? 1 : 0]) + color(flip ? "Gray" : "LightGray") up(fin_thickness/4) /*down(fin_thickness) */ + ellipse_extrude( + fin_thickness/2, + center=true, + ) + polygon(profile_path) + /* + polygon( + translate_path( + resample_path(profile_path,200), + -fin_width/2, + 0 + ) + + )*/ + ; } echo ("layerHeights(3,thickness):",layerHeights(3,base_tickness/2)); @@ -461,7 +428,7 @@ if (show_debug_layers) { } if (draw_profile) { // Draw fin profile - drawProfile( control_points, true ); + drawProfile( profile_points, true ); } @@ -533,7 +500,7 @@ function layerHeights(n, fin_thickness) = /** * Function to translate a path manually along X and Y */ -function translate_path(path, dx, dy) = +function translate_path(path, dx=0, dy=0) = [for (p = path) [p[0] + dx, p[1] + dy]];