Fix top mold skirt problem on us box

This commit is contained in:
Sébastien Dante Ursini 2025-01-24 16:01:14 -03:00
parent 51a60d4018
commit 8e4f99cd44
14 changed files with 927465 additions and 94 deletions

BIN
.Readme.md.swp Normal file

Binary file not shown.

View File

@ -20,7 +20,7 @@ The box is designed using library [Fin Base](https://github.com/hrobeers/finbase
[Understanding Kitesruf fins](https://24-7boardsports.com/understanding-kitesurf-twintip-board-fins/)
## Measure models
### Measure models
Open web app [at](https://0x00019913.github.io/meshy/) and import it to get the volume.
@ -31,6 +31,46 @@ To convert 21037 cubic millimeters (mm³) to deciliters (dl), you can use the co
Therefore, 21037 cubic millimeters is equivalent to 0.21dl.
### Materials
| Volume | Weight | Fiber Load | Résine |
| ------ | ------ | ---------- | ------- |
| 100% | x1.4 | 60% | 40% |
| 21 cm3 | 29.4g | 17.64 g | 11.76 g |
## Surf fin 10 inch
| Volume | Weight | Fiber Load | Résine |
| ------ | ------ | ---------- | ------- |
| 100% | x1.4 | 60% | 40% |
| 207 cm3 | 290g | 174 g | 116 g |
#### Pin
The pin slides into a groove in the US Box fin slot, allowing the fin to move forward or backward to adjust the fin's position for different conditions or board feel.
US Box require a pin of diameter 4.76mm (3/16 inch) per L 14.28 mm (9/16inch)
### Screw
The screw for securing single fins is often 10-32 x ¾” (or 5mm x 19mm).
It's usually a slotted screw designed to go through the fin and into the square plate.
- Stainless Steel Longboard Fin Screw & Plate
- [3/6Pcs Stainless Steel Surfboard Fin Screw M4 Surf](https://www.aliexpress.com/item/1005005128486923.html) R$30.39
- [Copper Pin for 6.5/8/9/9.5/10/12 Inch Surf Fin SUP Fin Water Sports](https://www.aliexpress.com/item/1005003301708931.html) R$ 19.22 + 25.73
### Square Washer (Plate)
Dimensions: Commonly about ½” x ½” (or 14mm x 14mm), with a thickness of about 0.15" (4mm).
This plate spreads the load of the screw over a larger area, ensuring a secure hold.
## Required Material
- Durcisseur : Correspondant à la résine choisie.

View File

@ -179,16 +179,16 @@
"mirror_vec": "[1, 1, 0]",
"mold_base_height": "10",
"mold_extra_width": "15",
"mold_part": "bottom",
"mold_part": "top",
"mold_piston_height": "10",
"mold_top_height": "5",
"partition": "none",
"partition": "high",
"parts": "all",
"pin_back": "9",
"pin_depth": "16.399999999999999",
"pin_dia": "3",
"piston_depth": "5",
"printable": "false",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
@ -200,6 +200,119 @@
"tab_height": "13",
"thick": "9.1999999999999993",
"thick_cut": "1"
},
"New set 5": {
"$fn": "64",
"base_extra_thickness": "20",
"base_tickness": "8",
"box_thickness": "9.5999999999999996",
"build_box": "false",
"build_fin": "true",
"build_mold": "false",
"draw_profile": "false",
"fin_back_angle": "20",
"fin_back_height": "30",
"fin_back_strength": "30",
"fin_back_widthdraw": "20",
"fin_base": "130",
"fin_counter_angle": "30",
"fin_counter_strength": "10",
"fin_edge_angle": "30",
"fin_edge_strength": "30",
"fin_edge_withdraw": "20",
"fin_end_angle": "110",
"fin_end_strength": "30",
"fin_height": "254",
"fin_start_angle": "70",
"fin_sweep": "25",
"fin_thickness": "9",
"fin_top_withdraw": "35",
"fin_width": "270",
"fin_width_tip": "5",
"height": "25",
"merge_holes_diameter": "6",
"mirror_vec": "[1, 1, 0]",
"mold_base_height": "10",
"mold_extra_width": "15",
"mold_part": "all",
"mold_piston_height": "10",
"mold_top_height": "5",
"partition": "none",
"parts": "all",
"pin_back": "9",
"pin_depth": "16.399999999999999",
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
"show_curve_points": "false",
"show_debug_layers": "false",
"skirt_angle": "80",
"start": "[0, 0]",
"tab_height": "13",
"thick": "9.1999999999999993",
"thick_cut": "1",
"version": "0.9b"
},
"New set 6": {
"$fn": "64",
"base_extra_thickness": "20",
"base_tickness": "8",
"box_offset": "80",
"box_thickness": "9.5999999999999996",
"build_box": "false",
"build_fin": "false",
"build_mold": "true",
"draw_profile": "false",
"fin_back_angle": "20",
"fin_back_height": "30",
"fin_back_strength": "30",
"fin_back_widthdraw": "20",
"fin_base": "130",
"fin_counter_angle": "30",
"fin_counter_strength": "10",
"fin_edge_angle": "30",
"fin_edge_strength": "30",
"fin_edge_withdraw": "20",
"fin_end_angle": "110",
"fin_end_strength": "30",
"fin_height": "254",
"fin_start_angle": "70",
"fin_sweep": "25",
"fin_thickness": "9",
"fin_top_withdraw": "35",
"fin_width": "270",
"fin_width_tip": "5",
"height": "25",
"merge_holes_diameter": "6",
"mirror_vec": "[1, 1, 0]",
"mold_base_height": "10",
"mold_extra_width": "15",
"mold_part": "top",
"mold_piston_height": "10",
"mold_top_height": "5",
"partition": "none",
"parts": "all",
"pin_back": "9",
"pin_depth": "16.399999999999999",
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
"show_curve_points": "false",
"show_debug_layers": "false",
"skirt_angle": "80",
"start": "[0, 0]",
"tab_height": "13",
"thick": "9.1999999999999993",
"thick_cut": "1",
"version": "0.9b"
}
}
}

View File

@ -134,6 +134,10 @@ pin_back = 9;
//thick_cut = 0.001*1000;
thick_cut = 1;
// Offset the box to fit the fin
box_offset = 80;
// ---------------------*/
/* [Debugging] */
// ---------------------*/
@ -153,13 +157,16 @@ draw_profile = false;
// Rendering parts
build_fin = false;
build_box = false;
build_mold = true;
build_mold = true;
partition = "none"; // [none, low, high]
parts = "all"; // [all, top, bottom]
mold_part = "all"; // [all, top, bottom]
version ="0.9b";
// Scaling
scale_factor = 1.0; // [0.1:0.1:2]
@ -231,66 +238,25 @@ points = flatten([
profile_curve_with_base = translate_path( addBase(asCurve(points,32)),-fin_base/2,0 );
profile = translate_path( asCurve(points,32),-fin_base/2,0 );
//profile_curve_with_base = translate_path( asCurve(points,32),-fin_base/2,0 );
//profile_curve_with_base = resample_path(translate_path( asCurve(points,32),-fin_base/2,0 ),64);
assert(is_path_simple(profile_curve_with_base));
if (show_curve_points)
color("Blue")move_copies(profile_curve_with_base) circle($fn=16);
// Draw fin profile
if (draw_profile) {
//left(425) drawProfile( points, true );
layer0 = expandPath(profile_curve_with_base,-2);
layer1 = expandPath(profile_curve_with_base,-8);
layer2 = expandPath(profile_curve_with_base,-15);
layer3 = expandPath(profile_curve_with_base,-30);
layer4 = expandPath(profile_curve_with_base,-40);
back(10) showDebugPath(layer0);
left(500) {
color("Red") polygon(profile_curve_with_base);
up(10) polygon(layer0);
up(20) color("Yellow") polygon(layer1);
up(30) color("Brown") polygon(layer2);
}
layers = [profile_curve_with_base,layer0,layer1,layer2,layer3,layer4];
left (800) color ("Green") polygon(profile_curve_with_base);
left (1000) color ("Green") shell(10) polygon(profile_curve_with_base);
}
// *****************
// * Fin Drawing *
// *****************
if ( build_fin )
scale([scale_factor, scale_factor, scale_factor])
buildFin( fin_thickness );
if ( build_box ) {
buildBox();
}
scale([scale_factor, scale_factor, scale_factor]) {
union() {
buildCompletFin();
left(box_offset) usBox(fin_base+30);
}
}
/**
* Render Mold
*/
if ( build_mold ) //buildMold();
{
if ( build_mold )
difference(){
buildMold();
//cube([100,200,30]);
if (partition=="low")
partitionMask(false);
if (partition=="high")
@ -298,16 +264,13 @@ if ( build_mold ) //buildMold();
}
}
/**
* Build complete fin
*/
module buildCompletFin() {
difference(){
buildFin( fin_thickness );
//buildBox();
// Remove extra base
baseMask();
buildFin( fin_thickness ); // Fin
baseMask(); // Remove extra base
}
}
@ -317,7 +280,9 @@ module baseMask() {
module usBoxMask() {
left(80) color("Blue") usBox(fin_base+30,thickness = box_thickness+2*OFFSET,drill=false);
left(box_offset)
color("Blue")
usBox(fin_base+30,thickness = box_thickness+2*OFFSET,drill=false);
}
@ -327,7 +292,7 @@ module usBoxMask() {
*/
module buildMold() {
// Bottom Mold
if (mold_part != "top") right( printable ? 120 : 0 ) {
if (mold_part != "top") right( printable ? 120 : 0 ) union() {
// Fin mold
difference() {
support(part="bottom");
@ -336,7 +301,8 @@ module buildMold() {
}
// Box mold
difference() {
left(80) finBoxMold( fin_base+30,part="bottom",skirt=false );
left(box_offset)
finBoxMold( fin_base+30,part="bottom",skirt=false );
// Remove fin
buildCompletFin();
}
@ -344,7 +310,7 @@ module buildMold() {
moldSkirt( part="bottom" );
}
// Top
if (mold_part != "bottom") /*up(1* 150)*/ left( printable ? 120 : 0 ) yrot(printable ? 180 : 0 ) {
if (mold_part != "bottom") /*up(1* 150)*/ left( printable ? 120 : 0 ) yrot(printable ? 180 : 0 ) union() {
difference(){
support(part="top");
usBoxMask();
@ -353,12 +319,19 @@ module buildMold() {
}
// Box mold
difference() {
left(80) finBoxMold( fin_base+30,part="top",skirt=false );
left(box_offset)
finBoxMold( fin_base+30,part="top",skirt=false );
// Remove fin
buildCompletFin();
}
// Mold skirt
down( fin_thickness * 3 ) moldSkirt( part="top" );
difference()
{
down( fin_thickness * 3 ) moldSkirt( part="top" ); // Inclinded Skirt
back(0.65)
cube([250,40,9.6],anchor=BACK); // Remove skirt on us box side
}
}
}
@ -387,35 +360,18 @@ module moldSkirt( part ){
box_profile = move([-80,0],profileUS (fin_base+30));
finAndBoxProfile = path_merge_collinear(union([box_profile,profile]));
//if (part == "bottom") {
moldHeight = fin_thickness * 3;
moldHeight = fin_thickness * 3;
up (part=="top" ? moldHeight : 0 )
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
//} else if (part == "top") {
//}
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
}
//moldSkirt(part="top");
module moldJunctionMask(moldThickness = 3,height,angle){
deviation = opp_ang_to_adj (height,angle);
right(moldThickness)
left(moldThickness/2)
down(OFFSET)
//fwd(60)
//back(moldThickness*2-0.5)
back(moldThickness*1.2-OFFSET )
down( OFFSET ) back( moldThickness*1.2 - OFFSET )
color("Red")
prismoid(
size1=[fin_width/2-1.5*moldThickness, moldThickness*3+2*OFFSET],
@ -513,10 +469,10 @@ module partitionMask(inverse = false) {
up(10)
partition_mask(
w=fin_height/2*1.5,
h=60, // height
h=80, // height
l=fin_width*3,
cutpath="comb",
spread=3,
cutpath="sinewave",
//spread=0.1,
inverse=inverse,
anchor=FRONT
);
@ -554,8 +510,18 @@ module drawProfile( points,debug = true ){
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);
// Show curve points
if (show_curve_points)
color("Blue")move_copies(profile_curve_with_base) circle($fn=16);

View File

@ -1,7 +1,6 @@
include <BOSL2/std.scad>;
include <BOSL2/beziers.scad>;
include <BOSL2/std.scad>
include <BOSL2/beziers.scad>
include <Round-Anything/polyround.scad>
@ -42,7 +41,12 @@ function profileUS( length,height=23,tabHeight = 8,tabLength = 20, backRounding
[ -tabLength , -tabHeight ,1] // 5
]);
/**
* US Box
*
* @param length : Length of the fin base. backExtra and tabLength will be added to have the full length
*
*/
module usBox( length, height=23, thickness = 9, tabLength = 20,pinDiameter = 5,pinInset = 8, backExtra = 10,cutReduction = 0.5,screw_diameter=4.5,drill = true, color="Grey" ) {
color(color) mirror_copy([0,0,1], offset=-OFFSET) difference() {
linear_extrude ( height = thickness/2 ) boxProfileUS( length, tabLength = tabLength, height=height, backExtra=backExtra );

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.